Communicate and Sell
Reach customers. Give the company an inbox and phone number, post to social, keep the CRM current, and check your brand.
Reach customers from the company's own accounts. Your agent sends email, receives texts on a company phone number, posts and replies on social, and keeps the CRM up to date. Each section links to the full guide.
Set Up Email and Phone
Your agent gives the company an inbox and a phone number. It sends and reads email, and reads the texts people send to the number. Email covers the rest of email: reading and replying, drafts, campaigns to CRM contacts, your own mail domain, and email from your app.
Phone numbers cost money. Your agent buys a real number, billed every month, or reuses the one the company already has. Releasing the number deletes its message history, and a number bought later is a different one.
On prepaid credits, buying a new number needs an active $40/month company
credit subscription. Start checkout with cofounder company billing subscribe,
pay, and your agent tries again. Reusing or releasing a number doesn't need
the subscription.
A new number can receive texts right away. Sending texts isn't supported.
Your agent can show the latest message from each number that has texted you, or one number's full history.
Keep the CRM Current
The built-in CRM holds accounts, contacts, deals, and an activity log. CRM covers records, enrichment, calendar sync, and finding prospects. MCP clients can also open the CRM as a board. See MCP Beyond Tools.
Run Ads, Read Analytics, and Research
Ads covers paid campaigns from account setup to results. Research covers quick web searches and longer research jobs.
Query your marketing data with cofounder analytics query /
analytics_query. For visits to the marketing site, run
cofounder analytics website-traffic get --range 30d
(analytics_website_traffic_get). Add --purpose product to see the
product app instead.
Post on Social
Connect the company's social accounts once, such as LinkedIn or TikTok. For each one, you sign in to the platform from a link your agent opens, and it waits until the account works. After that, your agent posts, schedules, and answers comments and messages from those accounts.
Business-policy checks are rolling out and are not enabled for every company yet. Where enabled, a saved prohibited business or unsupported intended use blocks new posts, replies, messages, retries, and provider edits. Ordinary communication from verification-sensitive businesses remains allowed without ad verification. Missing business information alone does not block social publishing. You can still inspect results, cancel a post, or unpublish it. The error explains how to correct inaccurate business information or contact Support.
Use cofounder social accounts connect --platform instagram --expected-username yourhandle /
social_accounts_connect with expected_username to refuse a different
account. To reconnect an existing account, pass --resource-id <resource_id> /
resource_id; Cofounder keeps its platform identity and Instagram login
method. For Instagram, --instagram-login-method facebook_login requests
Facebook authorization when connecting a new account.
If access expires or is revoked, social_accounts shows the account as needing
action. Your agent requests a reconnect link for that resource and asks you to
sign in and approve access. It checks social_accounts again before resuming.
Removing an account intentionally does not trigger a reconnect request. If the
old connection was removed, authorization creates a new connection for the same
platform identity and retains the old account's history.
Request specific permission areas with repeated --scope flags, such as
--scope posting --scope analytics, or the MCP scopes list. Available
areas are posting, analytics, comments, messaging, and ads.
Omit them to request full permissions. Platforms that do not support scope
selection reject this option. A connected account with no posting permission
can still use the permissions it has.
social_accounts reports whether each account can publish, which features
are available, and when its provider state was last synchronized. Unavailable
features explain whether to reconnect, grant permission, or wait for access.
An account without posting permission can still prepare drafts. If Zernio
temporarily disables a platform, keep the connection and wait for access to
return.
Each platform has a default account your agent uses unless you name another. Your agent checks what each account supports (settings, content and media limits, and where it can post) and can pick where an account posts. An account can't be disconnected while it has pending posts or a linked ads account, unless you force it.
Publish and Schedule Posts
Every post starts as a draft:
Draft → check → publish now or schedule.
To schedule, your agent picks a set time or uses the posting queue: a list of posting slots shared by all the company's social accounts. Your agent can show the slots, suggest upcoming times, and change them. The real slot is picked when the post is scheduled.
After a post is drafted or scheduled:
- Your agent can revise a draft or an eligible scheduled post, or cancel an eligible scheduled post.
- A post that was rejected or failed can be retried. X posts can't be retried. Your agent checks what happened on X and submits again with a fresh approval.
- Unpublishing takes down a live post. It needs confirmation and only works on platforms that allow it (not Instagram or TikTok).
- Publish, schedule, revise, and reply results can include
noticessuggesting more specific wording. They don't mean the post failed. - To post the same content to an account again soon after, your agent
explains why with
repeat_reason(--repeat-reason). A new retry key alone doesn't count as a reason.
Some accounts have activity allowances. When enabled, the trial caps allow up to three posts per social account and ten across the responsible account's companies without verified paid access in a rolling 24 hours, with at least 15 minutes between posts on the same account. Paid companies aren't charged to or limited by the trial pool. Current attribution, content, repeat-content, hold, and provider-safety checks still apply to every company. A post whose delivery isn't confirmed yet still counts in the trial pool, so your agent checks its status before retrying. The pool uses each company's current verified billing status. Recent activity can leave the pool when a company becomes paid, then count again if it returns to trial before that activity ages out of the 24-hour window. A plan change doesn't erase post history. Scheduling through the provider is off while allowances are enabled because delivery can't recheck current restrictions.
Answer the Social Inbox
The social inbox collects comments, conversations, and reviews across your accounts. It has six views: needs attention, commented posts, post comments, conversations, messages, and reviews. If some sources are missing, the result says why.
Search conversations by message text or contact identity. Each result shows up to three matching messages; a match count of zero means the contact's identity matched. Search returns at most 50 conversations per page and reports accounts it could not search. Reading leaves messages unread.
Facebook Page message requests have a separate, bounded shortlist. If it is truncated, narrow to one account. Instagram cannot list a separate requests folder. Replying to a request accepts it and sends the reply immediately.
- Replies go out right away.
- Your agent can archive a conversation or return it to the active inbox. Reading messages leaves them unread. Marking a conversation read is an explicit action after you view it or ask, and can send a seen receipt.
- Facebook and Instagram conversations show which app owns the thread when that information is available. Your agent can take, request, release, or pass control. Requesting waits for the current owner to agree. Instagram Login connections cannot take or request control; they wait for the owner to pass it or reconnect through Facebook Login.
- On a DM or Google Business review reply, your agent can retry safely within 24 hours. Facebook review replies work without that step. Comment replies have no such guarantee.
- Moderation needs confirmation. A retry can act twice.
- Your agent can start a DM with someone who hasn't messaged you yet, for example an X handle. If a conversation already exists, the message is added to it.
Plan a Campaign
A social campaign is a dated plan of posts across accounts. Creating one doesn't write or schedule anything. Your agent links prepared posts to its slots, and publishing is still a separate step. The campaign shows each slot's post and whether it changed since it was linked.
Check Your Brand and Design
Your agent can show you the brand kit and the company's brand files. It can also copy colors, type, and components from a live site into the Library. See Design.
Take Payments
Your agent can give the company a Stripe test account with
cofounder payments setup --method sandbox. Pricing plans, refunds, and going
live are in Payments.
To see what your agent has been doing, go to Watch It Run.
Commands
Email and Phone
| MCP | CLI | API |
|---|---|---|
Social Accounts
| MCP | CLI | API |
|---|---|---|
| / | ||
| (or for that platform's default) |
Run social connect once, then company social connect <platform> --wait
for each account. --resource <id> reconnects an account you already have.
cofounder social accounts connect --platform <platform> only prints the
link. accounts disconnect --force disconnects despite pending posts or a
linked ads account.
Social Posts
| MCP | CLI | API |
|---|---|---|
| (Reddit: without reads the subreddit feed) | ||
prepare returns a post ID and a revision_id to pass to every later step.
For a set time, prepare with --at <timestamp> --timezone <zone>, then
schedule. Preparing with --next-slot shows a likely queue time in the
draft but reserves nothing. revise returns a new revision ID to publish or
schedule.
Social Inbox
| MCP | CLI | API |
|---|---|---|
Inbox views are needs_attention, commented_posts, post_comments,
conversations, messages, and reviews. messages also needs a
conversation_id. Replying to a comment needs its --post-id. A DM or
review reply is safe to retry only with --idempotency-key, which is off by
default because review support differs by platform: a key is refused where
the platform doesn't support it. Moderation needs confirmed: true.
social dm send takes --participant-username <handle> or
--participant-id <numeric id> on X, and returns the item_id to pass to
social inbox reply.
Social Campaigns
| MCP | CLI | API |
|---|---|---|
To swap in a newer revision, pass the linked one to attach as
--replace-revision-id.
Brand and Design
| MCP | CLI | API |
|---|---|---|