- Updated
- Reading
- 7 min
- By
- Anlyon Team
Agent auth platforms compared, 2026: Arcade, Composio, Nango, Scalekit, Pipedream, Auth0, Paragon, Merge and Anlyon
Nine ways to let an AI agent act in your users' accounts, compared on who holds the token, per-user limits, end-user approvals, receipts and erase.
- comparison
- end users
- agent auth
- oauth
- arcade
- composio
- nango
Every platform below connects your AI agent to your users' own accounts and keeps the tokens out of your app. They differ on what happens after that: whether a write is limited per user, approved by that user on the exact request, and recorded with a receipt you can check.
If you need hundreds of integrations on day one, pick one of the large catalogues. If your agent writes in a handful of your users' tools, and a wrong email, a closed deal or a duplicate record there is your problem, that second half is what Anlyon is for. Many teams will want both.
Every fact about another product on this page comes from that vendor's own docs or site, with the date we read it. Where we looked for something and did not find it, the cell says "not found" and nothing stronger. Each vendor has its own page with sources under every cell, linked below.
The short answer
| If you need | Look at |
|---|---|
| The largest catalogue of tools | Pipedream Connect, Arcade, Composio |
| Open source integration infrastructure you can self-host | Nango |
| Agent auth inside an identity provider you already use | Auth0 for AI Agents, Scalekit |
| Embedded integrations plus agent actions in a B2B SaaS product | Paragon ActionKit, Merge Agent Handler |
| A limit per user, the user's own approval on the exact request, and a graded receipt on every write | Anlyon |
What does an agent auth platform have to do?
Connecting the account is step one. When your agent goes from reading a user's account to writing in it, three questions arrive in the same week:
- Whose account is it? Each user connects their own HubSpot, Slack or Linear. Someone has to run consent, store tokens, refresh them, revoke them and delete them when the user leaves. Every platform here does most of this. See what per-user OAuth takes to build.
- How much may the agent do there? "Each user's assistant may make 20 CRM changes a day" is a per-user limit on writes, not a rate limit on requests and not a token budget. See per-user limits.
- Did the user say yes, to this exact request? A user approving "send an email" is not the same as approving this email, to these people. See approvals your users decide in your app.
Then a fourth, after the fact: what did the agent do for this user, and did it land? See how to query a user's actions and receipts.
The full comparison
Checked 2026-11-02, except Arcade and Composio (2026-10-24 for per-user access, 2026-10-03 for catalogue counts). Read each vendor page below for the source of every cell.
| Per-user tokens held and refreshed | Per-user limit on writes, set by you | End-user approval bound to the exact request | Receipt per write with provider read-back | User bound outside the model | Erase a user in one call | Catalogue | |
|---|---|---|---|---|---|---|---|
| Anlyon | Yes | Yes, in writes, money or a declared unit, reserved before the call | Yes, decided in your app, digest rechecked before dispatch | Yes, graded confirmed to denied | Yes, forUser on your server, no user field in tools | Yes | 5 by sign-in, about 27 by key |
| Arcade | Yes | Limits per org and project, shared by every user in the scope | Not found (approval is per OAuth scope) | Not found | Your app passes the user id; Contextual Access hooks apply rules per user | Not found | 7,500+ tools |
| Composio | Yes | Not found | HITL listed on the enterprise page; configuration not found | Not found | Every tool is scoped to a user_id | Not found | About 1,590 toolkits |
| Nango | Yes | Not found | Not found | Executions logged; graded read-back not found | Agent sessions fix the connection at creation | Delete per connection | 1,000+ APIs |
| Scalekit (AgentKit) | Yes | Not found | Not found for AgentKit | Call metadata logged; read-back not found | User id or per-user MCP session token | Delete per connected account | 614 connectors |
| Pipedream Connect | Yes | Per-user rate limits on Connect API requests | Not found | Not found | external_user_id set by your app | Yes | 10,000+ tools |
| Auth0 for AI Agents | Yes (Token Vault); your agent calls the API with the token | Not found | CIBA approves a binding message and scope; your API checks the rest | Not found | Token exchange from the signed-in user | Deleting a connected account does not revoke provider tokens | 35+ apps plus custom OAuth |
| Paragon ActionKit | Yes | Not found | Not found | Tool logs; read-back grade not found | User token signed by your backend | Disconnect per integration | 59 integrations, 1000+ actions |
| Merge Agent Handler | Yes | Per-minute rate per user, "not as a self-serve setting" | Admin approval of tool access; per-call end-user approval not found | Tool call logs; read-back grade not found | User-scoped access key checked on every call | Delete Registered User | 190+ connectors |
"Not found" means we looked in that vendor's docs on the date above and did not find it. It does not mean the product cannot do it. If one of these cells has gone stale, tell us at support@anlyon.com and we will correct it.
What Anlyon does differently
Anlyon makes the call itself. Your agent names an action, your server names the user, and Anlyon holds that user's token, applies the user's limit and approval, calls the provider and returns a receipt.
Without Anlyon agent -> the user's token in your process -> provider API
With Anlyon agent -> named action -> Anlyon -> provider API
Because Anlyon owns the call, it can enforce things a token broker cannot:
- A limit per user, counted before the call. One rule, such as 20 HubSpot changes a day, is counted for each user separately. The 21st change is refused before it reaches HubSpot, and no other user is affected.
- The user's yes, on the exact request. A policy with
decidedBy: "end_user"sends the approval to that user, in your app. The approval is bound to a SHA-256 digest of the request, and Anlyon recomputes it before dispatch. What the user approved is what runs. - A receipt with a grade.
confirmedmeans a read-back of the provider's own record matched.acknowledgedmeans the provider accepted it and nothing read it back.unknownmeans no usable response, and Anlyon does not send it again. - The server names the user.
anlyon.forUser(session.user.id)binds the client. The tools the model sees have no user field, and the client cannot be switched. See can a prompt make your agent act as another user? - Connect, then confirm. A connect link works once, for ten minutes, and your server confirms the connection for the user in its own session, so a forwarded link cannot attach someone else's account.
- Erase in one call.
endUsers.erase(userId)revokes and deletes connections, cancels pending approvals and clears limit counters. See deleting a user from your AI agent.
import { Client } from '@anlyonhq/sdk';
const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });
// Your session names the user. The model never does.
const user = anlyon.forUser(session.user.id);
const result = await user.actions.invoke('hubspot-update-deal-stage', {
dealId: '1234567',
dealstage: 'closedwon', // a policy can send this to the rep to approve first
});
Where Anlyon is not the right fit today: the list is short (sign-in for HubSpot, Slack, Linear, GitHub and Notion, plus about 27 integrations by the user's own key such as Attio, Asana, Jira, Zendesk and Pipedrive; Gmail, Google Calendar and Salesforce are on the way), end users are supported over the HTTP API and both SDKs but not yet over MCP or the CLI.
Each comparison in detail
- Arcade and Composio
- Nango
- Scalekit AgentKit
- Pipedream Connect
- Auth0 for AI Agents and Token Vault
- Paragon ActionKit
- Merge Agent Handler
- Anlyon vs building it yourself
Using more than one
The common setup is a large catalogue for reads and the long tail, and Anlyon for the writes that need a limit, an approval and a receipt. A user connects each product separately; connections and tokens are not shared between them. Start with how to let your AI agent act in your users' accounts, or open the console and send your first user a connect link.
Frequently asked questions
- What is an agent auth platform?
- An agent auth platform runs the OAuth flow for each of your users, stores and refreshes their tokens, and lets your AI agent call that user's tools without your app building per-user OAuth. Arcade, Composio, Nango, Scalekit, Pipedream Connect, Auth0 for AI Agents, Paragon ActionKit, Merge Agent Handler and Anlyon all do a version of this.
- Which agent auth platform has the most integrations?
- As of their own pages in October and November 2026, Pipedream Connect lists 10,000+ tools from 3,000+ APIs, Arcade lists 7,500+ tools, Composio about 1,590 toolkits and Nango 1,000+ APIs. Anlyon has a shorter list: sign-in for HubSpot, Slack, Linear, GitHub and Notion, and about 27 integrations by the user's own key.
- Which agent auth platform lets me limit what the agent does for each user?
- Anlyon lets you set a limit per user on the writes themselves, such as 20 CRM changes a day or an amount of money, reserved before each call. Pipedream Connect offers custom per-user rate limits on Connect API requests, and Merge sets a per-minute rate per user that is not self-serve. For the others we did not find a per-user write limit you set in their docs as of 2026-11-02.
- Can my users approve an AI agent's action before it runs?
- With Anlyon, a policy with decidedBy end_user sends the approval to the user the call was made for, your app shows it, and the approval is bound to a digest of the exact request. Auth0's CIBA flow asks the user to approve a binding message and scope, and leaves checking the rest of the request to your API.
- Can I use Anlyon together with Arcade, Composio or Nango?
- Yes. Keep a large catalogue for the long tail of read-mostly tools, and route the writes where a wrong email, a closed deal or a refund would be your problem through Anlyon, where each one gets a per-user limit, the user's approval and a receipt. Connections are not shared between the products, so a user connects each one separately.
