# Lessly Docs > Documentation for Lessly — install, deploy, and run apps via the Lessly MCP. > The whole REST surface is one OpenAPI 3.1 document at /openapi.json, stamped with the same catalog_version as the reference pages. Manage your organization and its members (/access/organizations-and-members) — Create an organization, invite people into it, give them access to a product, change a role and remove a member. Product access (/access/product-access) — Understand why a person can or cannot reach a product, and what a membership on a product actually is. Roles and permissions (/access/roles-and-permissions) — Look up which role grants what, how a permission key is written, and how the platform decides one call. Account & security (/account/account-and-security) — Sign in to Lessly, turn on a second factor, decide what an application may do on your behalf, and end the sessions your sign-ins created. Send one message to a list of people (/acquire/broadcasts) — Keep contacts in an audience, send a broadcast to all of them, and handle the unsubscribe that follows. Track your first visitor (/acquire/tracking) — Get from an empty product to a tracked event on your own site: one copy, one paste, one page reload. Register the domains you track (/acquire/tracking/domains) — Tell three different domain lists apart, confirm the snippet is live, and serve the script from a host on your own domain. Record your own events (/acquire/tracking/events) — Send an event from the browser, name it so it stays readable, and check in the catalog and the live feed that it arrived. Close the loop on Google Ads (/acquire/tracking/google-ads) — Set the URL suffix, sync spend, and send your real conversions back so campaigns optimise on revenue instead of pixels. Identify a visitor (/acquire/tracking/identity) — Turn an anonymous browser into a named person with an identify call of your own, or with the email on an event from your backend. Install the tracking script (/acquire/tracking/install) — Choose a snippet variant, paste it into your site, and carry one visitor identity across several domains you own. Send events from your backend (/acquire/tracking/public-keys) — Get a public access key, send it as a bearer token to the Events API, and replace it without a gap when it has been exposed. Read the attribution reports (/acquire/tracking/reports) — Find which sources bring you customers and what they are worth — and know exactly what each number counts before you act on it. Send revenue from your backend (/acquire/tracking/revenue) — Post the six lifecycle events with amounts in minor units, and get lifetime value and customer status against a person. Tracking settings reference (/acquire/tracking/settings) — Every setting Lessly Tracking exposes, what it defaults to, what changes when you change it — and the public routes your product answers on. Fix tracking that is not working (/acquire/tracking/troubleshooting) — Symptom by symptom: no events, a domain that never turns green, a rejected request, missing revenue, an anonymous person, far more events than people, absent conversions. Ask questions about your product's data (/analytics) — Ask a question about your product's own data in plain English and get an answer, the rows and the query that produced them. How Brain works (/brain) — Brain is the memory of one product: what its agents write down, what the sources you connect put into it, and the search that answers questions about all of it. Back up and restore memory (/brain/backup-and-restore) — Take a snapshot of everything your product remembers, and put a snapshot back. Restoring replaces memory rather than merging into it. How memory maintains itself (/brain/cognition) — How Brain connects stored memories and derives patterns and intentions from them. Connect a source (/brain/connectors) — Put a GitHub, Google Drive or ClickUp connection in place so Brain is allowed to read a source, and know exactly what it will read from it. Ingest a source on a schedule (/brain/daemons) — Set up a daemon so Brain keeps a repository, a Drive account or a ClickUp workspace in memory, and read what each run took, skipped or refused. Search the knowledge graph (/brain/knowledge-graph) — Memories are text. The knowledge graph is the structure Brain derives from that text: the things your memories talk about, and how those things relate to each other. What Brain meters and which limits apply (/brain/limits-and-usage) — Brain measures five things and reports them for billing: three token meters that must never be added together, embedding tokens, and the memories a product holds. Add, search and correct memories (/brain/memories) — Write text into your product's memory, ask it a question in ordinary language, page through what it holds, and fix or remove a statement that is wrong. What a memory is (/brain/memory-model) — A memory is one short statement Brain holds for your product, stored with the time, kind, authority and scope Brain needs to rank it and decide what it supersedes. Concepts (/concepts) — Find the definition of a Lessly term before you follow a guide that assumes it. The Lessly platform model (/concepts/platform-model) — Learn the model the rest of this documentation assumes: organization, product, member, role, permission, integration, API key and session, driven through four equivalent interfaces. Get started (/get-started) — Install Lessly, ship your first deploy, and learn what to ask next. Your first deploy (/get-started/first-deploy) — Deploy a Next.js app to Lessly and check its live URL. Install (/get-started/install) — Install the Lessly MCP in your AI agent. Next steps (/get-started/next-steps) — Where to go after your first deploy. Set up your team (/get-started/set-up-your-team) — Create products and invite teammates to your Lessly organization. Integrations (/integrations/integrations) — Understand how your organization holds a connection to an external service and how attaching a product is what grants access to it. Request access to an integration (/integrations/requesting-access) — Ask an organization owner or admin to attach an existing connection to your product. Four ways in (/interfaces) — Pick the surface you reach Lessly through — by hand, from a terminal, from an agent, or from your own code. Call the REST API with an API key (/interfaces/api-and-keys) — Create an API key for a product, make a request to api.lessly.com with it, and revoke it when you are done. Choose a surface (/interfaces/choosing-a-surface) — Decide between the Product App, the CLI, the MCP endpoint and the REST API by who is calling and how they authenticate. Run Lessly from a terminal (/interfaces/cli) — Install the CLI, sign in as a person or with a token, run a command, and branch a script on its exit code. Connect an agent to Lessly (/interfaces/mcp) — Connect an agent to mcp.lessly.com, authenticate it, select a product, and make a first call. Find your way around the Product App (/interfaces/web-app) — Find the page you need at app.lessly.com — which routes are product-level, which are organization-level, and what the slug in the URL means. Add a cookie consent banner (/privacy/cookie-consent) — Show a consent banner and hold analytics until visitors accept. Data and privacy (/privacy/data-and-privacy) — What data the platform holds, how products are kept apart, and how you export, retain and delete it. What tracking does with a consent answer (/privacy/tracking-consent) — How the tracking script reads your banner's decision, what it collects in each state, and what a declining visitor costs your reports. Serve a product on your own domain (/products/custom-domains) — Register a domain on a product, publish its DNS records yourself, or let a connected Cloudflare account hold them. Create and manage products (/products/products) — Create a product, rename it, switch between products and delete one — and what the product boundary guarantees while you do. Give out a product public key (/products/public-access) — Create, scope and revoke the keys that let a caller reach the routes your toolkits publish without a platform login. Reference (/reference) — Look up MCP tools, MCP-client config, env vars, limits, errors. MCP clients (/reference/mcp-clients) — Per-client config paths, removal, scopes, and the generic pattern for any spec-compliant MCP client. MCP tools (/reference/mcp-tools) — Catalog of MCP tools exposed by Lessly. REST API reference (/reference/openapi) — OpenAPI reference for each Lessly feature area. Analytics API (/reference/openapi/analytics) — REST endpoints for the Analytics area of Lessly. Brain API (/reference/openapi/brain) — REST endpoints for the Brain area of Lessly. Consent API (/reference/openapi/consent) — REST endpoints for the Consent area of Lessly. Content API (/reference/openapi/content) — REST endpoints for the Content area of Lessly. Deployment API (/reference/openapi/deployment) — REST endpoints for the Deployment area of Lessly. Mail API (/reference/openapi/mail) — REST endpoints for the Mail area of Lessly. Observe API (/reference/openapi/observe) — REST endpoints for the Observe area of Lessly. Organization API (/reference/openapi/organization) — REST endpoints for the Organization area of Lessly. Realtime API (/reference/openapi/realtime) — REST endpoints for the Realtime area of Lessly. Support API (/reference/openapi/support) — REST endpoints for the Support area of Lessly. Tracking API (/reference/openapi/tracking) — REST endpoints for the Tracking area of Lessly. Users API (/reference/openapi/users) — REST endpoints for the Users area of Lessly. Waitlist API (/reference/openapi/waitlist) — REST endpoints for the Waitlist area of Lessly. How deployment works (/ship/deployment) — The model behind every deploy: what a product, an environment and a service are, and what happens between a push and a live address. Choose where state lives (/ship/deployment/data) — Pick between a managed database and a volume for a service's state, provision it, and know what happens to the data on a deploy. Deploy, redeploy and roll back (/ship/deployment/deploy) — Ship a new release, restart a bad process, cancel a deploy in flight, or go back to a release that worked. Connect a domain (/ship/deployment/domains) — Serve a service on a domain you own, and split one domain across several services by path. Work with environments (/ship/deployment/environments) — Add a staging environment, fork one from production, or let each pull request open its own preview. Run a job on a schedule (/ship/deployment/jobs) — Set up a service that runs a command and exits — its schedule, its time budget, what happens when a run overlaps, and where its history lives. Watch a service (/ship/deployment/observability) — Find out whether a service is healthy — and be told when it stops being — from logs, events, metrics and alert rules. Scale a service (/ship/deployment/scaling) — Decide between more replicas, larger replicas and sleeping when idle, and apply the change. Set up a service (/ship/deployment/services) — Choose between a runtime service and a static site, give it a source, and set what that type actually has. Run a command inside a service (/ship/deployment/terminal) — Open a shell in a running replica, run a migration in a throwaway container, or connect over SSH with your own key. Set variables and secrets (/ship/deployment/variables) — Get configuration and credentials into a running service, and know when a change takes effect. How system email works (/ship/mail) — What Lessly Mail sends on your product's behalf — confirmations, invitations, access recovery, receipts — and the seven steps from an empty setup to a delivered message. Authenticate the public API (/ship/mail/api-keys) — Mail's public sending endpoint is authenticated with a product public key: where it is created, what its scope covers, how to replace one, and why a key removed on Mail's side is not revoked. Handle bounces and protect your sending (/ship/mail/deliverability) — Read and edit the suppression list, understand what a bounce or a complaint does to it, and keep your sender reputation below the thresholds that throttle sending. Set up a sending domain (/ship/mail/domains) — Register a domain your product owns, publish the DNS records Lessly Mail returns, and get it to verified so your confirmations and receipts can leave from it. Send from TypeScript (/ship/mail/sdk) — Install @lessly/mail, create a client for your product, and send, read and template email with typed errors and retries. Send a message (/ship/mail/sending) — Create one email or a batch, schedule or cancel it, read its status back, and know the limits a send is measured against. Send from a template (/ship/mail/templates) — Keep a receipt or an invitation as a published template with named variables, and send it with an id and a handful of values. Receive delivery events (/ship/mail/webhooks) — Register a signed HTTPS endpoint, verify each delivery's signature, and handle at-least-once delivery and retries. Realtime (/ship/realtime) — Move messages from your backend to open browser tabs, and know who is connected and what they missed. Authenticate your backend and your users (/ship/realtime/authentication) — Hold one product public key on your server, mint a short-lived token from it for each end user, and keep the key and the environment it belongs to in step. Connect a browser tab (/ship/realtime/browser-client) — Install @lessly/realtime-client, subscribe to channels, and let it reconnect and recover on its own. Replay what a client missed (/ship/realtime/history) — Retain messages on a channel so a reconnecting tab catches up from where it left off. Realtime limits and errors (/ship/realtime/limits-and-errors) — Every limit you can hit and every error you can be handed, in one place. Show who is on a channel (/ship/realtime/presence) — Turn presence on for a namespace, join the roster from the browser, and read it from your backend. The public HTTP routes (/ship/realtime/public-api) — The five Realtime routes a backend can call without the SDK: the base path, the key they need, CORS, the body and rate limits, and each route's request and response. Send your first realtime message (/ship/realtime/quickstart) — Register a namespace, mint a token, subscribe a browser tab, and publish to it from your backend. Call Realtime from your backend (/ship/realtime/server-sdk) — Install @lessly/realtime, publish messages, read history and mint tokens for your end users. Receive channel events on your backend (/ship/realtime/webhooks) — Register a webhook, verify its signature, and rotate the secret without dropping deliveries. Lessly Support (/ship/support) — A support inbox for your product: threads your end users open, answered by your own people. Agents (/ship/support/agents) — The profile next to a reply: humans, bots, the optional Lessly binding, and assignment. Labels and attachments (/ship/support/labels-and-attachments) — Tag a thread, and send a file with a message without the bytes touching the API. Notifications (/ship/support/notifications) — What Support tells your workspace, and why your end users hear nothing from it. Public HTTP API (/ship/support/public-api) — The twelve keyed routes your own backend calls without a platform login. Answer your first thread (/ship/support/quickstart) — Seven steps from an empty product to a ticket a specialist has replied to. Statuses (/ship/support/statuses) — A dictionary your product owns, four categories Support reads, and one automatic move. Surveys and delivery rules (/ship/support/surveys) — Ask for feedback rather than waiting for it, and say where the question is shown. Threads and messages (/ship/support/threads-and-messages) — One conversation, its opaque external author, and the entries that make it up. Tools, SDK and errors (/ship/support/tools-and-errors) — Forty-four operations, three ways to call them, and the refusals they share. Receive Support events (/ship/support/webhooks) — Register a signed endpoint, verify what arrives, and read the delivery log. Lessly Users (/ship/users) — Sign your customers in, and keep a record of every one of them. Run a sign-in flow (/ship/users/auth-flows) — Drive sign-up, sign-in, recovery and a second factor from your own code. Users client libraries (/ship/users/client-libraries) — The backend, browser and React packages, and the errors they return. Configure authentication (/ship/users/configuration) — Switch on sign-in methods, set the password, second-factor and passkey policy, and manage keys and lifetimes. Add two-factor authentication (/ship/users/mfa) — Add the prebuilt screen for two-factor enrollment, backup codes, and factor management. Migrate users in and out (/ship/users/migration) — Import accounts and supported password hashes, plan the cutover, and export users. Add passkeys (/ship/users/passkeys) — Let your end-users sign in with nothing typed, and manage the credentials themselves. Sign in your first end-user (/ship/users/quickstart) — Take an empty product to a signed-in end-user your own backend can read. Sessions and tokens (/ship/users/sessions-and-tokens) — What a completed sign-in mints, and what your backend does with it. Manage your end-users (/ship/users/user-management) — Find a user, read what the directory holds, and act — invite, ban, revoke, reset, erase. Run a waitlist (/ship/users/waitlist) — Collect people before your product is open, then let them in on your schedule. Receive user events (/ship/users/webhooks) — Keep your own tables in step with the directory instead of polling for changes.