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

# URLs and paths

> What your public URL looks like, and which paths travel through the tunnel.

## Your URL

Every account gets a **reserved slug** — two words, minted at first sign-in, and
yours permanently:

```
https://amber-jetty.t.heymcp.dev/mcp
```

It does not change between runs. That is the point: a connector you add to
Claude.ai today still works tomorrow morning, and next week. You are not
re-pasting a fresh random URL into six clients every time you restart.

You can see yours on your profile page, or with `heymcp whoami`.

### The three shapes

|                            | URL                                    | Plan |
| -------------------------- | -------------------------------------- | ---- |
| Reserved slug              | `https://amber-jetty.t.heymcp.dev/mcp` | Any  |
| Chosen slug (`--slug`)     | `https://pizza-sesh.t.heymcp.dev/mcp`  | Pro  |
| Custom domain (`--domain`) | `https://mcp.example.com/mcp`          | Pro  |

```bash theme={null}
heymcp share 8000 --slug pizza-sesh
heymcp share 8000 --domain mcp.example.com
```

See [Custom domains](/account/custom-domains) for the DNS side.

### Slug rules

A slug is a DNS label, so:

* 3 to 63 characters
* lowercase letters, digits and hyphens only
* no leading or trailing hyphen
* no double hyphen anywhere (`--` is reserved by IDNA for punycode)
* not one of the reserved names — `admin`, `api`, `app`, `docs`, `edge`,
  `inspector`, `oauth`, `relay`, `www` and about thirty others that either
  already mean something on the domain or would let one account impersonate
  HeyMCP itself

If you ask for a slug that's taken or invalid, the CLI tells you which, and
your reserved slug still works.

## What is shared

By default a tunnel forwards **only** the MCP route and well-known metadata:

| Path                    | Forwarded by default                     |
| ----------------------- | ---------------------------------------- |
| `/mcp`                  | Yes                                      |
| `/mcp/anything`         | Yes                                      |
| `/.well-known/anything` | Yes                                      |
| everything else         | **No** — 404 with JSON-RPC code `-32003` |

Anything containing `..` is always refused, whatever your settings.

This is deliberate. It keeps a HeyMCP tunnel from becoming free web hosting,
and there is no cost to you: agents can't click through an interstitial or
browse your dev site anyway.

### Why `/.well-known/*` is open

So that **your own** OAuth works. If your MCP server publishes
`/.well-known/oauth-protected-resource` or
`/.well-known/oauth-authorization-server`, clients discover it through the
tunnel exactly as they would against a directly-hosted server.

HeyMCP itself is not an authorization server — see
[Authentication](/security/authentication).

### Sharing everything

```bash theme={null}
heymcp share 8000 --all-paths
```

Now every path is forwarded. Useful when your MCP server shares a host with a
health check, a docs page, or an auth flow you need reachable.

<Warning>
  `--all-paths` makes your entire local server publicly reachable to anyone who
  knows the URL. Pair it with [`--bearer`](/security/authentication) unless you
  genuinely mean "public".
</Warning>

## A non-default MCP route

If your server serves MCP somewhere other than `/mcp`:

```bash theme={null}
heymcp share 8000 --path /api/mcp --all-paths
```

<Warning>
  **`--path` currently needs `--all-paths` alongside it.** The default path policy
  only forwards `/mcp*` and `/.well-known/*`, and `--path` does not widen it — so
  `--path /api/mcp` on its own advertises a URL that answers `-32003`. Passing
  `--all-paths` is the workaround today.
</Warning>

## The inspector link

Alongside the public URL, the CLI prints a short link:

```
→  inspector: https://app.heymcp.dev/s/x7k2
```

That's the live timeline for this session. It's private to your account — a
session belongs to exactly one user and nobody else can subscribe to it.
