Cofounder CLI
Communicate and Sell
Reach customers: company email and phone, CRM, ads, social, research, and managed Stripe objects.
Running a company means reaching people. This page covers the outbound and inbound channels plus the growth machinery around them.
Email and phone
Give the company an inbox and a phone number, then put them to work:
| MCP | CLI | API |
|---|---|---|
email_provision | cofounder email provision --local-part <name> | POST /cofounder-cli/v1/company/email |
email_deprovision | cofounder email deprovision | DELETE /cofounder-cli/v1/company/email |
email_messages_send | cofounder email send <inbox-id> | POST /cofounder-cli/v1/company/email/messages |
phone_provision | cofounder phone provision | POST /cofounder-cli/v1/company/phone |
phone_deprovision | cofounder phone deprovision | DELETE /cofounder-cli/v1/company/phone |
phone_messages_send | cofounder phone message send --to <e164> | POST /cofounder-cli/v1/company/phone/messages |
phone_messages_list | cofounder phone messages list | GET /cofounder-cli/v1/company/phone/messages |
Email covers the rest: reading and replying, drafts, campaigns to CRM contacts, your own mail domain, and email from your app.
phone provision buys a real number, billed as a recurring cost, or returns
the one the company already has. phone deprovision releases it and deletes
its message history; a later provision gets a different number.
cofounder phone messages send --to-number <e164> --body <text> is the same
send with API-style flags.
CRM
There's a CRM built in with accounts, contacts, deals, and an activity log. CRM covers managing records, enrichment, calendar sync, and finding prospects. MCP clients can also open the CRM as a board. See MCP Beyond Tools.
Ads, analytics, and research
- Ads: paid campaigns from account setup to results are in Ads.
- Analytics: ask questions of the marketing data with
cofounder analytics query/analytics_query. - Website traffic:
cofounder analytics website-traffic get --range 30d(analytics_website_traffic_get) reads visits from the company's PostHog project;--purpose productreads the product app instead of the marketing site.cofounder analytics website-pixel get --group-by source(analytics_website_pixel_get) counts events or unique visitors from the pixel in the company's generated websites, filtered or split by page, source, country, device, and more. - Research: quick web searches and longer research jobs are in Research.
Social
Connect the company's social accounts once, then take each post through prepare and publish (or schedule).
Accounts
| MCP | CLI | API |
|---|---|---|
social_connect | cofounder social connect | POST /cofounder-cli/v1/company/social/connect |
social_accounts_connect | cofounder company social connect <platform> --wait | POST /cofounder-cli/v1/company/social/connect/{platform} |
social_accounts | cofounder social accounts | GET /cofounder-cli/v1/company/social/accounts |
social_posts_options_get | cofounder social posts options <account> | GET /cofounder-cli/v1/company/social/resources/{resource_id}/post-options |
social_accounts_set_destination | cofounder social accounts set-destination | PUT /cofounder-cli/v1/company/social/accounts/{resource_id}/destination |
social_accounts_update | cofounder social accounts update <account> --default / --no-default | PUT /cofounder-cli/v1/company/social/accounts/{resource_id} |
social_accounts_disconnect | cofounder social accounts disconnect --resource <id> (or --platform <platform> for that platform's default) | DELETE /cofounder-cli/v1/company/social/accounts |
Run social connect once to set up the company's social connection, then
company social connect <platform> --wait to connect an account such as
linkedin or tiktok: it opens the link in your browser and waits until the
account is usable (--resource <id> reconnects one you already have;
cofounder social accounts connect --platform <platform> just prints the
link). posts options shows what an account supports: settings, content and
media limits, and where it can post. Each platform's default account is used
when a command leaves the account out. accounts disconnect refuses while
posts are still pending or an ads account is linked; --force disconnects
anyway. accounts set-destination chooses a provider destination for one
social Resource; use options first to see the available choices. If an
account cannot be projected to its company Resource, social accounts reports
it under omitted with the reason and Resource id when known.
Posts
| MCP | CLI | API |
|---|---|---|
social_posts_list | cofounder social posts | GET /cofounder-cli/v1/company/social/posts |
social_posts_get | cofounder social posts get <post> | GET /cofounder-cli/v1/company/social/posts/{post_id} |
social_posts_prepare | cofounder social posts prepare --account <account> --content <text> | POST /cofounder-cli/v1/company/social/posts/prepare |
social_posts_check | cofounder social posts check <post> --revision-id <revision> | POST /cofounder-cli/v1/company/social/posts/check |
social_posts_publish | cofounder social posts publish <post> --revision-id <revision> | POST /cofounder-cli/v1/company/social/posts/publish |
social_posts_schedule | cofounder social posts schedule <post> --revision-id <revision> | POST /cofounder-cli/v1/company/social/posts/schedule |
social_posts_revise | cofounder social posts revise <post> --revision-id <revision> --idempotency-key <key> | POST /cofounder-cli/v1/company/social/posts/revise |
social_posts_cancel | cofounder social posts cancel <post> --revision-id <revision> --idempotency-key <key> | POST /cofounder-cli/v1/company/social/posts/cancel |
social_posts_unpublish | cofounder social posts unpublish <post> --revision-id <revision> --idempotency-key <key> --confirm | POST /cofounder-cli/v1/company/social/posts/unpublish |
social_posts_retry | cofounder social posts retry <post> --revision-id <revision> --idempotency-key <key> | POST /cofounder-cli/v1/company/social/posts/retry |
social_search | cofounder social search --platform <platform> --query <text> --resource-id <id> (Reddit: --subreddit <name> without --query reads the subreddit feed) | GET /cofounder-cli/v1/company/social/search |
social_queue_get | cofounder social queue get <resource-id> [--count <1–100>] | GET /cofounder-cli/v1/company/social/queue |
social_queue_set | cofounder social queue set <resource-id> --timezone <iana-zone> --slots <json> | PUT /cofounder-cli/v1/company/social/queue |
social posts lists posts, and social posts get reads one post's content and
delivery state. prepare saves a draft for one account and returns a post ID
and revision ID. Use that revision_id for check, publish, schedule, revise,
and control operations. Use social accounts update <account> --default or
--no-default to set or clear the platform default. Publish delivers now.
For a specific time, prepare with --at <timestamp> --timezone <zone>, then
call schedule. To use Zernio's profile-wide queue, inspect its slots with
social queue get or request advisory upcoming times with
social queue get --count 20; use social queue set to change the schedule.
Prepare with --next-slot to pin a preview time in the draft. That preview
reserves nothing; Zernio chooses the actual queue slot when schedule is
submitted. Queue slots are shared by all social accounts in that Zernio profile.
The delivery receipt reports the actual assigned time when Zernio returns it;
the prepared preview is never presented as the confirmed delivery time. check
tells you whether a draft is ready to go, and
social posts shows drafts and what happened to each post.
Use revise with the active revision ID to replace draft content or update an
eligible scheduled post; publish or schedule with the newly returned revision
ID. cancel stops an eligible scheduled delivery, while retry retries a
definitively rejected dispatch or an eligible failed provider post. unpublish
requires --confirm and works only on platforms that support removing a live
post.
Provider retries are rejected for X posts; after a failed X delivery, review the provider state and resubmit through a fresh approval. Unpublish is rejected before dispatch on unsupported platforms such as Instagram and TikTok.
Inbox
| MCP | CLI | API |
|---|---|---|
social_inbox_list | cofounder social inbox list | GET /cofounder-cli/v1/company/social/inbox |
social_platform_posts_get | cofounder social platform-posts get --platform x --post-id <native-id-or-url> --resource-id <social-account-resource-id> | GET /cofounder-cli/v1/company/social/post |
social_inbox_reply | cofounder social inbox reply --item-id <id> --item-type <type> --resource-id <id> --content <text> | POST /cofounder-cli/v1/company/social/inbox/{item_id}/reply |
social_inbox_moderate | cofounder social inbox moderate | POST /cofounder-cli/v1/company/social/inbox/{item_id}/moderate |
social_dm_send | cofounder social dm send | POST /cofounder-cli/v1/company/social/inbox/dm |
The inbox exposes six views: needs_attention, commented_posts,
post_comments, conversations, messages, and reviews. Use a social
Resource to scope account-specific views; messages also requires its
conversation_id. Results include which inbox capabilities are available and
why other sources may be missing from a partial result. Replies go out right
away; replying to a comment also needs its --post-id. Pass --idempotency-key
on a DM or Google Business review reply when you need Zernio's 24-hour replay
window for the same key and request body; the CLI leaves it unset by default
because review support varies by provider. Facebook reviews work without a key,
and a supplied key is rejected when the connected provider does not support it.
Comment replies have no documented replay guarantee. Moderation requires
explicit confirmed: true; its optional key is forwarded, but Zernio does not
document deduplication for moderation, so it is not safe to assume retries
happen only once.
Use social dm send to start a new direct-message conversation with a
recipient who has not messaged the account yet - for example an X DM to
--participant-username <handle> or --participant-id <numeric id> - through a
social Resource. If a conversation with that recipient already exists, the
provider appends to it. The response's item_id is the conversation id to pass
to social inbox reply or the messages view.
Campaigns
| MCP | CLI | API |
|---|---|---|
social_campaigns_create | cofounder social campaigns create --name <name> --starts-on <date> --ends-on <date> --placements <json> | POST /cofounder-cli/v1/company/social/campaigns |
social_campaigns_list | cofounder social campaigns list | GET /cofounder-cli/v1/company/social/campaigns |
social_campaigns_get | cofounder social campaigns get --campaign-id <id> | GET /cofounder-cli/v1/company/social/campaigns/{campaign_id} |
social_campaigns_attach | cofounder social campaigns attach --campaign-id <id> --placement-id <id> --post-id <post-id> --revision-id <revision-id> | POST /cofounder-cli/v1/company/social/campaigns/{campaign_id}/attach |
A campaign is a dated plan of posts across accounts; creating one doesn't
write or schedule anything. attach links a prepared post and its active
revision_id to one planned slot, and publishing it is still a separate step.
To swap in a newer revision, pass the one currently linked as
--replace-revision-id. get shows each slot's linked post and whether it has
changed since you linked it.
Brand and design
| MCP | CLI | API |
|---|---|---|
company_brand_get | cofounder company brand get | GET /cofounder-cli/v1/company/brand |
design_extract | cofounder design extract <website-url> | POST /cofounder-cli/v1/design/extract |
design_extractions_get | cofounder design extractions get --job-id <id> | GET /cofounder-cli/v1/design/extractions/{job_id} |
brand get reports the brand kit state and lists the company's brand
files. design extract pulls colors, type, and components from a live site
and saves them to the Library under
design/website-design-systems/. Extraction takes a minute or more, so it
starts as a job and returns at once; in a terminal, or with -o, the CLI
waits for it to finish (--wait forces this under --json, --no-wait
skips it). design extractions get shows a job's status and, once it
finishes, the extracted system.
Writing
| MCP | CLI | API |
|---|---|---|
writing_check | cofounder writing check --text <text> | POST /cofounder-cli/v1/writing/check |
writing check flags the tells that make prose read as machine-written, one
paragraph at a time: dashes, stock vocabulary such as "delve" or "tapestry",
"not X but Y" relabeling, decorative lists of three, stacked hedges, setup
questions, restating closers, signposting, puffery, and generic claims. Each
flag names the paragraph and says how to fix it; passed is true when nothing
is flagged. Pass a file with --text "$(cat draft.md)". Code, headings, tables,
and HTML are skipped, a list counts as one paragraph, and a call reads up to 60
paragraphs. The check is
free and takes a few seconds. To have an agent rewrite a draft until it
passes, start the writing-improvement playbook.
Payments
To take payments, cofounder payments setup --mode test sets the company up
with a
Stripe test account; products, prices, payment links, invoices, and going
live are in Payments.
Next steps
To see what your company's agents have been doing, go to Watch It Run.