# Keys and MCP servers

> Give the AI your API keys for any service and connect MCP servers, so it can work with Stripe, Firebase, OpenAI or your own API while it builds.

Source: https://support.estage.com/connectors-keys
Part of the ESTAGE Support help center (https://support.estage.com). Full knowledge base: https://support.estage.com/llms-full.txt

---

**Keys** let the AI work with any service you use — Stripe, OpenAI, Airtable, Firebase, your own
API — not only the ones in the connector catalog. The AI uses a key by its name and never sees
its value: ESTAGE fills the value in on its servers, sends it only to the hosts you list, and keeps
it out of your site's code.

**MCP servers** give the AI a provider's own tools, such as Supabase's or Stripe's.

Both live in **Settings → Connectors**, above the connector catalog.

## Adding a key

1. Open **Settings → Connectors** and select **Add key** in the **Keys** section.
2. Fill in **Name**, for example `STRIPE_SECRET_KEY`. Use capital letters, digits and underscores.
3. Paste the key into **Value**.
4. In **Hosts**, list where the key may be sent, separated by commas — for example
   `api.stripe.com`, or `*.googleapis.com` for a Google service account. Without a host, the AI
   can't use the key.
5. Optionally describe what it's for, then select **Save key**.

You can also paste a key in the chat, and the AI saves it as a key. Adding it in Settings is
safer: a key pasted in the chat stays in the chat history.

To change a key, select **Edit**. Leave **Value** empty to keep the saved one. **Delete** removes
the key, and anything the AI set up with it stops working.

## Asking the AI to use a key

Ask in plain words, for example:

- *"List my Stripe products with STRIPE_SECRET_KEY"*
- *"Read the users collection from Firestore with FIREBASE_SA"* — for a Google service-account
  JSON saved as a key with the host `*.googleapis.com`
- *"Create the products from this list in my store's API"*

The AI calls the service while it builds — to read data, check what's there, or create what you
asked for. It deletes data on the other side only after you say so.

> **Caution: A key never goes into your site's code**
>
> Code on your site is visible to every visitor. When a visitor action needs a secret key, the AI
> uses a [connector](https://support.estage.com/connectors), an AI Assistant action or a [Dedicated Cloud](https://support.estage.com/cloud) function
> instead. Genesis refuses to save a file that contains a key's value.

## Connecting an MCP server

1. Add the server's token under **Keys**, with the server's host — for Supabase, `mcp.supabase.com`.
2. In **MCP servers**, select **Add server**.
3. Fill in **Name** (for example `supabase`) and the server's **URL**.
4. In **Headers**, write the token by name: `Authorization: Bearer {secret.SUPABASE_TOKEN}`.
5. Select **Save server**.

The AI can use the server's tools from your next message. Select **Turn off** to pause a server
without removing it. When a server has a read-only mode, prefer it — for Supabase, add
`?read_only=true` to the URL.

## Things worth knowing

- **Keys are per project.** Another project doesn't see them.
- **A key goes only to its hosts.** Only you can add a host to a key, in Settings. The AI can add a
  new key you give it, or remove hosts.
- **The AI never shows a value.** If a service sends a key back in its answer, the AI sees the
  key's name in its place.
