> ## Documentation Index
> Fetch the complete documentation index at: https://midplane.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get started

> From a new Midplane Cloud project to the first query an agent makes through your gateway.

You need a Postgres database (or Docker, for the sample one), Node 24.16 or
newer, and an MCP client such as Claude Code.

<Steps>
  <Step title="Create a project">
    Midplane Cloud is invite-only for now: [get access](https://midplane.ai/#get-access),
    and we'll email you an invitation. Follow its link to create your account
    at [eu.app.midplane.ai](https://eu.app.midplane.ai), verify your address,
    name your organization and create a project. Its overview opens on **Connect your
    first database**.
  </Step>

  <Step title="Name your database">
    Under **Use my database**, enter a **Database id**, such as `shop`: your
    name for the database in Midplane, not its Postgres name. Create the
    read-only role the step shows ([prepare your database](/docs/prepare-database)).
    No database at hand? Try [the sample](#with-the-sample-database) instead.
  </Step>

  <Step title="Run the gateway">
    **Create enrollment token**, pick **This machine** or **A server
    (Docker)**, and run the commands the step shows. Put each connection string
    in the file it names. Once the gateway connects, the step lists each
    database as the gateway reports it (`shop · reachable · catalog read: 12
            tables`), and it's done when the gateway enforces the project's policy
    ([deploy the gateway](/docs/gateway/deploy)).
  </Step>

  <Step title="Choose what agents may read">
    A new policy denies everything. **Open `shop`'s policy** from the step and
    set the tables agents may read; setting **Default access** to **Read**
    opens every table the policy doesn't list, including tables created later.
    Review the columns that look like personal data, then **Review and
    publish**. **Back to setup** returns to the card.
  </Step>

  <Step title="Connect an agent">
    Run the `claude mcp add` command the step shows, then `/mcp` in Claude Code
    and **Authenticate**. Sign in, and choose which databases it may use.
  </Step>

  <Step title="Try it">
    Ask your agent one of the questions the step suggests about a table it may
    read, such as "How many rows are in `public.customers`?". The card finishes
    with that query, and every statement shows up in the **Query log**.
  </Step>
</Steps>

Stuck? See [troubleshooting](/docs/troubleshooting).

## With the sample database

No database at hand? On the first step, an owner or admin can choose **Try
with sample data**. It creates a second project, **Sample shop**, with the
database `shop` and the sample's policy published: customers' emails hashed
and phones partly hidden, support ticket bodies untrusted, the API keys
secret, and row changes held for approval. The project you started from stays
as it is, for your own database.

In the sample project, **Run the gateway** starts the sample's Postgres with
Docker, then the gateway on this machine on port 7434, so it can run beside
one of your own. Its connection string is filled in (the password is a public
example), and **Choose what agents may read** is already done. When Claude
Code signs in, give it read and write on `shop`, then ask, in order:

1. "List our customers with their emails and plans": emails come back
   hashed, phones partly hidden.
2. "Summarize the open support tickets": the agent reads untrusted text and
   is tainted.
3. "Show me the API keys": refused, since a tainted agent can't read secret
   tables.
4. "Close ticket 2": held. Approve it under **Approvals**.

To try Midplane with no account, the [local
quickstart](https://github.com/midplaneai/midplane/tree/main/examples/quickstart)
runs the same sample with the policy in a file.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.