# Find your way around the Product App

The Product App at `https://app.lessly.com` is the interface you use by hand. It is a single-page application, and it has no command surface: what it offers is a set of addresses. This page is the map. To script the same work, use the [CLI](/interfaces/cli), the [MCP server](/interfaces/mcp) or the [REST API](/interfaces/api-and-keys).

## Product pages: `/{product}/…`

Product-level areas are prefixed with the product slug, and act on exactly that product.

| Route | What you do there |
| --- | --- |
| `/{product}/dashboard` | Product home. `/{product}/` redirects here. |
| `/{product}/members` | See who can work in the product, and grant or revoke a member's access to it. |
| `/{product}/integrations` | Connect external services to the product, and see what is granted to it. |
| `/{product}/developer` | Create and revoke API keys for the product. |

`/{product}/connectors` is an older path for the integrations page; it redirects to `/{product}/integrations` and preserves query parameters, so old links keep working. `/{product}/settings` redirects to the dashboard — the slug stays reserved for a future page.

Switching products keeps you on the same page: moving from product A to product B on the members page navigates from `/a/members` to `/b/members`. Switching organizations also re-resolves the active product, so the active organization and the active product never point at different places.

## Organization and account pages

An organization has no slug at all, so it never appears in a URL. These routes act on the session's *active* organization.

| Route | What you do there |
| --- | --- |
| `/organization` | Rename the organization, manage members, organization security. |
| `/organization/products` | List the organization's products and create one. |
| `/account/security` | Two-factor authentication and trusted devices for the signed-in user. `/account` redirects here. |

Public routes are `/login`, `/register`, `/product/new` (create a product) and `/invite/{token}` (accept an invitation to an organization).

## What `/` does

| State | Result |
| --- | --- |
| Not signed in | The landing page. |
| Signed in, one product | Redirect to `/{product}/`. |
| Signed in, several products | A product picker. |

## Reading the slug in the URL

The `{product}` segment is the product slug.

- Lowercase letters, digits and hyphens; 3–40 characters; must start with a letter.
- Globally unique, and set when the product is created.
- Renaming a product recomputes its slug from the new name. Old URLs are **not** redirected — after a rename, links to the previous slug break. If the new slug is already taken or reserved, the rename fails rather than picking a variant.
- Some words can never be a slug because top-level routes use them, among them `login`, `register`, `api`, `mcp`, `admin`, `settings`, `docs`, `invite`, `account`, `organization`, `product` and `workspace`.

## Staying signed in

Signing in establishes a browser session held in cookies that the app itself never reads from JavaScript. The session is refreshed transparently while it is in use. When it can no longer be refreshed, the app redirects to `/login` with a `returnTo` parameter and returns you to the page you were on after you sign in again.

## Next steps

- [Create a product](/products/products): what the name and the slug must satisfy.
- [Create an API key on the Developer page](/interfaces/api-and-keys): the value is shown once.
- [Do the same work from an agent](/interfaces/mcp): the operations the app exposes, as MCP tools.
