All guides
Updated
Reading
9 min
By
Anlyon Team

Scalekit Agent Auth alternative: per-user limits and approvals

Scalekit AgentKit vs Anlyon, sourced and dated: 614 connectors and per-user tokens, against per-user limits, user approvals and graded receipts on writes.

  • comparison
  • end users
  • scalekit
  • per-user limits
  • approvals

Scalekit AgentKit connects your agent to your users' apps: each user authorizes once, Scalekit stores and refreshes the tokens, and your agent calls prebuilt tools across 614 connectors. Anlyon is for when that agent starts writing there, and each write needs a limit for that user, that user's own yes on risky steps, and a receipt that says what the provider recorded.

Pick Scalekit for breadth, a verified connection flow and self-hosting on an enterprise license. Pick Anlyon when the writes are the risk. The two fit together.

This is an Anlyon-authored comparison, not an independent review. Every fact about Scalekit comes from Scalekit's own docs or site, fetched on 2026-11-02, with the page linked. When we searched for "Scalekit Agent Auth", Scalekit's docs URL for it showed AgentKit, so this page uses that name. Where we looked and did not find something, we say so and nothing stronger.

What Anlyon adds on each write

Your server names the user. The agent names an action. Anlyon makes the call with that user's connection.

await ops.approvalPolicies.create({
  name: 'User approves closing a deal',
  matchKind: 'action',
  matchActionName: 'hubspot-update-deal-stage',
  condition: "input.dealstage == 'closedwon' || input.dealstage == 'closedlost'",
  effect: 'require_approval',
  decidedBy: 'end_user',
});

Moving a decision from your team to the user counts as loosening a control, so when this policy is created with an API key, the call throws SignOffRequiredError and the policy waits until a workspace admin approves it at error.signOffUrl. An admin can also create it directly in the console under Controls → Policies. An agent can never loosen its own guardrails.

With that policy in place, an agent that tries to close a deal for user 42 gets pending_approval back, and user 42 decides in your app. What Anlyon does around each call:

  • A limit per user, counted before the call. For example, 20 CRM changes per user per day, reserved before dispatch. Over it, the call is refused before anything reaches the provider. One user cannot use up another's. See per-user limits.
  • An approval the user decides, bound to the exact request. The approval is bound to a SHA-256 digest of the request, target, versions and preconditions. Anlyon recomputes it before dispatch and refuses on any difference. See end-user approval in your app.
  • A graded receipt per write. confirmed means a read-back of the provider's own record matched. acknowledged means accepted with no read-back. unknown means no usable response, and Anlyon does not resend.
  • The server binds the user. anlyon.forUser(session.user.id) cannot be switched to another user, and the tools given to the model have no user field. If your code feeds a user id from model output into forUser, that protection is gone.
  • Connect-confirm, on by design. Your server confirms each new connection from your own session. A flow started for another user is refused, so a forwarded link cannot attach someone else's account.
  • Erase in one call. anlyon.endUsers.erase(user.id) revokes connections at the provider where it supports that, deletes them, cancels pending approvals and clears limit counters.

What Anlyon does not have yet, once: a much shorter list. Users sign in to HubSpot, Slack, Linear, GitHub and Notion, and about 27 more tools connect with the user's own API key. Gmail, Google Calendar and Salesforce are not live yet. End users work over the HTTP API and the TypeScript and Python SDKs, not over MCP or the CLI yet. Anlyon is a small company.

What Scalekit does

All as of 2026-11-02, from Scalekit's own pages.

  • What it is. "AgentKit lets your AI agent act in third-party apps on behalf of each of your users." A user "connects their Gmail, Slack, Salesforce or GitHub account once through an authorization link" (overview).
  • Per-user model. "Your agent calls prebuilt tools such as gmail_send_message with that user's ID." The docs advise: "Pass a stable, hard-to-guess ID for each user." Over MCP, Scalekit offers "a Virtual MCP server URL, with a session token for each user" (overview). Read-only MCP tokens are documented too (read-only tokens).
  • Catalogue. "614 connectors." We did not find a total tool count (overview).
  • Tokens. "Scalekit stores and refreshes their tokens" and "your code never handles OAuth tokens." Credentials are encrypted with AES-256-GCM under a key per environment, and you can hold the master key in your own Google Cloud KMS. By default Scalekit does not return raw tokens (security).
  • Connect verification. User verification "confirms that the user who completed the OAuth consent is the same user your app intended to connect," and "stops an authorization link from activating the wrong account, for example when a link is forwarded or phished." The docs recommend a custom verifier in production and note "new environments start with None" (user verification).
  • Approvals. We did not find an approval step for AgentKit tool calls as of 2026-11-02. Scalekit's Agent Gateway, a separate product for your team's AI clients, lists "Approvals for sensitive actions" on paid plans; the page does not say who approves or what is bound (Agent Gateway plans).
  • Rate limits. A 429 RATE_LIMITED is "the app's rate limit or quota," and "each app sets its own limits, per user or per OAuth app" (errors). We did not find a limit you set per user on tool calls as of 2026-11-02.
  • Logs. "Tool call logs record the call's metadata, not its content," kept 90 days. Inputs and responses are not kept (security). Logs can stream to a SIEM (log streaming).
  • Deletion. Deleting a connected account "removes the user's credentials and authorization state" (connected accounts). We did not find a one-call erase of a user.
  • Self-hosting. "With an enterprise license, run AgentKit in your own infrastructure, on Kubernetes or Docker" (self-hosted).
  • Pricing. Free with 10,000 tool calls a month. Growth at $99 a month with 100,000 tool calls, then $0.50 per 1,000. Connected accounts are unlimited. Enterprise is custom (pricing).

Scalekit vs Anlyon, row by row

QuestionScalekit AgentKit (as of 2026-11-02)Anlyon
Who connects the accountEach user, once, through an authorization link (overview)Each user, through a connect link or the user's own API key. Your server confirms it
Where tokens live and who refreshes themScalekit, encrypted per environment, refreshed by Scalekit (security)Anlyon, encrypted in its own database, refreshed by Anlyon. Never returned to your code
Per-user limits on writesNot found as of 2026-11-02. 429s reflect each app's own limits (errors)Yes. Per user, reserved before the call, in writes, money or a unit you declare
Approval by the end user, bound to the exact requestNot found for AgentKit as of 2026-11-02. Agent Gateway lists approvals on paid plans (plans)Yes. The user decides in your app. Bound to a digest of the exact request
Receipt per write with provider read-backLogs keep call metadata, not content (security). A read-back receipt was not found as of 2026-11-02Yes. Graded confirmed, acknowledged, unknown, failed, refused or denied
Binding the user so a prompt cannot switch itYour agent passes the user's ID; MCP uses a session token per user (overview)forUser binds the user on your server. Tools have no user field
Connect verificationCustom user verifier, off by default (user verification)Server confirms every connection from your session
Erase a userDelete each connected account (connected accounts). One-call erase not found as of 2026-11-02One call: connections, pending approvals, counters. Kept records hash the user id
Catalogue size"614 connectors" (overview)Sign-in for 5 tools, about 27 by API key
Self-hostEnterprise license, Kubernetes or Docker (self-hosted)Anlyon runs as a hosted service
Pricing modelPer tool call, with a free tier (pricing)Per governed action. See pricing

Credit where it is due: Scalekit's user verification answers the forwarded-link problem directly, and it is worth turning on. The difference is the default. Anlyon's connection is not usable until your server confirms it.

When to choose Scalekit

  • You need connectors Anlyon does not have, including Gmail, Google Calendar and Salesforce today.
  • Your agent connects over MCP and you want a per-user session token there.
  • You need to run it in your own infrastructure on an enterprise license, or hold the encryption master key in your own KMS.
  • Your agent's writes are low stakes, or you will build limits and approvals in your own app.
  • Per-tool-call pricing with unlimited connected accounts suits your usage.

When to choose Anlyon

  • Your agent writes in your users' HubSpot, Slack, Linear, GitHub, Notion or an API-key tool such as Attio, Jira or Stripe.
  • Each user needs their own ceiling, enforced before the call, and you do not want to build the counters.
  • Risky steps need the user's yes in your app, and what they approved must be what runs.
  • You need to know, per write, whether the provider's own record matched.
  • You want one call that erases a user's connections, pending approvals and counters.

Using both

Keep Scalekit for the long tail of connectors and for reads. Route the writes that need a per-user limit and the user's approval, such as closing a deal in HubSpot or posting in a customer's Slack, through Anlyon.

Each user connects separately in each product. A Scalekit connected account is not shared with Anlyon, and an Anlyon connection is not shared with Scalekit. The limits, approvals and receipts on this page apply to calls made through Anlyon.

More: how to let your AI agent act in your users' accounts, agent auth platforms compared, and Anlyon vs Arcade and Composio.

Sources

All fetched 2026-11-02.

Frequently asked questions

Is there a Scalekit Agent Auth alternative with per-user limits?
Anlyon is one. Each of your users connects their own account, and every write your agent makes there is counted against that user's limit and reserved before the call. Over the limit, the call is refused before anything reaches the provider. Scalekit's connector list is longer, so some teams use both.
Scalekit AgentKit vs Anlyon: what is the difference?
As of 2026-11-02, Scalekit AgentKit connects your agent to 614 connectors on behalf of each user, stores and refreshes their tokens, and can verify the user who completed consent. Anlyon connects a shorter list and adds per-user control on writes: a limit before each call, the user's approval bound to the exact request, and a graded receipt read back from the provider.
Is Scalekit Agent Auth now called AgentKit?
Scalekit's agent auth docs URL showed AgentKit documentation when we checked on 2026-11-02, and the overview describes AgentKit as letting your AI agent act in third-party apps on behalf of each of your users. Check Scalekit's site for its current naming.
Can the end user approve an AI agent's action before it runs?
With Anlyon, yes. A policy can require the user the call was made for to approve it in your app, and the approval is bound to a SHA-256 digest of the exact request, so what they approved is what runs. We did not find an end-user approval in Scalekit's AgentKit docs as of 2026-11-02.

Let your agent act for your users, safely.

A few lines of server code, then send a user a connect link. Nothing to host.

$ claude mcp add --transport http anlyon https://api.anlyon.com/mcp