From 7ed3374350ceae8f71d5a0f1d6099b7ccf533247 Mon Sep 17 00:00:00 2001 From: jordanc-relevanceai Date: Tue, 8 Sep 2026 15:40:49 +1000 Subject: [PATCH 1/5] docs(invent): add a per-tab Invent button and tab-specific Invent pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each tab gets a nav button that points at its own Invent page, styled as one of the app's buttons rather than a nav link: a plain surface with a hairline brand ring, since Mintlify already uses a brand tint to mark the page you are on. Blobby sits fixed in the corner with his eyes tracking the cursor, mounted by invent-callout.js. The button is a tab-scoped global anchor rather than a page in the tab's groups, because Mintlify points a tab at its first page — listing the Invent page first made every tab link resolve to it. Each page still needs a home in its own tab's groups or the tab cannot be resolved while you read it and the anchor does not render; those group headings and rows are hidden in CSS instead, keyed on the shared /invent page naming. Enterprise has no button. New pages cover what Invent means in each tab: an introduction under Getting Started, integration reach and the Invent-versus-MCP distinction, the admin view of access, approvals and spend, and how to turn a role guide into a working Agent. Co-Authored-By: Claude Opus 5 (1M context) --- admin/invent/invent.mdx | 53 +++++++++++ docs.json | 86 ++++++++++++++--- get-started/invent/invent.mdx | 56 +++++++++++ guides/invent/invent.mdx | 32 +++++++ integrations/invent/invent.mdx | 44 +++++++++ invent-callout.js | 67 +++++++++++--- style.css | 164 +++++++++++++++++++++++++++++++++ 7 files changed, 478 insertions(+), 24 deletions(-) create mode 100644 admin/invent/invent.mdx create mode 100644 get-started/invent/invent.mdx create mode 100644 guides/invent/invent.mdx create mode 100644 integrations/invent/invent.mdx diff --git a/admin/invent/invent.mdx b/admin/invent/invent.mdx new file mode 100644 index 00000000..ea0f1b69 --- /dev/null +++ b/admin/invent/invent.mdx @@ -0,0 +1,53 @@ +--- +title: "Configure with Invent" +sidebarTitle: "Configure with Invent" +description: "Who can use Invent, what it is allowed to do without asking, and where its data goes." +--- + +Invent acts inside a project with the caller's own permissions. This page covers the decisions an admin makes about it: who gets access, what it can do unattended, and what leaves the platform. + +## Who can use Invent + +Invent is available to organization admins by default. An organization admin can turn it on for everyone in an individual project from that project's settings, which makes access a per-project decision rather than an all-or-nothing one. + +## What Invent can do without asking + +Two separate controls decide when Invent pauses for approval. + + + + The control beside the message composer applies to the current session only. **Ask first** pauses before tools set to **Ask** or **Always ask** run, while **Auto-accept** lets tools set to **Ask** run unattended. Tools set to **Always ask** still require approval either way. + + + Tool permissions persist per project. Run actions default to **Auto**, create and edit actions to **Ask**, and destructive actions such as deleting or publishing to **Always ask**. Setting a destructive action to **Auto** lets Invent perform it without another prompt. + + + + + These settings control approval prompts, not access. Each user manages their own preferences in each project, so an organization or project admin cannot use them to grant access or set approval rules on someone else's behalf. + + +## Where Invent's data goes + +Conversation content is sent to the selected LLM provider to generate responses. Web search is off by default and used only when enabled for a message, voice is feature-gated and off by default, and memory is off unless the user turns it on. Audit data and operational metrics stay within Relevance AI unless your organization has configured enterprise event streaming to a destination you control. + +Invent's access to Relevance AI is scoped to the active project at the API-key and fine-grained authorization layers, not only in the interface, so enabling it in a sandbox project does not expose a production project. + +## Keeping spend predictable + +Invent consumes significant credits. The Invent panel shows a real-time counter for the current session, and the usual account controls apply to what it spends. + + + + Cap what a project can spend before Invent or any Agent runs against it. + + + Get notified as credit usage climbs, rather than after the fact. + + + +## Learn more + + + The full reference, including the Enterprise security controls and the frequently asked questions on isolation and data egress. + diff --git a/docs.json b/docs.json index ddf85285..81e029d4 100644 --- a/docs.json +++ b/docs.json @@ -92,8 +92,22 @@ "get-started/troubleshooting/troubleshooting-agents-not-working", "get-started/support" ] + }, + { + "group": "Invent", + "pages": [ + "get-started/invent/invent" + ] } - ] + ], + "global": { + "anchors": [ + { + "anchor": "Meet Invent", + "href": "/get-started/invent/invent" + } + ] + } }, { "tab": "Build with Relevance AI", @@ -104,12 +118,6 @@ "build/introduction" ] }, - { - "group": "Invent", - "pages": [ - "build/invent/invent" - ] - }, { "group": "Agents", "pages": [ @@ -391,8 +399,22 @@ "build/knowledge/knowledge-tool-steps", "build/knowledge/use-snippets-for-quick-access" ] + }, + { + "group": "Invent", + "pages": [ + "build/invent/invent" + ] } - ] + ], + "global": { + "anchors": [ + { + "anchor": "Build with Invent", + "href": "/build/invent/invent" + } + ] + } }, { "tab": "Integrations", @@ -505,8 +527,22 @@ "pages": [ "integrations/integration-examples/email-warmups" ] + }, + { + "group": "Invent", + "pages": [ + "integrations/invent/invent" + ] } - ] + ], + "global": { + "anchors": [ + { + "anchor": "Integrate with Invent", + "href": "/integrations/invent/invent" + } + ] + } }, { "tab": "Access & Administration", @@ -546,8 +582,22 @@ "admin/security", "admin/system-limits" ] + }, + { + "group": "Invent", + "pages": [ + "admin/invent/invent" + ] } - ] + ], + "global": { + "anchors": [ + { + "anchor": "Configure with Invent", + "href": "/admin/invent/invent" + } + ] + } }, { "tab": "Enterprise", @@ -688,8 +738,22 @@ ] } ] + }, + { + "group": "Invent", + "pages": [ + "guides/invent/invent" + ] } - ] + ], + "global": { + "anchors": [ + { + "anchor": "Explore with Invent", + "href": "/guides/invent/invent" + } + ] + } } ] }, diff --git a/get-started/invent/invent.mdx b/get-started/invent/invent.mdx new file mode 100644 index 00000000..ff552515 --- /dev/null +++ b/get-started/invent/invent.mdx @@ -0,0 +1,56 @@ +--- +title: "Meet Invent" +sidebarTitle: "Meet Invent" +description: "An introduction to Invent, the forward deployed agent that builds your Agents for you." +--- + +Invent is a forward deployed agent built into Relevance AI. You describe a business process in your own words, and Invent works through it with you before building and managing the Agents that run it. + +That means you do not have to start in the builder. Agents, Tools, Workforces, and Knowledge are all things Invent can create, connect, and test on your behalf — you bring the knowledge of how the process actually works. + +The Invent start menu with suggested prompts and the message composer + +## Two ways to start + + + + Best when you know the process but not the platform. Explain the outcome you need and let Invent decide what to build. + + + Best when you want to learn the pieces first. Create an Agent by hand and see how the parts fit together. + + + +## What your first task looks like + +1. You describe a process — the outcome, the systems it touches, and the calls that need judgment +2. Invent reads it back and asks about the parts you left out +3. It builds the Agents, Tools, and Triggers the process needs, landing changes in draft for you to review +4. It sets the checks the work has to pass, then keeps sampling live runs and proposing fixes after launch + +## What to have ready + +Invent works best on a process you know end to end and could explain out loud. Before you open it, be ready to say: + +- The outcome you need, in the terms your team would use +- The systems the work touches, such as your CRM or your inbox +- The decisions that require judgment, and how you make them today +- How you would know the Agent did the job well + +A rough description is enough to begin. Invent asks about the gaps rather than guessing at them. + +## Before you start + + + Invent is available to organization admins by default. An organization admin can turn it on for everyone in an individual project from that project's settings. + + + + Invent is expensive to run and consumes significant credits. Use it deliberately and keep an eye on your usage. + + +## Learn more + + + The full reference: where to find Invent, approval controls, memories, scheduled check-ins, and how it manages Evals after launch. + diff --git a/guides/invent/invent.mdx b/guides/invent/invent.mdx new file mode 100644 index 00000000..2422ce99 --- /dev/null +++ b/guides/invent/invent.mdx @@ -0,0 +1,32 @@ +--- +title: "Explore with Invent" +sidebarTitle: "Explore with Invent" +description: "How to turn one of these use-case guides into a working Agent team with Invent." +--- + +Every guide in this section describes a process: what goes in, which systems it touches, and what good output looks like. That is the same thing Invent asks you for, which makes a guide a useful starting script rather than something you have to translate. + +## From a guide to a working Agent + +1. Read the use case you care about and note where your version differs — your CRM, your stages, your definition of a good result +2. Open Invent and describe that process in your own terms, including the judgment calls you make today +3. Answer its questions about the parts you left out, then review what it drafts before anything goes live +4. Ask it to turn a real run into an Evals suite, so the Agent has a quality bar before it handles live work + + + Describe the process you actually run, not the one in the guide. Invent builds against what you tell it, so your exceptions and edge cases are the useful part. + + +## Pick a process you know end to end + +The guides are organized by role because the person who knows a process well is usually the one who runs it. Invent needs that knowledge from you — it can build and test the Agent team, but it cannot tell you how your team decides a lead is worth calling. + + + Use cases across sales, marketing, customer success, support, solution engineering, and RevOps. + + +## Learn more + + + The full reference: how Invent works through a process with you, and how it reviews performance after launch. + diff --git a/integrations/invent/invent.mdx b/integrations/invent/invent.mdx new file mode 100644 index 00000000..25779c75 --- /dev/null +++ b/integrations/invent/invent.mdx @@ -0,0 +1,44 @@ +--- +title: "Integrate with Invent" +sidebarTitle: "Integrate with Invent" +description: "How Invent uses your connected integrations, and where the access boundary sits." +--- + +Invent builds the Tools a process needs and connects them to the systems where the work happens. Describe the process in terms of your systems — "read the account from Salesforce, draft the follow-up in Gmail" — and Invent equips the Agent with the Tools and integrations required to do it. + +## What Invent can reach + +Within the active project, Invent can use integrations that are already connected, with the credentials available to that project. It cannot reach a system nobody has connected, and it cannot borrow credentials from another project. + + + + Authenticating an account is yours to do. Connect it once and Invent can use it in every Tool it builds in that project. + + + Invent picks the right Tools for the systems involved and wires them into the Agent, rather than you configuring each step. + + + + + The project is the access boundary. If a project must stay isolated from production data, connect only sandbox credentials to it — enabling Invent in a sandbox project does not grant it access to assets or credentials in a production project. + + +## Invent and the MCP are not the same thing + +They are easy to confuse because both let natural language drive Relevance AI. The difference is direction: Invent builds things inside Relevance AI, and the MCP connects Relevance AI to the outside world. + +| | Reach for it when | +| --- | --- | +| **Invent** | You want an Agent, Tool, or Workforce built or fixed, and you would rather describe the outcome than configure it. | +| **[MCP Server](/integrations/mcp/mcp-server)** | The Tool already exists and you want to call it from an external client such as Claude Code or Codex. | +| **[MCP Client](/integrations/mcp/mcp-client)** | You want your Agents to call an outside service such as Notion or Linear. | + + + The two work together. A common pattern is to build your Agents and Tools with Invent, then call them from your editor through the MCP during day-to-day work. + + +## Learn more + + + The full reference, including the integration reach and data egress details behind Invent's Enterprise security controls. + diff --git a/invent-callout.js b/invent-callout.js index ab1ca8d6..532e2d9d 100644 --- a/invent-callout.js +++ b/invent-callout.js @@ -1,5 +1,7 @@ -// Blobby — the live Invent badge inside .invent-callout bubbles. -// Auto-loaded by Mintlify on every page; no-ops on pages without a bubble. +// Blobby — the live Invent badge. Two placements: +// .invent-callout the bubble; he sits at its left edge +// the sidebar the Invent-themed nav rows named in NAV_ROWS +// Auto-loaded by Mintlify on every page; no-ops where neither applies. // // Ported from the product's useInventorEyes / InventorBuddyEyes so the eyes // behave the same here as they do in-app: they follow the cursor across the @@ -10,6 +12,24 @@ (function () { var SEAL_SRC = "/images/invent-blobby-seal.svg"; + // Nav rows styled as Invent buttons in style.css — he sits fixed in the + // right-hand corner. Each tab declares its own anchor (docs.json → the + // tab's global.anchors), pointing at that tab's Invent page. They all + // end in /invent, which is what this matches. + var NAV_ROWS = ['a.nav-anchor[href$="/invent"]']; + + // The mobile drawer renders its own copy of the sidebar, so collect every + // match rather than the first. + function navRows() { + var rows = []; + NAV_ROWS.forEach(function (selector) { + document.querySelectorAll(selector).forEach(function (row) { + rows.push(row); + }); + }); + return rows; + } + // Eye travel limit, in viewBox units of the 2.4→45.6 badge. var MAX_EYE_TRAVEL = 2.6; var GAZE_DEADZONE_PX = 6; @@ -66,7 +86,7 @@ var instance = 0; - function buildBadge(bubble, seal) { + function buildBadge(seal) { // Gradient ids are namespaced per badge so two bubbles on one page don't // collide on the same defs. var id = "ib" + ++instance; @@ -95,12 +115,12 @@ "" + ""; - bubble.insertBefore(link, bubble.firstChild); - bubble.classList.add("has-blobby"); return link; } - function animate(link) { + // hoverTarget is what plays the ^ ^ greeting: the whole bubble, or the + // whole title when he's sitting in one. + function animate(link, hoverTarget) { var shift = link.querySelector(".invent-blobby-shift"); var eyes = link.querySelector(".invent-blobby-eyes"); var smile = link.querySelector(".invent-blobby-smile"); @@ -141,7 +161,7 @@ // The ^ ^ greeting: plays once per hover of the whole bubble, then the // eyes reopen on their own even if the pointer never leaves. var happyTimer = null; - link.closest(".invent-callout").addEventListener("mouseenter", function () { + hoverTarget.addEventListener("mouseenter", function () { eyes.classList.add("is-happy"); smile.classList.add("is-happy"); if (happyTimer) clearTimeout(happyTimer); @@ -178,15 +198,36 @@ requestAnimationFrame(update); } + function mountBubbles(seal) { + document.querySelectorAll(".invent-callout:not(.has-blobby)").forEach(function (bubble) { + if (bubble.classList.contains("has-blobby")) return; + var link = buildBadge(seal); + bubble.insertBefore(link, bubble.firstChild); + bubble.classList.add("has-blobby"); + animate(link, bubble); + }); + } + + function mountNav(seal) { + navRows().forEach(function (row) { + if (row.classList.contains("has-blobby")) return; + var link = buildBadge(seal); + link.classList.add("invent-blobby--nav"); + row.appendChild(link); + row.classList.add("has-blobby"); + // The greeting plays on the whole row, not just on him. + animate(link, row); + }); + } + function mount() { - var bubbles = document.querySelectorAll(".invent-callout:not(.has-blobby)"); - if (!bubbles.length) return; + var wanted = + document.querySelector(".invent-callout:not(.has-blobby)") || navRows().length; + if (!wanted) return; loadSeal().then(function (seal) { if (!seal) return; - bubbles.forEach(function (bubble) { - if (bubble.classList.contains("has-blobby")) return; - animate(buildBadge(bubble, seal)); - }); + mountBubbles(seal); + mountNav(seal); }); } diff --git a/style.css b/style.css index 5dbb4eba..4a55d14a 100644 --- a/style.css +++ b/style.css @@ -555,3 +555,167 @@ div#content-side-layout { transition: none; } } + +/* ========================================================= + "Build with Invent" — the Invent-themed row that sits above every + tab's groups. It is a global nav anchor, not a page in any tab: + Mintlify points a tab at its first page, so listing this page first + in each tab made all six tabs link to it and tab navigation died. + The anchor lives in docs.json under navigation.global.anchors. + + Styled to read as one of the app's buttons rather than a nav link, + on the product's own tokens: brand #685FFF, hover #4D40EC, pressed + #321AD5, and the elevation-bulge shadow (0 2px 3px -1px + a 1px + inset ring). + + Deliberately NOT a brand tint: Mintlify marks the page you are on + with bg-primary/10 + text-primary in a rounded pill, and a tinted + fill here read as a second active page. So this one carries a plain + surface with a hairline ring — emphasis by edge and elevation, which + the active row never uses. + + Blobby sits fixed in the right-hand corner at full colour — only + his eyes move, tracking the cursor. The live badge + (.invent-blobby--nav) is mounted by /invent-callout.js; ::after is + the no-JS fallback, same geometry, minus the eyes. + ========================================================= */ + +/* Each tab's Invent page needs a home in that tab's groups — without one + Mintlify can't tell which tab you're on while you're reading it, and the + tab's own anchor (the pill) doesn't render at all. `hidden: true` on the + group hides it from that resolution too, so the groups stay visible in + docs.json and their headings and rows are dropped here instead. + + Every one of those pages is named `invent`, which is what the $= hooks + below match; the pill is a nav anchor, not one of these rows, so it is + untouched. Name a new one to that convention and it needs no CSS. */ +.sidebar-group-header:has(+ ul.sidebar-group li[id$="/invent"]), +li[id$="/invent"] { + display: none; +} + +/* The tab's own anchor renders ahead of the shared ones (Community, + Contact Support, JavaScript SDK, Changelog), which left four links + between the pill and the first group. They all share one