SHAI

Help

How SHAI works, in its own words

This is SHAI’s handbook — the same document that ships with the product, rendered here so you can read it before you sign up rather than after.

What SHAI is

SHAI is a team of 90 agents, organised into eleven squads, that do real work for you and for your business:

| Squad | What it covers | |---|---| | S0 Core | SHAI itself, getting to know you, QA, building new agents | | S1 Life OS | Fitness and food, sleep, personal time, dates, celebrations, coaching, reading — and your own smart home, through the Home Assistant or SmartThings account you connect, with anything that unlocks, opens, disarms or touches a camera asking you first, every time | | S2 Travel | Trips, flights, hotels, restaurants, venues | | S3 Purchases | Buying a car, personal shopping | | S4 Strategy | Business plans, offers, forecasting, scaling, tax, legal, hiring, pitch decks | | S5 Sales | Roleplay, call grading, sales talent | | S6 GHL | The whole GoHighLevel CRM: setup, calendars, pipelines, funnels, forms, email, automations, agents, A2P | | S7 Builders | Client websites, walkthrough and flyover videos, the real-estate studio | | S8 Content | The six-agent video-editor squad, scripts, organic content, SEO, AEO, site speed | | S9 Outreach | Lead lists, DM and email outreach, social engagement, metrics | | S10 Ads | Meta and Google ads: research, copy, creatives, campaigns, optimisation, metrics |

Two ways to use them, and they are the same agents either way:

  • In Claude Code, on your own machine and your own Claude account. Type /shai and

ask for what you want.

  • On the platform, in a browser, where SHAI also calls and texts you.

docs/agent-registry.md is the authoritative list, with each agent's status and the tools it needs.

---

Signup to your first result

2a. If you are using Claude Code

  1. Clone your instance repository and open it in Claude Code.
  2. Run `tools/shai-init.sh`. It creates your personal workspace (clients/_me/),

installs the secret-scanning pre-commit hook, and prints which tools are not yet connected.

  1. Run `/get-to-know-you`. This is the one interview that every other agent reads: your

name, how you like to be addressed, your hours, your time zone, and — if you have one — your business, its offer and its numbers. It asks once.

  1. Ask for something. /shai plan my week, or name an agent directly:

/fitness-nutrition, /build-website, /ad-copy. SHAI routes what you ask to whichever agent owns it and tells you what it started.

  1. Answer the agent's own questions the first time. Each agent interviews you once for

the things only it needs. It never asks twice, and it never asks something another agent already learned.

A first real result — a week's plan, a set of ad headlines, a client website — is usually one session away.

2b. If you are using the platform

The public side of the platform — / for a signed-out visitor, plus /product, /pricing, /agents, /integrations, /industries, /security, /about, /contact, /changelog, /docs and the two legal placeholders — explains what SHAI is before you sign up. Every one of those pages also has a plain-text twin at its own index.md, and /llms.txt summarises the site for an AI assistant reading it. The two legal pages are placeholders and say so: counsel replaces them before the first paid account.

  1. Sign up at /sign-up, or with the invite the owner sends you. There is no card and

no subscription in this version.

  1. Five short questions. After sign-up SHAI walks you through a guided setup at

/welcome, and you can skip any step or all of them:

  • Where should SHAI reach you? The portal only, which is the default and sends you

nothing; or also by text and calls, which asks for your mobile number, the hours you are happy to be contacted in, and an explicit tick against the exact wording you are agreeing to. That wording is stored with your answer, and you can stop it at any time from Settings or by replying STOP. Slack now exists: once the owner has created the Slack app, @SHAI answers in any channel it has been invited into, approvals arrive there as buttons, and pressing one settles the same item you would have seen on the dashboard or answered by text. It reads only channels it has been invited into, only the messages that mention it, and it will not act for a Slack account nobody has linked to a member here.

  • About your business. Name, website, trade, what you are after, and what eats your

week. This creates the business's workspace and seeds the profile every agent reads, so none of them asks you again. The full interview continues in Chat and never blocks anything.

  • Your first tools. The three most likely to matter for your trade, connected by

pasting a key. Skippable, and the full wizard is one click away.

  • Your first tasks. Three things worth doing on a schedule for your trade. Approving

one saves it — nothing runs on a schedule yet, and the screen says so; scheduling arrives with the Tasks screen.

  • Your dashboard, with a first run started for your business.
  1. Setup is still there, unchanged, at /setup — every tool with its price, why it

matters, and what will not work without it, in budget bundles from Free to Everything with the best overall value marked. You connect your own accounts, and a banner stays at the top until the required connections exist.

  1. Connect GitHub so the platform can create your private instance repository — your

agents and your work live there, in your own account.

  1. Choose how the tokens are paid for — and no card is asked for either way.
  • Start on credits (the default). Your account is granted **$10.00 of starter

credit and 72 hours to spend it on real work. No card, no model key, nothing to set up. A run paid from credits is charged what it actually metered plus the operator's margin — 30% on a deployment nobody has changed — never an estimate. When the 72 hours are up and you have not added a payment method, starting new work pauses and nothing else does**: every task, file, page and conversation you made is still there to read and export, a run already going finishes, and your unspent credit stays yours. It expires on being spent and never on a date. Add a payment method and new runs start again straight away, with that credit still in the wallet.

  • Or paste your own Anthropic API key. Runs then execute on your key, the vendor

bills you at its own price, nothing is marked up — and no trial clock applies to you at all, now or ever. Until a key is stored and while credits are switched off, a run is created and parks rather than pretending: the dashboard says so and prints the exact console steps.

Either way, set your daily spend ceiling; a run that would cross it pauses and asks you rather than spending. If your credit balance reaches $0.00, the run that would have spent the last cent parks with a sentence naming the balance and a link to buy more — never a silent failure.

  1. Find your way around. A sidebar on the left carries Home, Chat, Agents, Tasks, Runs,

Files, Pages, Spaces, Connections, Businesses, Team, Usage & billing, Setup, Settings and Admin. Five of those screens are still being built; each says which release brings it and what to use in the meantime, rather than leaving you on an error page. ⌘K opens a search over your agents, your businesses and every screen, and turns anything else into a message to SHAI. /shortcuts lists every key that works — and the ones that do not yet.

  1. Use the Agents tab (one card per agent, run it on its own — still at /tools) or

the Chat tab (describe what you need and SHAI starts the right agents). Chat has threads you can search, pin, rename and archive; typing / lists every agent; you can attach small files; a run streams its output in the thread where you asked for it; and anything needing your approval is decided there too. Either way the run appears in your workspace, and the CRM reflects work you did in Claude Code too.

What you see when you sign in. The home screen opens on the presence: an orb that idles, brightens while SHAI is working, pulses when it listens or speaks, and settles when something needs you; beside it a chip that says listening, speaking, working or idle, how many scheduled jobs are armed, and how many things need you — the same numbers the Tasks screen and the top bar show, kept current without a reload; under it a small strip of measured figures (the last turn's time, tools used today, spend today, adapter health) that prints a dash where nothing was measured and never shows an uptime, because nothing measures one; and then the composer and the Talk panel, so the first thing you can do is say what you need. Everything the dashboard showed before is still below it, in the same order. A browser without WebGL or with reduced motion set gets a still orb and every control still works; a client of an agency sees the same presence under the agency's name and none of the account's figures.

2c. Work that happens without you asking

Most of what a business needs done is not a one-off. Tasks is where a run becomes a cadence, and there are four things worth knowing before you make one.

You see what it costs before you save it. Every task shows a projected monthly figure worked out from the cadence and from what a run of that agent has actually cost *you* — the median of your own finished runs once there are three of them, and the agent's own ceiling before that, with the screen saying which it used. A cadence whose projected daily share would cross your daily spend ceiling cannot be saved, and the ceiling is not raised for you. Nothing here offers a schedule under an hour: a five-minute cron is how a cadence quietly costs somebody thousands of dollars a month.

"Every Monday at 8" means eight in your morning. A task carries your time zone, and it keeps your wall-clock hour across both clock changes. The awkward two mornings a year are decided rather than left to luck: a task set for an hour the clocks skip runs once, at the first minute that exists; a task set for an hour that happens twice runs once, on the first of them. And if SHAI is offline when a task was due, it runs once when it comes back — never once for every hour it missed.

A check costs nothing until something happens. A task can be set to *look* rather than to run: "when a new enquiry arrives", "when there are open quotes". SHAI checks on the cadence with no model involved at all, and only starts the agent — and only then spends anything — when the condition is actually true. A check that finds nothing says "checked, nothing to do" at most once a day, so it never becomes noise.

A scheduled run asks before it does something new. There is nobody sitting in front of an unattended run, so if one wants a tool you have not approved for that workspace it stops and raises the request where you will see it. Approve it once and SHAI remembers the rule — the next run and every one after it go through without waking you. Settings lists every rule you have granted and takes any of them back.

There are three ways in: "Run on a schedule" on any agent's card, the create form on /tasks, or simply saying so in Chat — "…and do this every Monday at 8" — which SHAI reads back to you as a cadence and schedules only once you confirm it.

2d. What SHAI suggests

On your home screen there is a section called SHAI suggests. It fills from your own business profile, the tools you have connected, and your industry's playbook — one of thirty written from an operator's knowledge of how these trades actually run. Each suggestion is a task or a connection with one sentence saying why, and nothing in it ever runs on its own: a suggestion stays paused until you press Approve, and approving is what creates the task. Say "not for me" and SHAI will not raise it again for ninety days.

It looks weekly, again whenever you connect a tool, and again whenever you ask it to. If your trade has no playbook, it says so rather than suggesting something generic.

---

How the agents behave

Six things are true of every agent, and they are the reason this is worth using:

  1. It asks once. Interviews run the first time and are read thereafter. A returning

request never re-runs the interview.

  1. It uses real data. Real prices, real quotes, real reviews, real availability, each

with its source and the date it was fetched. Nothing is invented, and stock imagery is never passed off as your business.

  1. It says when it cannot. If a tool is not connected, you get the exact tool and the

exact steps in one line — not a silent failure and not a degraded result pretending to be a good one.

  1. It quotes before it spends. Anything that costs credits or money is quoted first and

waits for your approval on a business's first paid batch.

  1. Nothing blocks everything. If one part of a job is stuck, the rest still runs and

the stuck part lands on your "needs you" list.

  1. It discloses that it is AI on any contact with someone who is not you, and follows

each platform's own rules — official APIs, published rate limits, consent where it is required.

The shelf

Skills is what SHAI carries and what you have taught it. Shelf is what other people using SHAI have written.

It ships with 29 squads already on it — one for each trade SHAI has a playbook for, with that trade's agents, the cadence for each task, the numbers to watch and the rules it is held to. They are SHAI's own, not somebody's submission, and they are there on your first day so the shelf is never an empty room.

Three things are true of everything on it:

  • A person read it. "Verified by SHAI" means a SHAI operator opened the file and

published it. It is not a promise about your results and it is not support.

  • It is free. There is no cut, no payout and no seller account. The shelf exists so the

people using SHAI can hand each other what already works.

  • Installing gives you your own copy. It becomes one of your skills — your account,

your instance repository, your keys, your credits. You can edit it or delete it like anything you wrote, the person who submitted it never sees your account, and if they take theirs down yours is untouched.

You can put one of your own taught skills forward from its card on Skills. You write the name, the description and the category yourself — SHAI will not compose them for you, because they would be a claim you never made. Until an operator approves it, nobody outside your account can see it. If it is turned down you get the reason, in their words, on the same screen.

---

What you own

  • Your instance repository is yours. It is private, in your own GitHub account, and it

holds your agents, your client folders, your profiles and everything the agents produce. If you stop using the platform tomorrow, you keep it and everything in it, and the agents in it keep working in Claude Code.

  • It is also the backup of record. The platform is a control plane over work that lives

in your repository; it does not hold your client files.

  • Your accounts are yours. Every tool is connected with your own credentials. Nothing

is shared between users, and we never charge your card for a vendor on your behalf.

  • The files your agents produce are yours twice. Every spreadsheet, document, deck and

PDF is listed on Files with a download link, *and* committed into your own repository under clients/<business>/outputs/. A file too large for a repository stays in storage with a pointer committed in its place — nothing is ever silently dropped. The same Download button is on the run that made the file, on the page it was published from, and in the Slack, Teams or Discord message that announced it.

  • A page can be live. *Publish as a live page* on Pages makes a page that re-renders

itself on a schedule — your spend, your runs, what is scheduled, what is waiting on you, or one number from a connected tool — at a link that never changes. It costs nothing: no agent runs, the platform reads its own rows. The refresh is an ordinary task on Tasks; pause it and the page keeps its last version. A tool that is not connected says so on the page rather than showing a zero, and every refresh is a version you can see and restore.

If you run an agency

On the Agency plan you can put your own name and logo on what your clients see. Settings → Your clients' view → Client-facing branding: switch it on, type the name, paste a logo address, and every screen a *client* of yours signs in to wears it — the portal, the browser tab, and what the assistant says to them. Your own team's screens never change. That is deliberate: an agency that could not tell at a glance which product it was inside would lose ten minutes a week to it, and there is nothing to gain from the confusion.

Three things worth knowing before you switch it on:

  • "Powered by SHAI" stays in the footer of your clients' screens unless the operator of

your deployment sells its removal *and* you switch it off. The box is on the same screen and it says which of the two is missing rather than doing nothing quietly.

  • Every client you add is a Business under your own account, and a billed seat. The

Agency plan includes ten; each client past that costs a set amount a month, shown on Settings → Billing as a figure rather than a surprise on an invoice. Your own workspaces are not seats. Adding a client is never refused over a seat — it is billed.

  • A custom domain of your own is not part of this. Your clients sign in at the same

address they do today, wearing your name. The domain waits on the platform's own.

Nothing here is deleted by a downgrade: if you move off Agency, the name and logo are kept and simply stop reaching your clients' screens until you move back.

---

Export and deletion — the promise

Export. Settings → Data → Export gives you every row the platform holds for you: businesses, contacts, projects, runs, approvals, conversations, messages, connections, profile answers, usage — and the files your agents produced, with their contents, not just a list of their names. It points at your instance repository rather than copying it, because the repository is the copy that matters. Stored credentials are redacted — the export tells you which tools are connected, never the keys themselves.

Deletion. Settings → Data → Delete account removes every row the platform holds for you, in one pass, and unlinks your instance repository. It never deletes the repository: it is yours, in your account, and deleting your platform account is not a reason to destroy your work. You are told exactly what was deleted and what is left for you to do.

Pages you have published. A page at a /p/… link is taken down by pressing *Take it down*, which makes the link answer "not found" for everyone, including anyone who already had it. Nothing is deleted by that — the page and its versions stay, so you can publish it again — and deleting your account removes it along with everything else.

Between them. Run logs — the request you typed and what the agent produced — are kept for 90 days and then cleared; what a run was and what it cost is kept, so your usage history stays honest. Messages are kept until you delete your account.

Privacy between users. No other user's data is visible to you, and yours is not visible to them. This is enforced in the data layer rather than in each screen: every query carries its tenant and business scope, and there is no code path that lets a request name a tenant it is not signed in to.

---

What a buyer receives

If you bought SHAI rather than building it:

  • Read-only access to the release repository, from which your instance is created.
  • Your own private instance repository, containing every agent, doc, tool and template.
  • A platform account, if the owner is hosting the platform for you.
  • This handbook and the connection guide.

You do not receive the owner's build-time material — the specifications, the build prompts, and the build logs. Those are the owner's own working notes and are excluded from the release by tools/make-release.sh.

Updates. New and improved agents reach you through tools/shai-upgrade.sh, or the platform's "Update agents" button. It merges the agents, docs, tools and templates — never your `clients/` folder — and re-runs the checks. SHAI tells you when the catalog is ahead of your instance.

---

Support and limits

  • When an agent needs something, it says so by name with the exact steps. That list is

your "needs you" list, and SHAI will text or call you about it if you have opted in.

  • When something is not possible, you are told plainly. Some tools are partner-gated

(OpenTable's API, LinkedIn's own API, the OTA and vehicle-finance APIs) and no amount of spending opens them; those agents work through a documented manual checklist instead.

  • Professional advice. The tax, legal, HR and coaching agents give you organised,

sourced information and drafts. They are not your accountant, lawyer, HR department or therapist, and each says so in its own words at the point it matters.

---

Licence

> [LICENCE TERMS — to be completed by the owner before the first sale.] > > This placeholder is deliberate. Nothing in this repository grants a licence until the > owner writes one here, and the terms a buyer receives should be the owner's own words > reviewed by the owner's own counsel, not a template. At minimum they need to answer: > what a buyer may do with the agents and the platform, whether they may resell or > sublicense, what happens to their instance repository if the licence ends, what is > warranted and what is not, and which law governs. > > Until this section is filled in, treat access as personal, non-transferable, and > revocable by the owner.

Connecting your tools

56 tools, each with what it is, which agents need it, what breaks without it, and the exact steps. This list is the connection guide that ships with the product — the full page is here, and the same steps appear in the setup wizard when you connect one.

Claude subscription (Pro / Max / Team)

The user's own Claude.ai subscription for running skills in Claude Code on their own account.

Without it: Nothing runs in Claude Code at all.

Anthropic Console API key (pay-as-you-go)

A separate, per-token-billed Anthropic account/key the platform worker uses via the Claude Agent SDK to run skills on the user's behalf.

Without it: The platform cannot execute any skill for that tenant.

OpenAI API key (pay-as-you-go)

The tenant's own OpenAI key. Used only for the routed half of a run — extraction, summarising, classification, first drafts, checks — never for the orchestrator, which runs only Claude (the Agent SDK does not route to other vendors).

Without it: Nothing stops. A policy that names OpenAI without this key parks that step as needs-connector: openai and the run does that part itself and says so - it never falls back to a more expensive model without asking.

Google AI (Gemini) API key

The tenant's own Gemini key, reached through Google's own OpenAI-compatibility layer. Routed work only, for the reason the OpenAI row gives.

Without it: Nothing stops. A policy that names Google without this key parks that step as needs-connector: google.

DeepSeek API key

The tenant's own DeepSeek key, reached through DeepSeek's own OpenAI-compatible API. Routed work only.

Without it: Nothing stops. A policy that names DeepSeek without this key parks that step as needs-connector: deepseek.

OpenRouter API key

The tenant's own OpenRouter key - one key that reaches hundreds of models, including open-weight ones no vendor sells directly. This is the only provider SHAI reaches through a first-party AI SDK provider package rather than an OpenAI-compatible base URL.

Without it: Nothing stops. A policy that names OpenRouter without this key parks that step as needs-connector: openrouter.

ElevenLabs API key (SHAI's voice)

The tenant's own ElevenLabs key, so SHAI's replies in the portal are spoken by the Flash model (eleven_flash_v2_5) streamed from ElevenLabs' own text-to-speech endpoint, and so a phone call through Twilio's ConversationRelay names the same ElevenLabs voice. Optional: with no key the free browser voice speaks exactly as before (C23).

Without it: Nothing stops. With Settings -> Voice on the free browser voice nothing here is read. With Settings -> Voice set to ElevenLabs and no key, the portal's spoken reply parks as needs-connector: elevenlabs and says so on the panel - it never falls back to the browser voice silently - and a call uses Twilio's documented default voice.

Fish Audio API key (SHAI's voice, the cheap one)

The tenant's own Fish Audio key, so SHAI's replies in the portal are spoken by Fish Audio's text-to-speech endpoint (POST https://api.fish.audio/v1/tts, chunked audio, model header s1 / s2-pro / s2.1-pro). Portal only: Twilio's ConversationRelay carries Google, Amazon and ElevenLabs voices and not Fish Audio, so a Fish Audio tenant's calls use Twilio's documented default voice and Settings -> Voice says so.

Without it: Nothing stops. With Settings -> Voice on the free browser voice nothing here is read. With Settings -> Voice set to Fish Audio and no key, the portal's spoken reply parks as needs-connector: fishaudio and says so on the panel - never a silent fall back to the browser voice.

GitHub

Hosts the user's private SHAI instance repo (via the SHAI GitHub App), every client website repo, and release-repo access grants.

Without it: No instance repo can be created; no client website repos.

Vercel

Hosts the platform itself and every client website /build-website deploys, under the running user's own connected team.

Without it: No client website can go live; the platform itself cannot be deployed.

OpenArt

Image/video generation connector for AI logos, walkthrough videos, and aerial flyovers; docs/openart-capabilities.md owns the model policy and credit-cost tables.

Without it: No AI-generated logo and no video (walkthrough/flyover) for a client; the website and non-video services still work.

Twilio (SMS + voice)

The SMS and voice transport behind the notify port (tools/notify.py); rung 1 for sms, the only rung for call.

Without it: Nothing stops: notify.py plans and logs the message; the deliverable becomes calendar events plus schedule.md instead of a self-firing text.

Resend (transactional email)

The email transport behind the notify port; rung 1 of the email ladder in tools/notify.py.

Without it: Nothing stops: the email is planned and logged, and its content still lands in the workspace as a file the user can send themselves.

Go High Level (GHL)

The CRM the owner's businesses run on: rung 3 of both notify ladders, rung 2 of the scheduler ladder, and the home of every S6 skill.

Without it: Every S6 skill is needs-connector: ghl and cannot run; the S1 skills lose only their sending rung, not their plan.

Salesforce

The CRM /salesforce-admin (#29) administers through Salesforce's official REST, SOQL, and Tooling APIs only — never scraping, never a browser script against Salesforce's own site.

Without it: /salesforce-admin cannot read or write any real org data — it delivers the Connected-App/OAuth setup steps instead of fabricating a field, object, record, or report.

Google Calendar

The calendar /life-planner (S1 Life OS) writes to — rung 1 of the calendar ladder (tools/gcal.py); GHL is rung 2.

Without it: tools/gcal.py falls back to its local store — every merge and conflict resolution still runs, but nothing lands on a real external calendar; the report says planned, never written.

OpenTable (restaurant reservations)

The reservation-booking API /restaurant-booking (#18) would use to book a table directly instead of a deep link. Confirmed partner-only live 2026-09-08: no self-service developer portal or personal API key; approved partners get OAuth 2.0 sandbox access after a written application, production needs a signed agreement.

Without it: Nothing stops — /restaurant-booking uses the restaurant's own OpenTable reservation deep link or widget URL as the first self-serve path, falling to the phone agent (docs/compliance.md §5) when no online path exists.

Hotel and flight search/booking APIs (Booking.com, major OTAs)

Same partner-gated pattern as OpenTable, checked live 2026-09-08 for /flight-deals (#10), /hotel-deals (#11), /hotel-booking (#12). Booking.com's Demand API requires Managed Affiliate Partner status, a signed contract, and Account-Manager-enabled Partner Centre access before sandbox credentials are issued, and the partner portal is not accepting new registrations as of this check. No major flight-search engine publishes a consumer-authorizable personal API either.

Without it: Nothing — this is the shipped path, not a fallback. /flight-deals, /hotel-deals, /hotel-booking run on WebSearch/WebFetch against airline, hotel, and OTA results pages, real prices cited per run, exactly like /date-ideas and /restaurant-finder need no paid connector; /hotel-booking books through the property's own site, a major OTA's booking flow (a §3.13 UI-only step), or the phone agent.

Vehicle marketplace and financing APIs (Cars.com, Autotrader, TrueCar; auto lenders)

Same partner-gated pattern as OpenTable and the OTAs, checked live 2026-09-08 for /car-buying (#13). Autotrader's own REST APIs (listings, VIN/VRM lookups, valuations, finance-product integration) are sold to dealers and finance partners, not individual consumers; TrueCar publishes no public API at all. No auto lender exposes a consumer-authorizable API that originates a loan or places an order on a named person's behalf.

Without it: Nothing — this is the shipped path. /car-buying runs on WebSearch/WebFetch against dealer and marketplace listing pages plus a real published rate table (Experian's quarterly report) for financing, exactly like /hotel-deals/flight-deals need no paid connector for pricing. The actual purchase, financing application, and negotiation are the user's own, handed back as an exact next-steps checklist.

Shopping and price-comparison APIs (Google Shopping, retailer search)

Checked live 2026-09-08 for /personal-shopper (#14). Google's merchant-facing Content/Merchant API is seller-side only (a store uploading its own product feed), not a consumer price-comparison tool. The consumer side needs no API or account at all — Google Shopping's own public search results and every named retailer's own product-search pages are public pages WebSearch/WebFetch reads directly.

Without it: Nothing — no consumer-authorizable purchase API exists for a personal buyer at any retailer checked, so the actual purchase is always the user's own click on the cited retailer link; this was never a gap a connector could close.

Google PageSpeed Insights

The real performance-measurement API /site-speed (#94) uses for before/after scores. Confirmed live 2026-09-08: a keyless call to pagespeedonline.googleapis.com/pagespeedonline/v5/runPagespeed returns HTTP 429 (quota_limit_value: 0 for the default per-project daily quota) -- a Google Cloud API key is required even though the API itself has a generous free tier once one exists.

Without it: /site-speed's Step 2 code fixes still deliver in full; the before/after measurement (Steps 1 and 3) holds until a key is connected -- never a guessed score.

Bright Data (web-data platform)

One of three named data vendors for /lead-list-builder's public lead datasets and scraping infrastructure, under Bright Data's terms and the target platform's terms.

Without it: No live scrape or vendor dataset pull; filter capture and output schema still deliver. needs-connector: brightdata recorded.

Apify (web-data platform)

Second named data vendor — marketplace of pre-built Actors for Instagram/Facebook/LinkedIn/web data, billed by compute unit plus proxy usage.

Without it: Same gap as Bright Data — needs-connector: apify recorded.

PhantomBuster (web-data + account-automation platform)

Third named data vendor, metered by execution hours; also sells account-phantom automations that drive a user's own logged-in session (manual-fallback per compliance.md §3).

Without it: needs-connector: phantombuster recorded; no live scrape or account-phantom run.

Meta Graph API (Instagram professional accounts + Facebook Pages)

Meta's official API for a business's Instagram professional account and Facebook Page — the compliant path for /social-engagement and /dm-outreach ahead of any third-party tool.

Without it: No like/comment/share or DM through the compliant official path; falls to manual-fallback or needs-connector: meta.

Meta Marketing API (paid ads)

Meta's official API for creating and managing Meta/Instagram ad campaigns (/act_<id>/campaigns, /adsets, /ads) -- distinct scope from the Meta Graph API row (organic DMs/engagement).

Without it: setup/plan still deliver the full structure/calendar; launch holds at needs-connector: meta and nothing spends.

Google Ads API (paid ads)

Google's official API for creating and managing Search/Display/Performance Max campaigns via CampaignBudgetService + CampaignService, batched through GoogleAdsService.Mutate with temporary resource names.

Without it: setup/plan still deliver in full; launch holds at needs-connector: google_ads.

LinkedIn official API

LinkedIn's developer platform: self-service Open Permissions (sign-in, the user's own posting/commenting/liking) plus gated Marketing/Community-Management APIs. Confirmed live 2026-09-08: does not send connection requests, does not send member-to-member DMs, does not search arbitrary member profiles. SNAP (Sales Navigator partner program) is closed to new partners.

Without it: Structural gap, not a missing key: /lead-list-builder mode linkedin and /dm-outreach mode linkedin stay needs-connector (data vendor) / manual-fallback (send) regardless of this connection.

Instantly.ai (cold/mass email sending)

Mailbox warm-up, sending-domain rotation, sequence builder, and deliverability/reply-tracking platform for cold outbound — distinct from Resend (transactional only).

Without it: Sequence copy and compliance checklist still deliver; no mailbox warm-up, live send, or real reply/deliverability numbers. needs-connector: instantly recorded.

Clerk (platform sign-in)

The authentication provider the platform's own web app uses for sign-in (email + Google + GitHub OAuth) and its owner/admin/member roles.

Without it: Nothing locally — with CLERK_SECRET_KEY unset the platform runs its test auth provider and every session is the fixture tenant. A real deployment cannot sign anyone in.

Neon (Postgres)

The platform's managed Postgres (DATABASE_URL).

Without it: Nothing locally — with DATABASE_URL unset the platform runs PGlite in process behind the same schema and migrations. A deployment loses durability across restarts and cannot run more than one process.

Upstash (Redis)

The Redis behind the platform's BullMQ queue and its run-log pub/sub (REDIS_URL).

Without it: Nothing locally — with REDIS_URL unset the platform runs an in-memory queue implementing the BullMQ subset the worker uses. A deployment loses queue durability and cross-process streaming.

Railway (worker + comms host)

The Docker host for apps/worker and apps/comms — long-running services an agent run outlives a serverless function on. Fly.io is the documented alternative.

Without it: Platform-mode runs. Claude Code mode is unaffected — it runs on the user's own machine and Claude account.

SHAI_ENCRYPTION_KEY (a key you generate)

The 32-byte key the platform seals every stored credential with (AES-256-GCM).

Without it: Storing any credential at all: the layer refuses the write rather than falling back to plaintext.

Higgsfield

The video-generation provider the Contract B squad uses for the routes docs/higgsfield-capabilities.md records.

Without it: The Higgsfield-only generation routes; every other stage of an edit still runs.

Slack

Where SHAI lives in Slack (Contract C item C20): @SHAI in channels, DMs, threads and the Agents surface, approvals as buttons that resolve the same approval row the dashboard, SMS and voice resolve, files and page links posted back, and scheduled tasks delivered to a channel. Also the workspace /chat-agent-builder mode slack (#89) posts into.

Without it: @SHAI reaches nothing, no approval can be pressed in Slack, and no task can be delivered to a channel. The dashboard, chat, SMS and voice are unaffected and every approval is still decidable in all of them.

Microsoft Teams

Where SHAI lives in Microsoft Teams (Contract C item C21): @SHAI in channels and group chats it has been added to, direct messages, approvals as Adaptive Cards that resolve the same approval row the dashboard, SMS, voice and Slack resolve, files and page links posted back as links, and scheduled tasks delivered to a conversation. The same surface as Slack, in the other place a team already talks.

Without it: @SHAI reaches nothing in Teams and no approval can be pressed there. The dashboard, chat, SMS, voice and Slack are unaffected and every approval is still decidable in all of them.

Discord

Where SHAI lives in Discord (Contract C item C22): /shai in a channel it has been invited into or in a direct message, approvals as buttons that resolve the same approval row the dashboard, SMS, voice, Slack and Teams resolve, files and page links posted back as links, and scheduled tasks delivered to a channel. Every reply is ephemeral by default, because a Discord server is usually a room full of people who did not ask.

Without it: @SHAI reaches nothing in Discord and no approval can be pressed there. The dashboard, chat, SMS, voice, Slack and Teams are unaffected and every approval is still decidable in all of them.

Stripe (optional, Phase 7)

The payments provider the one question deferred (line 5: no Stripe in v1).

Without it: Nothing in v1. "Cash collected" stays honestly unavailable in /ads-metrics and /outreach-metrics for want of a payments connector.

Google Search Console API

Google's own API for a site's search performance — the real data /seo (#92) reads instead of an invented ranking figure.

Without it: Live query/impression/position data; the rest of an SEO pass still runs.

Cutroom (standalone video editor, external product)

The standalone video-editor application built in its own private repo (Contract B §4b, mode BOTH) — not part of this platform or this monorepo, shares no code, data, or client folders with either. Listed here so a tenant sees it exists; nothing in this platform calls it.

Without it: Nothing in this platform. The six OPERATE editing skills (/new-edit and the rest) already run the video-editor squad here, on the file-based EDL; Cutroom is a separate product for the same editing surface, not this platform's dependency.

Composio (managed OAuth connections)

The integration platform behind SHAI's one-click connections: it runs the OAuth hop for 1,500+ apps, holds the refresh token, and executes an action on the connected account's behalf. It is the platform's own connector rather than a per-skill one — the owner sets one key on the deployment and every tenant then connects their own accounts through it, per business. The five tools with no catalog app (GoHighLevel's agency API, Twilio, Higgsfield, OpenArt, cutroom) keep the pasted-key path, which is unchanged.

Without it: Nothing that works today stops working: every tool is still connected by pasting its key in Setup, which is how all 33 rows here have been connected since Phase 5. What is missing is the one-click OAuth path — a non-technical owner has to find and paste an API key for each app, which is the step they most often stall on. GET /api/healthz says "no provider configured" in words.

Home Assistant (the user's own smart-home hub)

The open-source home-automation hub a person runs on their own hardware, and the one hub through which every brand they already own is reachable. Its REST API (states, service calls, history) is authorized with a long-lived access token the user creates on their own profile page. The recommended path for /smart-home: connect the hub, not each brand.

Without it: Every read and every command parks with needs-connector: home-assistant (or smartthings in its place); /smart-home still writes its schedule proposals and approval items and says in one line what to connect.

Samsung SmartThings (the second smart-home hub)

Samsung's smart-home cloud and hub. Its public REST API lists devices, reads state, sends commands and runs scenes, authorized with a personal access token the user issues on their own Samsung account with the scopes they choose. A PAT issued since 30 December 2024 expires after 24 hours, and free API access ends in October 2026 (a US$4.99/month personal plan is announced).

Without it: Reads and commands park with needs-connector: smartthings when home-assistant is not connected either; nothing else stops.

Google Nest (Smart Device Management API)

Google's official Device Access API for a person's own Nest thermostats, cameras, doorbells and displays: real, documented and user-authorizable, but only on the user's own Device Access project (a one-time US$5 registration), through an OAuth client in the user's own Google Cloud project, and for personal use only. Manual-fallback today: the platform runs no OAuth flow against a user-supplied client yet. Not on the owner's integrations list, so no /integrations page.

Without it: Direct Nest reads and commands park as a manual-fallback unit with the row's checklist; the same devices work through the user's own Home Assistant Nest integration if they have set it up there.

Amazon Alexa

Amazon's voice assistant and Echo devices. Confirmed live 2026-09-20: Amazon publishes no consumer-authorizable API through which a third party can list, read or control the devices in a person's Alexa account or run their routines — every documented path runs the other way (Alexa calls a device maker's add-on; routine custom triggers are an enrol-by-e-mail developer preview; Smart Properties is partner-only). Password-based community bridges are excluded under the compliance rules.

Without it: Nothing that Home Assistant or SmartThings cannot do — /smart-home reaches Alexa-visible devices through the hub the user exposes to Alexa, and routines the user creates in the Alexa app keep running; SHAI does not fire them.

Ring (doorbells, cameras, alarm)

Amazon's Ring devices. Confirmed live 2026-09-20: Ring now has an official Partner API at api.amazonvision.com (devices, status, event history, WHEP live video, snapshots, signed webhooks; GA 2025-04-21), but it is reachable only through an app registered on Ring's developer portal by an identity-verified developer — a private app for up to ten accounts or a certified public one — which the account holder then authorizes inside the Ring app by OAuth. No key a person can paste; US-only; the linked account needs a paid Ring plan or a trial. SHAI holds no registered Ring app, so no adapter is connectable today. Not on the owner's integrations list, so no /integrations page.

Without it: 'Who is at the door' is answered by the Ring app, the Ring Alexa skill or IFTTT, not by SHAI; nothing else stops.

AgentMail (SHAI's own email address)

An email inbox API for agents, self-serve on an API key (am_..., Console -> API Keys). At connect time the platform creates one inbox for the tenant on the tenant's own key and registers the inbound webhook, storing both on the connection row; the comms hub then delivers approvals and needs-you items by email from that address with the SMS ladder's wording plus the AI disclosure, and a YES / NO reply decides the approval exactly as by text. A SHAI-native adapter (inboxes.create, messages.send, messages.list, webhooks.create) plus an official OAuth MCP server. Not on the owner's integrations list, so it has no /integrations page.

Without it: Nothing: the ladder is platform chat -> SMS -> call exactly as before, and a tenant with no AgentMail row is byte for byte as today.

RevenueCat (app subscription revenue)

The subscription backend for mobile apps: overview metrics (MRR, active subscriptions, revenue last 28 days), revenue by date range, charts (actives, churn, trials, LTV), customers and subscriptions, through a self-serve REST v2 secret key with granular read permissions, plus an official OAuth MCP server. A SHAI-native read-only adapter; an optional read of app revenue in /forecasting and /scaling-plan. Not on the owner's integrations list, so it has no /integrations page.

Without it: Nothing: both skills use master.md's numbers as before and mark the app-revenue line unavailable - connect RevenueCat.

Opus Clip (viral clips - second opinion)

Long video in, short clips out. A self-serve organization API key (Pro plan and above) on api.opus.pro/api: clip projects, uploads, exportable clips with titles/hashtags/ranges, collection export, transcripts; plus an official OAuth MCP server. A SHAI-native adapter behind /build-cut's optional clip-finder route - a second opinion from the user's own Opus project; SHAI's own picks stay the default and free. The virality score has no documented REST field and stays needs-probe. Not on the owner's integrations list, so it has no /integrations page.

Without it: Nothing: /build-cut's own Find Viral Clips is the default.

VTurb (VSL hosting - analytics read-back)

The VSL video host and player. Its ONE public customer API is the read-only Analytics API (analytics.vturb.net, X-Api-Token + X-Api-Version: v1): players, quota, session stats, play rate, pitch retention, conversions, revenue, traffic origin, A/B comparison groups. No upload, embed-code or player-settings endpoint exists - those are dashboard steps handed over as manual-fallback units. A SHAI-native read-only adapter; /vsl-script reads hosting analytics back through it. Not on the owner's integrations list, so it has no /integrations page.

Without it: Nothing: the script package delivers in full and the read-back section says unavailable - connect VTurb.

Exelo (white-label AI phone receptionists)

A reseller portal for AI phone receptionists (XRAY scans, deployed lines, recordings and summaries). Its own llms.txt, read 2026-09-20, states "There is no public API and no MCP endpoint - Exelo is an authenticated partner portal"; /api, /docs, /developers and /openapi.json answer 404. No adapter is built; the guide row carries the click-by-click portal checklist as a manual-fallback unit and SHAI never scripts the portal. It overlaps /voice-agent-builder. Not on the owner's integrations list, so it has no /integrations page.

Without it: Nothing: no skill routes to it.

Arcads (AI actor ads)

UGC-style ads with AI actors - script, actor, voice, generated talking-actor video - through a documented OpenAPI (HTTP Basic with a Client ID / Secret the customer generates under Settings > Public API), PLAN-GATED: the Terms in force since 2026-08-21 restrict the API to a Customized offer (Pro, via sales). A SHAI-native adapter; an optional, quote-first route in /ad-creatives. Not on the owner's integrations list, so it has no /integrations page; connectable on /connections from this row.

Without it: Nothing: /ad-creatives' image route and its /new-edit handoff run as before; on a Starter/Creator plan the card says the API is not on your plan and stores nothing.

Creatify (AI video ads)

AI video ads - a video from a product URL, an AI avatar clip from text or audio, AI shorts from a script, custom-template renders - through a self-serve API-key pair (X-API-ID / X-API-KEY, pasted colon-joined) that needs an API subscription, plus an official OAuth MCP server. A SHAI-native adapter; an optional, quote-first route in /ad-creatives. Not on the owner's integrations list, so it has no /integrations page; connectable on /connections from this row.

Without it: Nothing: /ad-creatives' image route and its /new-edit handoff run as before.

HeyGen (avatar video)

Avatar video from a script - HeyGen's stock avatars, a photo avatar, or a digital twin of a real person - through a self-serve API key (X-Api-Key) billed to a prepaid API wallet, plus voices, translation and lipsync. A SHAI-native adapter (avatars.read, voices.read, video.create, video.status, video.fetch) behind the likeness-consent gate: no render before a `likeness` row in the client's rights.md and the consent sentence on this connection; every output lands with aigc: true. Also an OAuth MCP server (trial-scale). On the owner's integrations list (entry 1484), so it keeps its /integrations page.

Without it: Nothing stops: the avatar slot parks needs-connector: heygen with its manual fallback, exactly as an unfunded OpenArt slot does.

Ayrshare (social publishing and scheduling)

One API-key self-serve API that publishes and schedules to fourteen networks including TikTok, Instagram, Facebook, YouTube, LinkedIn, X and Pinterest, with per-client profiles on its Launch/Business/Enterprise plans. The route that lets SHAI own upload -> edit -> caption -> schedule end to end; a SHAI-native adapter (post.create, post.schedule, post.delete, profiles.read, history.read) plus Ayrshare's official hosted MCP server at https://api.ayrshare.com/mcp. On the owner's integrations list (entry 528), so it keeps its /integrations page.

Without it: Nothing stops: /publish-edit delivers files plus metadata as today and TikTok stays on the Higgsfield route; /organic-content-creator posts through GHL's Social Planner as before.