Vai al contenuto

Questa pagina non è ancora disponibile nella tua lingua — stiamo mostrando la versione in inglese.

Your tools, connected. Only as far as they need to go.

Sixteen live integrations. Every one of them asked for the smallest permission that does the job — and we can show you the ones we gave back.

Most AI tools ask for everything and call it convenience. We went the other way: nine Google permissions down to five, mail.google.com dropped entirely, full Drive access retired in favour of per-file access. Below is the whole catalogue, and then the receipts.


The catalogue

Google & Microsoft

IntegrationWhat it unlocks
GmailMaya reads, triages, drafts, replies, schedules sends, reschedules and cancels them — and attaches files. She's the only agent with your inbox.
OutlookThe same email work through Microsoft Graph. Connect Gmail and Outlook, pick a default, and each conversation locks to one mailbox so a reply never leaves the wrong account.
Google Calendar14 calendar tools: list, search, read, create, update and delete events, RSVP to invitations, check free/busy, and spin up dedicated calendars — Ashley's Content calendar, Maya's Email calendar, a Company calendar.
Google Drive4 tools: open Google's own Picker, read, save, update. Agents only ever touch the files you personally picked. Lucy can export a document straight to a Google Doc.

Social

IntegrationWhat it unlocks
InstagramConnect with your Instagram Business account — no Facebook Page required. Publish posts, reels and carousels of up to 10 images, read your profile and follower count, pull insights.
FacebookConnect a Page. Publish posts up to 10 images, read engagement, pull Page insights.
LinkedInPost to your personal feed.
LinkedIn PageA separate connection for the company Page you administer, with a picker if you run several — it unlocks your Page's real follower, impression and click numbers. Posting still goes out from your personal profile; Page publishing isn't live yet.
XPost with image uploads.

Productivity

IntegrationWhat it unlocks
Slack5 tools: list channels, read a channel, read a thread, post a message, add a reaction. Posting is confirmation-gated.
Notion7 tools: search, read page content, create and update pages, append or delete blocks, add a row to a database. You choose which pages Notion shares — we can't ask for more.
TrelloThe connection is live. Agent actions on your boards aren't shipped yet — see the FAQ.

E-commerce & payments

IntegrationWhat it unlocks
ShopifyRead tools only: shop summary, recent orders, a single order, and your catalogue with prices and inventory. Connect by OAuth — type your shop URL and authorize on Shopify.
WooCommerceConnect with a Consumer Key and Consumer Secret.
PrestaShopConnect with an API key.
Stripe4 read tools: revenue summary, recent charges, available and pending balance, recent payouts (up to 50 rows each).

Connect several stores across several platforms at once — the connection is keyed per store, not per platform.

Blake, connect the dots: pull my Shopify orders from the last 30 days against my Stripe payouts and tell me where the gap is.

Coming soon

OneDrive · Google Business Profile · TikTok · WhatsApp Business

These four are marked coming-soon in the app and have no connect flow. The blocker is platform approval — a TikTok Content Posting audit, Meta business verification, a Google quota request — not our code. We'd rather show you a grey card than a broken button.


The receipts: scopes we asked for, and scopes we gave back

Anyone can write "we only request what we need". Here is what that actually cost us.

Google: nine scopes down to five

What changedWhy it matters to you
mail.google.com — dropped entirelyThe god-scope. Full, irreversible mailbox control. We don't have it.
gmail.send — droppedRedundant. gmail.modify already covers sending, so we removed the second ask rather than keep a scope we could point at.
drive.readonly — retiredIt let us read every file in your Drive. We replaced it with drive.file + the official Google Picker: you pick a file, we get access to that file. Nothing else in your Drive is reachable.

What's left is five: gmail.modify, email, profile, calendar, drive.file. gmail.modify is the only restricted scope we hold.

Why Calendar is the full scope, honestly

Google classifies the full calendar scope as Sensitive, and we do request it. We used to hold the narrower calendar.readonly + calendar.events pair. Creating a dedicated calendar — the thing that makes "put Ashley's content plan on its own calendar" work — requires the full scope, so we merged. That's a real trade we made, and you should know we made it.

Scopes we were offered and refused

ProviderRefusedWhat it would have given us
LinkedInr_emailaddressYour LinkedIn email address. We don't need it.
Slackfiles:readYour workspace's file library.
TrelloaccountYour account details.
Xdm.write, follows.write, like.writeSending DMs, following accounts, liking posts as you. Never.
Instagraminstagram_business_manage_comments, instagram_business_manage_messagesYour comments and your DMs.
Facebookpages_messaging, business_management, pages_read_user_contentPage inbox, business assets, user-generated content.

Shopify is read-only by grant

All seven Shopify scopes are read_*: read_products, read_orders, read_inventory, read_customers, read_price_rules, read_discounts, read_locations. Zero write scopes requested. No agent can change your store, because the grant itself doesn't permit it.

Stripe is read-only by construction

We're going to be precise here, because the precise version is less flattering and more useful.

Stripe puts its read_only OAuth scope behind a support request. The ungated option is read_write, and that's what the connect flow requests. So the grant is not read-only.

The implementation is. Our Stripe client exposes exactly four tools — get_revenue_summary, list_recent_charges, get_balance, list_payouts. There is no charge, refund, or payout-creation code path anywhere in Unyo. It doesn't exist to be called, hallucinated into, or exploited. When Stripe enables read_only for us, narrowing the grant is a one-line change.

The rule we hold ourselves to

Adding a single new scope isn't a code change here. It requires a Privacy Policy update, a Google Console data-access declaration, a security questionnaire if the scope is restricted, and re-verification. That friction is deliberate. It's why the scope list shrinks instead of creeping.


What happens to your tokens

  • Encrypted at rest, verified at the byte level. As of 16 July 2026, all 17 populated OAuth token columns are AES-256 encrypted. Zero plaintext tokens exist.
  • The master key is unreachable by any client. It lives in a singleton table with a FOR ALL USING (false) policy, readable only by a privileged server function.
  • Never logged, never leaked. A token is decrypted transiently to make one outbound call to the provider, then dropped. It never enters a log, a job payload, an error message, or a response.
  • Row-level security on every connection. 109 of 109 public tables have RLS, across 291 policies, verified live on 16 July 2026. Your connection rows are yours.
  • CSRF-signed state. Meta, Slack, Notion, LinkedIn, X, Shopify, Stripe and Trello all carry an HMAC-SHA256-signed state with a 10–15 minute expiry; the Meta flows verify it with a timing-safe comparison. The Google flows bind the callback to your authenticated session instead — the exchange rejects any state whose user id isn't the signed-in user, and expires it after 15 minutes. Outlook adds PKCE and validates the identity token's nonce against the state nonce, so an identity token can't be replayed across sessions.
  • Our Meta publishing calls carry an appsecret_proof — an HMAC of the token with our app secret. It's a Tier 2 audit requirement most integrations skip.

An independent CASA Tier 2 dynamic security test (TAC Security, 6 May 2026) returned 0 Critical, 0 High, 0 Medium findings.

Where we are with Google

Google OAuth verification and the CASA Tier 2 audit are in progress, not complete. We're not going to put a badge on this page that we haven't earned yet. The scope work above is what the process is for — and we did it before anyone asked.


Connecting is where most tools waste your time

Connect from wherever you hit the wall. Ask Ashley for an Instagram post before Instagram is connected and you don't get an error — you get a Connect button that fires the OAuth flow the instant you land. Twelve providers are wired for one-click connect this way.

The run resumes itself. This is the part that matters. When an agent needs a connection it doesn't have, it doesn't fail and it doesn't lose your work: it pauses with a Waiting for connection notice, holds the exact pending action, and replays it the moment you're back. You land back in the conversation you left. You retype nothing.

Connections that heal themselves. Meta tokens roll on a daily job. If a refresh genuinely fails, the card flips to Reconnect required instead of failing silently in the background. If you revoke Unyo from Meta's own settings, the card updates itself with no page refresh.

You always know who you're connected as. Your Gmail address, your @handle, your Page name, your LinkedIn organization, or whether Stripe is in Live or Test mode — shown on the card.

Disconnect any integration, any time. One button on the card.

What Disconnect does and doesn't do — read this one

Unyo has one Google grant shared across Gmail, Drive and Calendar. Google's revoke endpoint kills the entire grant. So if you disconnect Drive, we deliberately do not call revoke — doing so would silently break your still-connected Gmail and Calendar.

Disconnecting removes the connection and our access path on our side. To revoke Unyo at Google itself, use Google's permissions page. Deleting your Unyo account does revoke at Google, because there it's the right thing to do.

Instagram is the other honest caveat: Meta exposes no programmatic revoke for it. Disconnect removes the connection, and we hand you the direct link to finish the job at Instagram. We'd rather tell you that than let you assume.


The boundary is the feature

Maya is the only agent with your inbox. Not by prompt — by runtime access control. Ashley literally cannot see an email tool; it's never mounted into her session. Ask her to check your inbox and she can't, because there's nothing there to call.

The same logic runs through the whole catalogue:

  • Stripe is Blake's alone. No other agent can reach your payments data.
  • Shopify reaches Sam, Alex and Blake — the agents who need orders and catalogue.
  • 17 irreversible actions are confirmation-gated by database configuration, not by a prompt an agent could talk itself out of. Sending an email, scheduling one, deleting a calendar event, posting to Slack.
  • Nothing publishes or sends by voice. The voice agent can draft the post. You tap the card. That boundary is deliberate and it isn't configurable.
  • Automations draft, never send. Unattended send does not exist in Unyo.

What's connected?

Any agent will answer that one with a live status list — provider, account label, connected or expired. Never a token.


FAQ

Do you read all my email?

Maya operates on your mailbox through gmail.modify — read, compose, send, and labels. We dropped mail.google.com, the full-control scope, entirely. And Maya is the only agent with any email tool mounted at all: the other nine can't reach your inbox, at the runtime level, not just by instruction.

Can agents see everything in my Google Drive?

No — and this is one we deliberately gave up. We used to hold drive.readonly, which reads every file you own. We retired it for drive.file, which grants access only to files you explicitly pick through Google's own Picker. Search happens inside Google's UI, not in our code. Files you don't pick are unreachable.

Can Unyo charge my customers or move money through Stripe?

No. There is no charge, refund, or payout-creation code in Unyo — the capability doesn't exist to be misused. The Stripe connection exposes exactly four read tools: revenue summary, recent charges, balance, and payouts.

The honest detail: Stripe gates its read_only OAuth scope behind a support request, so the connect flow requests read_write. The grant is broader than our implementation. We're read-only by construction, not by scope, and we'd rather say that plainly than let you find it later.

Can an agent change my Shopify store?

No, and here the grant itself stops it. All seven Shopify scopes are read_*. We requested zero write scopes, so no write is possible even in principle.

Why is Trello listed if agents can't use it?

Because the connection is real and shipping the button before the tools would be the dishonest order. You can connect Trello today — the OAuth flow works — but the agent tool surface for boards isn't live yet, so no agent will create or move a card for you. When it ships we'll say so here. (We also refused Trello's account scope on the way in.)

Do I need a Facebook Page to use Instagram?

No. Unyo connects Instagram through Instagram's own Business Login — two independent apps, two separate flows. Most tools still force the old bundled path where Instagram is hostage to a Facebook Page. Connect either, both, or neither.

Can I connect two Gmail accounts?

Not today — Unyo stores one Gmail connection per user. You can connect Gmail and Outlook and choose a default; each conversation then locks to one mailbox so a reply never goes out from the wrong account.

What happens if a connection breaks mid-task?

The agent pauses instead of failing. You get a Waiting for connection notice, the exact pending action is held, and the moment you reconnect it replays — with a guard that makes sure you're never charged twice for the same step. You don't retype anything.

I connected Google Calendar a while ago and dedicated calendars don't work.

Disconnect and reconnect it. We merged two narrower calendar scopes into the full one to enable calendar creation, and existing grants keep their old, narrower permissions until you re-consent. We can't silently widen what you already granted — which is the correct behaviour, even though it means this manual step.

When do TikTok, WhatsApp, OneDrive and Google Business Profile arrive?

When the platforms approve them. TikTok's Content Posting API needs its own audit, WhatsApp's Cloud API needs business verification and approved templates, and Google Business Profile needs an access request to lift a quota. None of these are blocked on our engineering, and none of them will appear as a live card until they actually work.

What happens to my connections if I delete my account?

Every provider that offers a revocation API gets revoked, published websites are taken offline first, and every connection row is purged — around 80 tables, atomically. It completes even if a provider is unreachable.