Skip to content
The AI Agent Factory

From personal worker to business worker

Approved by
Panaversity ·
13 min read

Keep the engine, build the layer

Keep Claude as the engine. Build a business layer around it. When the stakes rise, move the runtime from the consumer app to the API.

Here the business layer is an MCP server you own, secured by Better Auth, with records in Postgres on Neon. MCP is the open standard connectors use. Better Auth is a sign-in system. Neon hosts Postgres databases. This is one reference design, not a definition.

The runtime can be the Claude app, Claude Tag, Claude Managed Agents or the Claude Agent SDK. [Inferred] MCP keeps the business layer largely portable across them. Your rules, records and enforcement stay the same. Credentials, connection settings and approval requests need work for each runtime.

Four runtimes, one business layer. The Claude app (acts as you), Claude Tag (its own service accounts), Claude Managed Agents (hosted, in beta) and the Claude Agent SDK (self-hosted) all reach your MCP server. The server uses Better Auth for worker identity, checks approvals and allows one payment per intent. Below it sit Postgres on Neon, an approval page and business systems. A band says Code tab and Claude Tag sessions can run on self-hosted runners, though Claude Tag cannot use admin connectors there.

[Inferred] A project strengthens one person's worker, but it is personal in scope.1

The business layer: what to build

Better Auth on Neon handles sign-in and gives each worker its own keys. Postgres holds the records. Your MCP server enforces the rules. Token details are in Appendix: business-layer details.

RequirementWhat to buildBasis
Own identityA dedicated account or OAuth client (a registered app identity that can be given keys) for each worker, with narrow scopes. For example, it may propose payments but may not approve themThe OAuth tooling is vendor-documented.2,3 One client per worker is the inferred design
Durable stateTables for work items, approvals, payment intents and an audit log, using transactions and unique constraintsVendor-documented. The design is inferred
Enforced authorityMCP tools that check the approval record and the token's scopes before acting. No caller gets raw SQL (direct database commands). The reconciliation worker gets only tools such as record_status and propose_payment. execute_payment belongs to a separate caller: the payment officer, or a payment worker with only that scopeThe design is inferred
Human approvalA small approval page where a named person signs in and approves. The decision is written to Postgres. The review artifact only displays rowsThe design is inferred
Audit and operationsEvery tool call is logged with who, what, when, the result and the approval ID. Monitoring and cost budgets for each workerThe event history is vendor-documented4

The worked example explains transactions, payment intents and their states.

Identity: who is acting, and on whose behalf

[Inferred] The system must tell four parties apart and record all of them on every action. A tenant is the organization a record belongs to.

PartyWhat it isRule the server enforces
Worker principalThe worker's own OAuth client or account, limited to the tools its role needsIt can propose actions. It can never approve its own proposals
Human approverA named person who signs in through Better AuthApprovals carry that person's identity. They are bound to one exact payment and expire, as in the worked example. The worker can never act as the approver. The approver is never the payment caller for the same intent
Human sponsorThe person or team accountable for the workerOwns the worker's scopes and handles problems. The sponsor should not also approve its payments (separation of duties)
Organization (tenant)The business the worker acts forEvery record and token carries the tenant, so a worker cannot reach another tenant's data

Every audit entry names the worker, the tenant, the approver and the approval ID. So you can always answer: who did what, under whose authority? Key handling is in the appendix.

The runtime: four options

RuntimeWhat Anthropic runsIdentity and controlUse when
Claude app (conversations, tasks and scheduled tasks)Everything: the harness, the sandbox and the schedulesRuns as you. See the limits in Scheduled tasksPersonal and team workers, and prototypes
Claude Tag (Slack, Team and Enterprise)The harness and a sandbox for each Slack thread, in organization-level environmentsIts own service accounts, set up by an Owner. Not a person. See belowTeam workers that several people steer in a channel
Claude Managed Agents (API)A hosted harness and cloud sandbox, or a sandbox you host. You define an agent (model, prompt, tools, MCP servers, skills) and start sessions from your backendYour organization's API account. Sessions keep their state and their event history on the server. Scheduled execution is a listed use. In beta, with the compliance limits listed in the appendixProduction workers you do not want to host
Claude Agent SDKOnly the model. You run the harnessFully yours: hosting, logging and complianceFull control or strict compliance

Basis: vendor-documented.4,5

Claude Tag: a team worker with its own accounts

[Vendor-documented] Claude Tag is Anthropic's answer to a worker that does not appear as you. It puts Claude in your team's Slack channels, in public beta on Team and Enterprise plans. Anyone in a channel can hand it work. There, "Claude acts with its own service accounts, rather than as a specific user." Actions appear in each tool's audit log under those accounts. Credentials stay outside the sandbox, "so the model and the sandbox are not given the key." It is not available with Zero Data Retention, customer-managed encryption or the HIPAA configuration.6,7,8 In a self-hosted environment, Claude Tag cannot use the connectors an admin adds.8

[Vendor-documented] One warning matters for money. A connector's credential "is shared by everyone in the channels where it applies," so anyone in those channels can ask Claude to act with it.8 [Inferred] So Claude Tag covers the "own identity" row and part of "audit". Its pages do not describe a business record or an approval check before a payment. For Brightline, the connector still checks the approval, whoever asked in Slack.

Two paths

  1. Personal and team workers. Stay in the Claude app, connected to your MCP server. You get real records and enforced approvals at once. One limit: a claude.ai connector is signed in by a person, so the worker has its own identity only if a dedicated worker account signs it in. For team work in Slack, Claude Tag acts under its own service accounts.
  2. Business workers that handle money, customers or records. Move the runtime to Managed Agents, or to the Agent SDK for full control. Your backend starts sessions under a service identity and keeps its own logs. The MCP server, the database and the approval page carry over. The appendix lists what each part gives you and what you write.

Build the business layer first. It holds everything that must be trustworthy: identity, records, approvals and audit. Then changing the runtime is an integration task. Codex also supports MCP servers, so the same layer can serve OpenAI workers too.

Check yourself

Question 1 / 4

0 answered

What rule does the server enforce for the worker principal?

  1. As verified on November 9, 2026. Let Claude coordinate ongoing work with Projects, Anthropic.↑
  2. As verified on November 9, 2026. Managed Better Auth is now an OAuth provider, with MCP support, Neon.↑
  3. Better Auth MCP plugin, Better Auth.↑
Owner
Panaversity