Creator OS
agenciesai agentcreator osopen sourcesocial media

AI Agent for Agencies: Run 8 Client Networks in One Workspace

AI agent for agencies that runs Instagram, TikTok, LinkedIn, Facebook, X, Threads, Skool, and WordPress for every client from one Creator OS workspace.

Creator OS · October 6, 2026 · 9 min read

Most teams run an “ai agent for agencies” setup that breaks at the second client. One Creator OS agency plan holds up to 40 connected accounts across 5 sets of socials, so you can run Instagram, TikTok, LinkedIn, Facebook, X, Threads, Skool and WordPress blogs for many clients from one login. This post walks through how that separation actually works: workspace scoping, bulk onboarding from the CLI, and how to keep client accounts and approvals apart.


  AGENCY WORKSPACE (one login)
  |
  +-- Set 1: Client A   instagram, tiktok, linkedin, facebook
  +-- Set 2: Client B   instagram, tiktok, threads, x
  +-- Set 3: Client C   youtube, facebook, skool, wordpress
  +-- Set 4: Client D   instagram, tiktok, linkedin, x
  +-- Set 5: Client E   instagram, facebook, skool, wordpress
  |
  API key cos_live_...  -> pinned to ONE set, cannot post to another
  MCP server            -> sign in, pick a workspace, read or read+write
  CLI                   -> loop over sets, push posts in bulk
Each set of socials is its own walled workspace. One login, many clients, no cross-posting.

Why Multi-Client Social Is the Hardest Part of Agency AI

An AI agent needs three things to run social for a brand: a tool surface it can call, credentials scoped to that brand, and enough context to sound like the brand. A single-brand setup gets all three for free. A multi-client setup has to solve them five or ten times over.

The failure mode is quiet. Your agent drafts a reply meant for Client A and posts it to Client B’s Instagram because both accounts share one flat token. Or someone on your team connects their own ChatGPT, signs into the agency account, and now has read access to every client’s inbox. Or you onboard a new client and spend an afternoon re-linking accounts and re-pasting brand voice notes into a prompt.

The fix is structural. You need the unit of separation to be a workspace, not a login, and you need the AI to touch one workspace at a time. Creator OS calls that unit a set of socials.

One Workspace, Every Client: How Creator OS Handles Agencies

Creator OS is one place to publish, schedule, reply and read analytics on Instagram, TikTok, YouTube, X, LinkedIn, Facebook and Threads, plus Skool communities, a WordPress blog, and paid ads as an add-on. It ships four surfaces that matter here: the web app, a REST API, the creatoros CLI, and a hosted MCP server for Claude, ChatGPT, Claude Code, Cursor, Codex, Windsurf and VS Code.

Pricing maps onto client count:

  • Creator plan: $19.99/month or $59.99/year, up to 8 connected accounts (7 socials plus Skool).
  • Agency plan, 5 sets: up to 40 connected accounts for $49/month or $399/year.
  • Agency plan, 10 sets: up to 80 connected accounts for $99/month or $599/year.
  • Ads add-on: $19.99/month on any plan, no percentage of ad spend. Ad spend is billed by each network to your own ad account.

API keys, the MCP server, the CLI and the agent skills are included in every plan, including the $19.99 Creator plan. There is no separate agency API tier to negotiate.

The Credential Boundary Is the Whole Trick

Here is the detail that changes how you think about multi-client work. A Creator OS API key is pinned to one workspace, which means one set of socials. An agent holding Client A’s key cannot post to Client B. That is not a permission toggle you can forget to set. It is the shape of the credential.

Ids are opaque typed tokens so you can tell at a glance what you are holding: acc_ for accounts, post_ for posts, cmt_ for comments, conv_ for conversations, msg_ for messages, auto_ for automations, med_ for media. Errors come back in one shape, { error: { code, message, status } }, so your wrapper code does not need per-endpoint error handling.

Creating a post is deliberately small:

POST /v1/posts
{
  "content": "New drop this Friday. Link in first comment.",
  "platforms": ["instagram", "tiktok", "linkedin"],
  "media": ["med_9f2a1c"],
  "schedule_at": "2026-03-14T14:00:00Z",
  "timezone": "America/Toronto"
}

Creator OS applies each platform’s own rules on top: Reels and Shorts formatting, TikTok’s required consent flags, caption limits. You do not have to remember that Instagram captions need the link in a first comment, or that TikTok needs content_preview_confirmed and express_consent_given set to true. If you name a network in platforms that is not connected in that workspace, it comes back in missing_platforms and the rest of the post still goes out. That one field is how you audit onboarding gaps across a roster without a spreadsheet.

There is also an advanced form where platforms becomes an array of objects with platform, account_id, options and content, so an agency managing several Instagram accounts for one brand can target a specific one. TikTok settings move into a top-level tiktok object. The request reference and the correct base URL live in the Creator OS docs. Any tutorial that hands you a made-up hostname is wrong.

Bulk Client Setup From the CLI

Onboarding five clients through a web UI is tedious. Through the CLI it is a loop.

Start by checking what is connected and whether anything has gone stale:

creatoros auth:check
creatoros profiles:list
creatoros accounts:list
creatoros accounts:health

accounts:health is the one to run weekly. A client’s TikTok token quietly expiring is the kind of thing you find out when a scheduled post fails. Then add the missing platforms:

creatoros accounts:connect instagram
creatoros accounts:connect tiktok
creatoros accounts:connect linkedin

For a batch of posts across one client’s accounts:

creatoros posts:create \
  --text "Spring restock is live. Two sizes sold out already." \
  --accounts acc_4a1b,acc_7c9d,acc_2e5f \
  --media https://cdn.example.com/spring-restock.jpg \
  --scheduledAt 2026-03-14T14:00:00-04:00 \
  --timezone America/Toronto

Before anything ships, validate the caption and the media separately:

creatoros validate:post-length --text "Spring restock is live..."
creatoros validate:media --url https://cdn.example.com/spring-restock.jpg

If you already hold a client’s content calendar as JSON, push the whole thing in one pass and rehearse it first:

creatoros posts:bulk-upload --file client-b-march.json --dryRun
creatoros posts:bulk-upload --file client-b-march.json

Upload media once with creatoros media:upload <file>, get a med_ id back, and reuse that id on every platform in the workspace. You are not re-uploading the same video four times because each network wants its own copy.

Per-Client Platform Coverage

Different clients need different surfaces. A creator-economy client might be Instagram, TikTok and Skool. A B2B client is LinkedIn and X. A local business is Facebook and Instagram, with a WordPress blog feeding the top of the funnel.

Instagram supports Reels, feed images, carousels and Stories, with custom Reel covers, up to 3 collaborators, user tags, location tags, a paid partnership label and an AI-generated label on Facebook-login connections. TikTok supports videos and photo carousels, plus drafts sent to the Creator Inbox to finish in the app. LinkedIn supports text, images, video, polls, reposts, a first comment, company pages via organizationUrn, and audience targeting on page posts for Pages with 300 or more members. Facebook supports Page feed posts, Reels, Stories, link carousels, drafts in Publishing Tools, and several Pages via pageId. Threads supports text, images, video, multi-post threads and topic_tag. Full option lists are in the post options docs.

Skool is where agency work gets interesting, because a community is not a feed. Connect Skool by signing in on Skool’s own page and sharing communities read-only or read and write. Then read members by status, collected emails, MRR, 30-day growth and engagement; create posts and polls with media; post to several communities at once with skool:multi-post; email every member; comment, edit, pin, like; approve or deny join requests; send DMs; block users. For a client running a paid community, creatoros skool:revenue <community> and creatoros skool:growth <community> answer the question the client asks on the monthly call. The commands are listed in the Skool docs.

If the client has a WordPress site, connect it by signing in on your own domain, or self-hosted with credentials. The AI writes SEO articles as drafts by default unless you set publish. That ties into a wider content pipeline, described in connecting an AI social media agent to a WordPress blog, where the same workspace that publishes the article posts the teaser and handles the comments on it.

Keeping Client Accounts and Approvals Separate

Two mechanisms carry the weight here.

The first is the read-only connection. When you add the hosted MCP server at https://mcp.creatoros.ca/mcp to Claude, ChatGPT, Claude Code, Cursor, Windsurf or VS Code, you sign in to Creator OS, pick the workspace, and choose read only or read & write. A read-only connection only sees read tools, and the API refuses writes from it. That is how a junior strategist can query analytics for one client through their own AI app without any chance of them publishing. Setup steps are in the MCP docs.

The second is destructive-tool marking. Tools like delete post, delete comment, disconnect account and delete ad are flagged, so the AI app asks you first. An agent running unattended still stops at the irreversible action.

For Claude Code the connection is one command:

claude mcp add --transport http creatoros \
  https://mcp.creatoros.ca/mcp \
  --header "Authorization: Bearer cos_live_..."

Put Client A’s key in one project and Client B’s key in another. Two agents, two brands, zero bleed. If you want the agent to do more than draft, read how the open-source harness behind this pattern works: Social Agents runs your socials on Creator OS, interviews you about the brand, then posts, replies and reports from a local dashboard using your own model.

Ad approvals follow the same logic. Every create can be a dry run with validate_only, budgets are confirmed, and ads are created paused for review. Budgets are whole units of the ad account currency. Meta allows about 30 creates per ad account per 5 minutes; Google allows about 15 live calls a minute. Those ceilings matter when you launch campaigns for five clients in one sitting. Details are in the ads docs.

When a Single Brand Is the Better Fit

If you run one brand with one set of socials, the Agency plan is overkill. The $19.99 Creator plan covers up to 8 connected accounts including Skool, and every API key, CLI command and MCP capability is included. You get the same tool surface as an agency, with one workspace.

Same goes for a two-person shop with a single client. Multi-workspace architecture pays off when you have several brands with different voices and different people who should not see each other’s inboxes. Below that threshold, one set of socials plus the CLI for bulk scheduling is the simpler answer. For more on how agents fit social work in general, see the breakdown of the social media API for AI agents.

Get Started

Sign up at creatoros.ca/sign-up. Start on the Creator plan at $19.99/month or $59.99/year while you test with one brand, then move to the 5-set Agency plan at $49/month or $399/year when the second client lands. Ad accounts connect separately through the ads add-on at $19.99/month, with spend billed by each network to your own ad account.

If you want to see it running first, the walkthroughs are on the KevBuildsApps YouTube channel, including the Social Agents launch video. Watch it, then connect your first client’s Instagram and TikTok and run creatoros accounts:health to see what you are working with.

Keep reading