# Loop & Roll > Loop & Roll: The workflow builder for email. Connect your mailboxes, describe what should happen to each email, and let the workflows run — with AI where it helps and a human where it matters. ## Getting started - [Cloud](https://docs.loopandroll.io/getting-started/cloud): The Loop & Roll cloud offer — the same product as the self-hosted version, run as one isolated instance per customer, hosted in France. - [Your first workflow](https://docs.loopandroll.io/getting-started/first-workflow): Step-by-step tutorial — connect a mailbox, create a workflow, filter incoming mail with a condition, categorise it with AI, file it in a folder, test on a real email, publish and follow the runs. - [What is Loop & Roll](https://docs.loopandroll.io/getting-started/): Loop & Roll automates how your team handles email: connected mailboxes, visual workflows triggered by incoming mail, AI nodes, actions on the mailbox, integrations and a webmail — self-hosted or in the cloud. - [Self-hosting](https://docs.loopandroll.io/getting-started/self-hosting): Install Loop & Roll on your own server with the reference Docker Compose file — prerequisites, required variables, first administrator, health checks, HTTPS reverse proxy, S3 storage and first sign-in. ## Concepts - [Address book](https://docs.loopandroll.io/concepts/address-book): What the address book knows about your recipients: the shared organisation layer and your own relationship layer, how a recipient profile is resolved, signatures and defaults, CSV import, enrichment from a mailbox, and how workflows and AI use profiles. - [The analyzer](https://docs.loopandroll.io/concepts/analyzer): How the analyzer studies a mailbox: the window it reads, how it groups emails into flows, what your workflows already cover, the workflow proposals and recipes it offers, installing a proposal as a draft, the AI model it uses and what is sent to it. - [Workflow assistant](https://docs.loopandroll.io/concepts/assistant): The Loop & Roll workflow assistant: a chat that reads your mail, connections and workflows through the tools layer, runs test runs, and proposes a new workflow or changes that you accept — it never writes, publishes or sends on its own. - [Runs](https://docs.loopandroll.io/concepts/executions): What happens when a workflow runs — how a run is created, its steps and statuses, branches, waiting and resuming, durability, automatic retries, idempotent effects, step data, and where to look at past runs. - [Data and expressions](https://docs.loopandroll.io/concepts/expressions): How to insert the triggering email and the output of earlier steps into a node's settings with {{ }} expressions — exact syntax, available fields, filters, rendering rules and limits. - [Governance](https://docs.loopandroll.io/concepts/governance): What Loop & Roll administrators control: roles and members, the node policy, the send kill switch and sending limits, the organisation scope, AI providers and their costs, OAuth applications, API keys, templates and the audit log. - [Mailboxes and the mirror](https://docs.loopandroll.io/concepts/mailboxes): How Loop & Roll connects Gmail, Microsoft 365 and IMAP/SMTP mailboxes, what the mirror stores and where, how synchronisation works (push, polling, history, catch-up), mailbox statuses, disconnecting and deleting a mailbox, retention, and how workflows act on the real mailbox. - [Review and approvals](https://docs.loopandroll.io/concepts/review-and-approvals): How to keep a person in control of what workflows do: drafts and the Morning review, the Approval node and its requests, the Activity page and its sending journal, and the safeguards that hold real sends. - [Scope](https://docs.loopandroll.io/concepts/scope): The Loop & Roll scope decides which received emails may enter workflows: organisation rules and member rules by sender address or domain, exclude and include modes, matching, guardrails, what an out-of-scope email still does, and the trigger policy. - [Tables](https://docs.loopandroll.io/concepts/tables): Built-in data tables that your team edits like a spreadsheet and that workflows read and write: typed columns, a matching key, imports and exports, limits, the Table nodes and who can do what. - [Test runs](https://docs.loopandroll.io/concepts/test-mode): How to try a Loop & Roll workflow draft without consequences: starting a test run from the editor, the test email, test bodies, pinned outputs, what really runs and what is only described node by node, limits of test runs, and how long they are kept. - [Triggers and conditions](https://docs.loopandroll.io/concepts/triggers): Every trigger that can start a Loop & Roll workflow — incoming email, webhook, schedule, call from another workflow, manual run, integration events — what each brings to the run, and the exact fields and operators of email trigger conditions. - [Draft, published version and history](https://docs.loopandroll.io/concepts/versions): How a Loop & Roll workflow keeps a draft and a published version: automatic saving, publication and its checks, the Versions panel, restoring an earlier version, what changed since publishing, and which version a run uses when you republish. - [Workflows](https://docs.loopandroll.io/concepts/workflows): What a Loop & Roll workflow is — a graph of triggers, steps and model providers linked through named ports — how data and branches flow through it, how publication validates it, and how loops, sub-workflows, waits and approvals fit in. ## Nodes - [Categorize](https://docs.loopandroll.io/nodes/ai-categorize): Classifies the email into the categories you define and routes it down the matching branch. Each category is one output of the node. - [Compose (AI)](https://docs.loopandroll.io/nodes/ai-compose): Has the model write a message from your instructions and the recipient profile (formality, tone, language, signature). Does not send it: add “Send” after it to save a draft or send it. - [Extract](https://docs.loopandroll.io/nodes/ai-extract): Extracts the fields you declare from the email (number, date, amount…) into the working data. A missing field is null. - [Free instruction (AI)](https://docs.loopandroll.io/nodes/ai-prompt): Gives the model a free-form instruction about the email and the working data. The node produces text or JSON: it sends nothing and changes nothing — add an action node downstream to act. - [Summarize](https://docs.loopandroll.io/nodes/ai-summarize): Summarizes the email in a few lines, in the style and length you choose. The summary lands in the working data. - [Airtable](https://docs.loopandroll.io/nodes/airtable-api): Finds, creates, completes and comments rows in an Airtable base, and drops the attachments (from the email or added by a step) into it. - [Read attachments](https://docs.loopandroll.io/nodes/attachment-extract_text): Extracts the text of the email attachments (PDF, text, HTML…) into the working data: `{{ data.extract_text_1.attachments.0.text }}`. Place it before an AI node to hand it a document’s content. - [Calendly](https://docs.loopandroll.io/nodes/calendly-api): Reads your event types and scheduled events, and can cancel one. - [Transform](https://docs.loopandroll.io/nodes/data-transform): Defines fields in the working data from text that accepts `{{ }}` expressions, with a few formatting options. - [Compute a date](https://docs.loopandroll.io/nodes/date-compute): Adds a delay — calendar or business — to a date, to write it elsewhere: a table, a draft, a CRM. - [Excel](https://docs.loopandroll.io/nodes/excel-api): Reads and fills in an Excel workbook stored on SharePoint or on your OneDrive. - [Approval](https://docs.loopandroll.io/nodes/flow-approval): Suspends the execution until a human approves or rejects. Request sent by email, with a timeout. - [Condition (If)](https://docs.loopandroll.io/nodes/flow-if): Routes the email to the "true" or "false" output based on conditions over the email and the working data. - [Loop](https://docs.loopandroll.io/nodes/flow-loop): Repeats a set of nodes for each element of a list: each attachment, each row, each recipient. - [Emit a signal](https://docs.loopandroll.io/nodes/flow-signal): Ends, elsewhere, the waits watching this key — so a client who already answered is never chased. - [Stop](https://docs.loopandroll.io/nodes/flow-stop): Ends this execution branch with a readable status and reason. - [Switch](https://docs.loopandroll.io/nodes/flow-switch): Sends the email down the first branch whose conditions match, otherwise down the "otherwise" branch. - [Wait](https://docs.loopandroll.io/nodes/flow-wait): Suspends the execution — from a minute to several years. Nothing is kept in memory: the wait survives restarts. - [Calendar — create an event](https://docs.loopandroll.io/nodes/google_calendar-create_event): Creates an event in Google Calendar. A retry of the step creates no duplicate: the id derives from the step. - [Calendar — find free slots](https://docs.loopandroll.io/nodes/google_calendar-find_free): Reads the calendar availability over a window and returns free slots, ready to be offered by an AI node. - [Drive — create a folder](https://docs.loopandroll.io/nodes/google_drive-create_folder): Creates a Google Drive folder unless one with the same name already exists under the same parent, and returns its id for the rest of the workflow. - [Drive — search files](https://docs.loopandroll.io/nodes/google_drive-search): Searches files in Google Drive and puts the list into the working data. It is a read: it runs for real, even during a test run. - [Drive — upload a file](https://docs.loopandroll.io/nodes/google_drive-upload): Uploads the attachments (from the email or added by a step), or a text file you write, into a Google Drive folder. - [Sheets — append a row](https://docs.loopandroll.io/nodes/google_sheets-append): Appends a row to a Google Sheets spreadsheet. A deduplication column avoids a duplicate row on a retry. - [HTTP request](https://docs.loopandroll.io/nodes/http-request): Calls an external API and puts the response into the working data. A write may be retried after an outage: prefer idempotent endpoints. - [Nodes](https://docs.loopandroll.io/nodes/): Every node of the catalogue: triggers, AI, logic, data and actions. - [Anthropic (Claude)](https://docs.loopandroll.io/nodes/llm-anthropic): Link this node to the “Model” port of an AI node so it works with Claude. The API key comes from the chosen connection (Connections › AI). - [Mistral AI](https://docs.loopandroll.io/nodes/llm-mistral): Link this node to the “Model” port of an AI node so it works with a Mistral model, hosted in Europe. The API key comes from the chosen connection (Connections › AI). - [Ollama (local)](https://docs.loopandroll.io/nodes/llm-ollama): Link this node to the “Model” port of an AI node so it works with a model running on your server: nothing leaves your machines, and there is no key to provide. - [OpenAI-compatible API](https://docs.loopandroll.io/nodes/llm-openai_compatible): Link this node to the “Model” port of an AI node to call a server speaking the OpenAI protocol without being one of the named providers: vLLM, LM Studio, an internal proxy. The server address is set in the connections. - [OpenAI (GPT)](https://docs.loopandroll.io/nodes/llm-openai): Link this node to the “Model” port of an AI node so it works with GPT. The API key comes from the chosen connection (Connections › AI). - [OpenRouter](https://docs.loopandroll.io/nodes/llm-openrouter): Link this node to the “Model” port of an AI node to call any model in the OpenRouter catalogue with a single key. The model is written “vendor/model”. - [OVHcloud AI Endpoints](https://docs.loopandroll.io/nodes/llm-ovhcloud): Link this node to the “Model” port of an AI node so it works with an open model (gpt-oss, Llama, Mistral, Qwen) hosted in France by OVHcloud. The API key comes from the chosen connection (Connections › AI). - [Compose](https://docs.loopandroll.io/nodes/mail-compose): Prepares a message — recipients, subject, body, attachments — without sending anything. Add “Send” after it to save a draft or send it; in between you can add an approval, a condition or a table write. - [Flag](https://docs.loopandroll.io/nodes/mail-flag): Changes the state of the triggering email: read/unread, flagged/unflagged. Only the states you set are changed. - [Move](https://docs.loopandroll.io/nodes/mail-move): Adds or removes folders/labels on the triggering email, through the mirror (immediately visible in the mailbox). - [Send](https://docs.loopandroll.io/nodes/mail-send): Saves a message as a draft or sends it, from the mailbox of your choice and with the signature of your choice. Goes after “Compose” — or is filled in by hand. - [MyNotary](https://docs.loopandroll.io/nodes/mynotary-api): Reads and feeds MyNotary cases, records, contracts and documents. No signature can be started through the API: it stays a human action. - [Notify](https://docs.loopandroll.io/nodes/notify-send): Sends a message to a Slack, Teams or generic webhook. The shortcut for "tell the team". - [Notion](https://docs.loopandroll.io/nodes/notion-api): Reads and feeds your Notion pages and databases: entries, properties, Markdown content, comments and attachments. - [Create a OneDrive folder](https://docs.loopandroll.io/nodes/onedrive-create_folder): Creates a folder unless it already exists — a retry creates no duplicate. - [Search OneDrive](https://docs.loopandroll.io/nodes/onedrive-search): Searches files in your OneDrive and puts the list into the working data. - [Upload to OneDrive](https://docs.loopandroll.io/nodes/onedrive-upload): Uploads the attachments (from the email or added by a step) — or some text — into a folder of your OneDrive. - [Create an Outlook event](https://docs.loopandroll.io/nodes/outlook_calendar-create_event): Puts an appointment into your Outlook calendar. Invitations are sent only if you ask. - [Find an Outlook slot](https://docs.loopandroll.io/nodes/outlook_calendar-find_free): Reads your calendar availability and lists the free slots within your working hours. - [SharePoint](https://docs.loopandroll.io/nodes/sharepoint-api): Files, tags and shares documents in a SharePoint site, and keeps its lists up to date. - [Table — append a comment](https://docs.loopandroll.io/nodes/table-append_text): Appends timestamped text at the bottom of a cell, never overwriting what it holds. One action = one comment. - [Table — delete a row](https://docs.loopandroll.io/nodes/table-delete): Removes the row carrying this key. Nothing to remove is a success, not an error. - [Table — find a row](https://docs.loopandroll.io/nodes/table-find): Finds a row by its key. Two outputs: found, and not found. - [Table — insert a row](https://docs.loopandroll.io/nodes/table-insert): Inserts a row. If the table has a unique key that is already taken, the step fails — use “insert or update” instead. - [Table — list rows](https://docs.loopandroll.io/nodes/table-list): Returns an array of filtered, sorted rows — ready to feed a loop. - [Table — update a row](https://docs.loopandroll.io/nodes/table-update): Changes the row carrying this key. The step fails if no row matches. - [Table — insert or update](https://docs.loopandroll.io/nodes/table-upsert): Writes the row: created when its key is free, updated otherwise. This is the node for memory between runs. - [Airtable row changed](https://docs.loopandroll.io/nodes/trigger-airtable): Starts the workflow when a row in an Airtable table is created or changed. What changed lands in `data.airtable`, with no triggering email. - [Called by a workflow](https://docs.loopandroll.io/nodes/trigger-called): This workflow subscribes to no email: it runs when another one calls it. The input lands in `data.input`. - [Email received](https://docs.loopandroll.io/nodes/trigger-email): Starts the workflow when an incoming email matches the conditions. - [Workflow failure](https://docs.loopandroll.io/nodes/trigger-error): Starts when an execution of a workflow that names this one as its error workflow fails. The report lands in `data.failure`. - [Manual trigger](https://docs.loopandroll.io/nodes/trigger-manual): Starts only on an explicit request, from the webmail or the editor. - [MyNotary — event](https://docs.loopandroll.io/nodes/trigger-mynotary): Starts the workflow when MyNotary reports an event: a completed signature, a new case, a registered notification. The body lands in `data.mynotary`. - [Notion entry changed](https://docs.loopandroll.io/nodes/trigger-notion_changes): Starts the workflow when an entry of a Notion database is created or changed, checking at a regular interval. The entry lands in `data.notion`, with no triggering email. Nothing to set up in Notion. - [Notion — event](https://docs.loopandroll.io/nodes/trigger-notion): Starts the workflow when Notion reports an event: an entry created, a status changed, a comment. The body lands in `data.notion`. The subscription is created by hand in Notion — otherwise prefer “Schedule” + “Entries changed since…”. - [Schedule](https://docs.loopandroll.io/nodes/trigger-schedule): Starts the workflow on a schedule, with no triggering email. The planned time, the actual time and the time zone land in `data.schedule`. - [Webhook received](https://docs.loopandroll.io/nodes/trigger-webhook): Starts the workflow on a POST to the workflow URL. The JSON body lands in `data.webhook`. - [Yousign — event](https://docs.loopandroll.io/nodes/trigger-yousign): Starts the workflow when Yousign reports an event: a signed request, a decline, an expiry. The signed body lands in `data.yousign`. Deliveries Yousign sends again are deduplicated on `event_id`. - [Call a workflow](https://docs.loopandroll.io/nodes/workflow-call): Runs another published workflow with this execution’s data. In "wait" mode, its output becomes this node’s output. - [Yousign](https://docs.loopandroll.io/nodes/yousign-api): Gets an emailed attachment electronically signed: request, document, signers, activation, then collection of the signed document and its audit trail. ⚠ Activation is billed by Yousign. ## Integrations - [Airtable](https://docs.loopandroll.io/integrations/airtable): Your Airtable bases: find a record, create or update a row without duplicates, attach an email file to it and comment a record. - [Anthropic](https://docs.loopandroll.io/integrations/anthropic): Claude models, called directly at Anthropic. - [Calendly](https://docs.loopandroll.io/integrations/calendly): Your event types, scheduled events and their invitees — to send a booking link or react to a booking. - [Google](https://docs.loopandroll.io/integrations/google): Gmail, Drive, Calendar and Sheets. Each access is granted separately. - [API key (HTTP)](https://docs.loopandroll.io/integrations/http_api_key): A key, a bearer token or a username/password pair, presented by the HTTP request node. - [IMAP / SMTP](https://docs.loopandroll.io/integrations/imap): Any mailbox: server, port and app password. - [Integrations](https://docs.loopandroll.io/integrations/): Every connection you can set up: email accounts, AI providers and third-party services. - [Microsoft](https://docs.loopandroll.io/integrations/microsoft): Outlook, OneDrive and Calendar, through Microsoft Graph. - [Mistral AI](https://docs.loopandroll.io/integrations/mistral): Mistral models, hosted in Europe. The key is created at console.mistral.ai. - [MyNotary](https://docs.loopandroll.io/integrations/mynotary): Your cases, records, contracts and signed documents — to file an emailed document, create a case or react to a signature. - [Notion](https://docs.loopandroll.io/integrations/notion): Your Notion pages and databases — to open a case from an email, file its attachments there and write the follow-up. - [Ollama](https://docs.loopandroll.io/integrations/ollama): Models running on YOUR machine: no key, no data leaving. Just point at the server address. - [OpenAI-compatible API](https://docs.loopandroll.io/integrations/openai_compatible): vLLM, LM Studio, an internal proxy: any server speaking the OpenAI protocol that the list above does not name. - [OpenAI](https://docs.loopandroll.io/integrations/openai): GPT models, called directly at OpenAI. - [OpenRouter](https://docs.loopandroll.io/integrations/openrouter): One key for hundreds of models from every vendor. The key is created at openrouter.ai/keys. - [OVHcloud AI Endpoints](https://docs.loopandroll.io/integrations/ovhcloud): Open models (gpt-oss, Llama, Mistral, Qwen) hosted in France by OVHcloud. The key is created in the OVHcloud Control Panel, under AI Endpoints. - [Yousign](https://docs.loopandroll.io/integrations/yousign): Your electronic signature requests — to get an emailed attachment signed, follow its progress and collect the signed document and its audit trail. ## Errors and replay - [Errors and replay](https://docs.loopandroll.io/errors/): How Loop & Roll handles a step that fails — retries per node, timeouts, the Error output, uncertain effects, the error workflow — and how to replay or cancel runs, alone or in bulk, with the concurrency and duration limits of a workflow. ## REST API - [Authentication](https://docs.loopandroll.io/api/authentication): How a program authenticates to the Loop & Roll REST API with an API key: creating the key in Settings, the Authorization header, what the key may do, expiry, revocation, the rate limit, and the routes that refuse keys. - [Errors](https://docs.loopandroll.io/api/errors): The error format of the Loop & Roll REST API: one JSON shape for every error, codes always written domain.code, what each HTTP status class means, the codes common to every route, and where to find the full list. - [Examples](https://docs.loopandroll.io/api/examples): An end-to-end curl walkthrough of the Loop & Roll REST API: create an API key, create a workflow, save its draft, test it on a real message, publish it, then list and read its executions. - [Idempotency](https://docs.loopandroll.io/api/idempotency): The Idempotency-Key header of the Loop & Roll REST API: which routes accept it, how a replayed request returns the original response, the key_reused and in_progress conflicts, and the 24-hour, 64 KB bounds. - [REST API](https://docs.loopandroll.io/api/): The Loop & Roll HTTP API — base path, the two ways to authenticate (session cookie or API key), the conventions shared by every route, and where to find the generated reference. - [Limits](https://docs.loopandroll.io/api/limits): Every bound a client of the Loop & Roll REST API should know: the rate limit per key, the request body size, the idempotency window, the page sizes, the Tables offset cap, and the bounds of an API key itself. - [OpenAPI document](https://docs.loopandroll.io/api/openapi): The OpenAPI 3.1 description of a Loop & Roll instance: where it is served, what it is generated from, how to import it in a client or a code generator, and the x-required-scope, x-idempotency-key and x-error-codes extensions. - [Pagination](https://docs.loopandroll.io/api/pagination): How list routes of the Loop & Roll REST API are paginated: an opaque cursor and a limit on the request, a nextCursor in the response, and the offset-based exception of Tables rows. - [Mailbox analyzer](https://docs.loopandroll.io/api/reference/analyzer): The Mailbox analyzer routes of the Loop & Roll REST API: 8 operations, with access rules, parameters, request and response schemas and error codes. - [API keys](https://docs.loopandroll.io/api/reference/api-keys): The API keys routes of the Loop & Roll REST API: 5 operations, with access rules, parameters, request and response schemas and error codes. - [Approvals](https://docs.loopandroll.io/api/reference/approvals): The Approvals routes of the Loop & Roll REST API: 3 operations, with access rules, parameters, request and response schemas and error codes. - [Assistant](https://docs.loopandroll.io/api/reference/assistant): The Assistant routes of the Loop & Roll REST API: 10 operations, with access rules, parameters, request and response schemas and error codes. - [Audit log](https://docs.loopandroll.io/api/reference/audit): The Audit log routes of the Loop & Roll REST API: 1 operation, with access rules, parameters, request and response schemas and error codes. - [Authentication](https://docs.loopandroll.io/api/reference/auth): The Authentication routes of the Loop & Roll REST API: 5 operations, with access rules, parameters, request and response schemas and error codes. - [Connections](https://docs.loopandroll.io/api/reference/connections): The Connections routes of the Loop & Roll REST API: 6 operations, with access rules, parameters, request and response schemas and error codes. - [Address book](https://docs.loopandroll.io/api/reference/contacts): The Address book routes of the Loop & Roll REST API: 19 operations, with access rules, parameters, request and response schemas and error codes. - [Dashboard](https://docs.loopandroll.io/api/reference/dashboard): The Dashboard routes of the Loop & Roll REST API: 10 operations, with access rules, parameters, request and response schemas and error codes. - [Prompt evaluation](https://docs.loopandroll.io/api/reference/evaluation): The Prompt evaluation routes of the Loop & Roll REST API: 5 operations, with access rules, parameters, request and response schemas and error codes. - [Executions](https://docs.loopandroll.io/api/reference/executions): The Executions routes of the Loop & Roll REST API: 10 operations, with access rules, parameters, request and response schemas and error codes. - [Folders](https://docs.loopandroll.io/api/reference/folders): The Folders routes of the Loop & Roll REST API: 1 operation, with access rules, parameters, request and response schemas and error codes. - [Governance](https://docs.loopandroll.io/api/reference/governance): The Governance routes of the Loop & Roll REST API: 9 operations, with access rules, parameters, request and response schemas and error codes. - [Health](https://docs.loopandroll.io/api/reference/health): The Health routes of the Loop & Roll REST API: 4 operations, with access rules, parameters, request and response schemas and error codes. - [API reference](https://docs.loopandroll.io/api/reference/): Every route of the Loop & Roll REST API, family by family, generated from the OpenAPI document of the instance. - [AI models](https://docs.loopandroll.io/api/reference/llm): The AI models routes of the Loop & Roll REST API: 17 operations, with access rules, parameters, request and response schemas and error codes. - [Mailboxes](https://docs.loopandroll.io/api/reference/mailboxes): The Mailboxes routes of the Loop & Roll REST API: 9 operations, with access rules, parameters, request and response schemas and error codes. - [MCP server](https://docs.loopandroll.io/api/reference/mcp): The MCP server routes of the Loop & Roll REST API: 1 operation, with access rules, parameters, request and response schemas and error codes. - [Members and invitations](https://docs.loopandroll.io/api/reference/members): The Members and invitations routes of the Loop & Roll REST API: 7 operations, with access rules, parameters, request and response schemas and error codes. - [Messages](https://docs.loopandroll.io/api/reference/messages): The Messages routes of the Loop & Roll REST API: 12 operations, with access rules, parameters, request and response schemas and error codes. - [Node catalog](https://docs.loopandroll.io/api/reference/nodes): The Node catalog routes of the Loop & Roll REST API: 2 operations, with access rules, parameters, request and response schemas and error codes. - [Notifications and incidents](https://docs.loopandroll.io/api/reference/notifications): The Notifications and incidents routes of the Loop & Roll REST API: 8 operations, with access rules, parameters, request and response schemas and error codes. - [OAuth](https://docs.loopandroll.io/api/reference/oauth): The OAuth routes of the Loop & Roll REST API: 3 operations, with access rules, parameters, request and response schemas and error codes. - [My account](https://docs.loopandroll.io/api/reference/profile): The My account routes of the Loop & Roll REST API: 7 operations, with access rules, parameters, request and response schemas and error codes. - [Morning review and sending journal](https://docs.loopandroll.io/api/reference/review): The Morning review and sending journal routes of the Loop & Roll REST API: 8 operations, with access rules, parameters, request and response schemas and error codes. - [Signatures](https://docs.loopandroll.io/api/reference/signatures): The Signatures routes of the Loop & Roll REST API: 8 operations, with access rules, parameters, request and response schemas and error codes. - [Tables](https://docs.loopandroll.io/api/reference/tables): The Tables routes of the Loop & Roll REST API: 18 operations, with access rules, parameters, request and response schemas and error codes. - [Templates](https://docs.loopandroll.io/api/reference/templates): The Templates routes of the Loop & Roll REST API: 15 operations, with access rules, parameters, request and response schemas and error codes. - [Threads](https://docs.loopandroll.io/api/reference/threads): The Threads routes of the Loop & Roll REST API: 3 operations, with access rules, parameters, request and response schemas and error codes. - [Inbound webhooks](https://docs.loopandroll.io/api/reference/webhooks): The Inbound webhooks routes of the Loop & Roll REST API: 1 operation, with access rules, parameters, request and response schemas and error codes. - [Workflows](https://docs.loopandroll.io/api/reference/workflows): The Workflows routes of the Loop & Roll REST API: 25 operations, with access rules, parameters, request and response schemas and error codes. - [Scopes](https://docs.loopandroll.io/api/scopes): The scopes of a Loop & Roll API key: the domain:verb grammar, how write implies read, the table of domains and what each covers, the administrator-only scopes, signals:write, and how a route declares its required scope in OpenAPI. ## MCP - [Connect a client](https://docs.loopandroll.io/mcp/connect): Connecting an MCP client to a Loop & Roll instance: creating the API key and choosing its scopes, then the configuration of Claude Desktop, Claude Code and Cursor, and a raw curl session with initialize and tools/list. - [MCP server](https://docs.loopandroll.io/mcp/): The Loop & Roll MCP server: what an AI assistant can do with it (read workflows, executions, mailboxes and the catalog; propose, draft, test and publish workflows; create a table), the trust model built on API keys and scopes, the endpoint and its stateless transport. - [Scopes and tools](https://docs.loopandroll.io/mcp/scopes): How the scopes of an API key map to the tools of the Loop & Roll MCP server: the domain of each tool, read and write verbs, how tools/list is filtered, the shape of a refusal, and example keys for a read-only analyst and for a builder. - [Tools reference](https://docs.loopandroll.io/mcp/tools): Every tool of the Loop & Roll MCP server, by domain: published name, internal name, effect, required scope, what it does, its main inputs and what it returns. ## Self-hosting and operations - [Backups](https://docs.loopandroll.io/operations/backups): Back up and restore a self-hosted Loop & Roll instance step by step with the scripts shipped with the source code — what is saved, the manifest, the encryption key, restoring, testing a restore on a copy, and what to avoid. - [Configuration](https://docs.loopandroll.io/operations/configuration): How a self-hosted Loop & Roll instance is configured — environment variables, secrets in files, the reference Docker Compose file, the public address and HTTPS, the encryption key, emails sent by the instance, AI models and the split between API and workers. - [Operations](https://docs.loopandroll.io/operations/): Run a self-hosted Loop & Roll instance day to day — the components, the process roles, where each piece of data lives, what to back up, and what the instance takes care of on its own. - [Monitoring](https://docs.loopandroll.io/operations/monitoring): Monitor a self-hosted Loop & Roll instance — the /healthz and /readyz endpoints and their exact responses, the JSON logs and their levels, what to watch without a metrics endpoint, sizing PostgreSQL, and how the instance behaves after a restart or a database outage. - [Upgrades](https://docs.loopandroll.io/operations/upgrades): Upgrade a self-hosted Loop & Roll instance — how database migrations run at boot, the upgrade procedure from source or from a published image, several processes, work in progress, rolling back, and PostgreSQL upgrades. - [White label](https://docs.loopandroll.io/operations/white-label): Give a Loop & Roll instance your own brand — name, logos, favicon, colors, help link, sign-in page — through environment variables when self-hosting, or from a control plane for a fleet of instances; and what the link to a control plane sends, receives and does when it is unreachable. ## Reference - [Environment variables](https://docs.loopandroll.io/reference/environment-variables): Every environment variable a Loop & Roll instance reads — default, accepted values, effect and pitfalls — grouped by topic, plus the variables used only by the reference Docker Compose file, the image build and the backup scripts. - [Error codes](https://docs.loopandroll.io/reference/error-codes): Where Loop & Roll error codes appear, how they are written, and the families of codes you will meet in API responses and in the errors of a run. ## Contributing - [Conventions](https://docs.loopandroll.io/contributing/conventions): The coding rules of the Loop & Roll repository and the tools that enforce them: TypeScript settings, package boundaries, configuration, formatting, error classes, the API error format, texts and translations, database migrations, security rules, commits and pull requests. - [Contributing](https://docs.loopandroll.io/contributing/): How the Loop & Roll source repository is organised, what you need installed, how to set up a development environment, the main pnpm commands, and the licence terms to check before contributing. - [Testing](https://docs.loopandroll.io/contributing/testing): How tests work in the Loop & Roll repository: Vitest projects, running one package or one file, the shared PostgreSQL test database and MinIO, parallelism, node tests, interface and documentation tests, AI in tests, and what CI checks. - [Writing a node](https://docs.loopandroll.io/contributing/writing-a-node): Write a Loop & Roll node end to end: the defineNode contract, type and version, meta, parameters, ports, policy, the execute function and its data, test runs, registration in the catalog, i18n, tests and the mandatory documentation source. - [Writing an integration](https://docs.loopandroll.io/contributing/writing-an-integration): Connect a third-party service to Loop & Roll file by file: the declaration, the server provider, the node, cascading lists, signed webhooks, polling triggers, files fetched into a run, logo, i18n, tests and the mandatory connection guide. ## Optional - [llms-full.txt](https://docs.loopandroll.io/llms-full.txt): Every page of this documentation in one Markdown file. - [Français](https://docs.loopandroll.io/fr/llms.txt): This summary in French