Cofounder

Ads

Run paid ads on the ad accounts your company already has. Connect them, research what works, create campaigns, cap spending, and track results.

Run paid ads on the ad accounts your company already has, on Google, Meta, LinkedIn, TikTok, and other platforms. Your agent researches what works, sets up campaigns, keeps spending under a daily limit you control, and reports how they perform.

Connecting accounts and anything that spends money require a company admin. Any member can see accounts, campaigns, and results.

Connect Your Ad Accounts

Your agent can connect Google Ads, Meta, LinkedIn, TikTok, Pinterest, X, and OpenAI ad accounts. Connecting one needs you to sign in to the ad platform. Your agent hands you the link.

X Ads requires a connected X social account in the same company. Connect X first with social_accounts_connect, then call ads_accounts_connect with platform: "xads". It uses your default X account, or your only connected X account. If several are connected without a default, pass source_resource_id from social_accounts to choose one.

In Cofounder's Social app, open your X account or choose Twitter / X under Add account. The X Ads section shows its separate authorization. Authorize at X, then return to Cofounder to choose available ad accounts. Unavailable accounts cannot be selected. If no accounts are returned, use Check access again; an empty list does not explain why access is unavailable.

Your agent can inspect the same choices with ads_accounts_list, passing the X account's source_resource_id, and save a nonempty ad_account_ids selection with ads_accounts_connect. The provider may discover or sync reachable ad accounts during authorization, before you save a selection. Connecting or selecting accounts does not create ads or approve spending.

If the company has more than one account, your agent picks the one each campaign runs on. For a connected Meta account, your agent can also see the account's business-verification facts when Meta reports them. A missing fact is unknown, not an approval.

Research Hooks and References

Before making creatives, your agent can study live Meta ads in your space: real examples, opening hooks, creative prompts, and audience patterns. Research uses ad-research credits. It doesn't make images or video. Your agent uses Media for that.

Your agent puts your product, audience, relevant URLs, and dates in the question. An answer can take up to twenty minutes, and your agent checks back for it. Follow-up questions continue the same conversation. A retried question returns the saved answer instead of charging twice.

A reference ad that has run for a long time is a lead, not proof it makes money.

Research Keywords

With a Google Ads account connected, your agent looks up search terms before writing ads. It suggests keywords from seed words, a web page, or both, and returns search volume and competition for up to 1,000 keywords. Google reports bid and cost figures in millionths of the account currency (1,000,000 is one dollar on a USD account).

Create a Campaign

On a connected Meta account, your agent creates the campaign, ad set, and ad in one step. The creative is a public image, or a public video with a call to action.

New campaigns start paused. Nothing spends until your agent resumes one. The result can include notices suggesting more specific ad text. They're suggestions only and don't launch anything.

Meta post boosts request a paused campaign. After creating a boost, check its campaign status before resuming it. Repeating the same request returns the original result and doesn't pause a campaign you resumed afterward. If Cofounder can't confirm the new campaign is paused, its budget remains committed. Check the campaign in Meta and pause it before continuing.

The first Meta resume confirms the campaign switch with a live read. If that read is unavailable or doesn't confirm ACTIVE, the result stays unresolved and its spend commitment stays in place. Inspect the existing campaign in Meta before taking another action; don't create a replacement boost or use a new idempotency key. An active switch doesn't prove ad approval or delivery.

Meta Age and Special Ad Categories

On Meta, your agent can set an age range and declare a special ad category, such as financial products, housing, employment, or credit. A boost takes age_min, age_max, special_ad_categories, and special_ad_category_country directly. A standalone campaign takes ages in input.targeting and the category fields at the top of input:

{
  "input": {
    "targeting": {"countries": ["US"], "age_min": 18, "age_max": 65},
    "special_ad_categories": ["FINANCIAL_PRODUCTS_SERVICES"],
    "special_ad_category_country": ["US"]
  }
}
  • The category country is where the category applies. It's separate from countries, which picks the audience, and needs a category alongside it.
  • Use FINANCIAL_PRODUCTS_SERVICES for new financial campaigns. The older CREDIT value is still accepted.
  • With no audience countries, campaigns target the US. US rules apply when either the audience or the category country includes the US: ages must sit within 18 to 65 (65 means 65 and older), and conflicting ages are refused.
  • Setting ages, or declaring a US restricted category, turns off audience expansion.
  • An ordinary 21+ offer can set just "targeting": {"age_min": 21}.

These fields describe the targeting you submit. They don't prove licensing, platform permission, or that the campaign will be approved. Other platforms ignore them.

Company Facts and Activity Checks

Save the company's offer and intended_use in company settings. These caller-supplied facts are not independently verified. The safeguards that use them are off by default and apply only when enabled for a company. They affect connected Meta ads, not every company or ad platform.

When enabled, standalone campaign creation checks the saved facts against the submitted ad text, effective audience, declared special categories, and selected account. It does not open the landing page or inspect image or video files. The actual ad is also checked against the prohibited activities; ordinary company facts cannot authorize an ad promoting a prohibited offer. The effective audience must be US-only. The operation explains whether the stated business or activity is unsupported, facts are missing, or a check is unavailable. Resubmit the facts through settings update to retry an unavailable company check. A company category by itself does not ban every ad from that company. The activity in the specific ad and its audience determine which controls apply:

  • Non-explicit adult dating and specific weight-loss, cosmetic, medical, or physiological health claims require an explicit minimum age of 18. This 18+ rule applies to covered claims, not every health-related business. US alcohol promotion requires an explicit minimum age of 21; a company that serves alcohol does not trigger the age rule unless the ad promotes alcohol.
  • US ads for housing, employment, or financial products and services require the matching HOUSING, EMPLOYMENT, or FINANCIAL_PRODUCTS_SERVICES category and US in special_ad_category_country. A regulated title or consequential claim instead triggers the scoped review described below; it does not by itself require a financial-products category. If an ad includes both housing and employment activity, declare both matching categories.
  • An ad for a covered crypto exchange or token is blocked because this campaign path cannot verify Meta's prior permission and account-matched accepted license evidence. A US securities or investment ad is blocked because the path lacks the advertiser and payer disclosure fields. These checks concern the specific advertised activity, not every ad from a financial-services company.

Non-explicit adult dating, US alcohol promotion, ads relying on a regulated title or authorization, consequential medical, legal, tax, or financial claims, and third-party fundraising that raises or routes money to a beneficiary require scoped Cofounder staff review for the exact ad and audience. Add input.review_evidence_reference to a standalone create request with a text or URL reference. The reference does not approve the activity; classification and Meta's review verdict do not replace human review. A pending or rejected review leaves creation blocked, and no review turnaround time is promised. Approval is scoped to the account, market, and activity context; a different context needs its own review. Retrying an unchanged rejected or revoked review returns that decision. Change the ad, company facts, or supporting evidence before requesting another review. An expired approval can be submitted for renewed review.

Alcohol and regulated-title or consequential-claim reviews must also establish that the actual offer does not require targeting below country level. This path supports US country targeting only; staff cannot approve an activity that requires state-level restrictions this path cannot enforce.

When these safeguards are enabled, boosting a connected Meta post and resuming a connected Meta campaign are currently unavailable because the current ad creative and effective audience cannot be checked. Pausing remains available. If an error says an authorization change was confirmed not submitted, correct the facts or review and submit again with a new --idempotency-key. For an unclear provider outcome, do not submit again with a new key.

Cap Spending

Set one daily spend ceiling across every ad account. It's checked whenever a campaign resumes. Your agent can create the ceiling or lower it, and needs an admin to do so. It can't raise it: a raise through MCP or the CLI is refused with ad_spend_ceiling_raise_requires_payer, even for the payer. The company's payer raises it in Wallet on the dashboard.

Each campaign's own budget still applies. Platforms pace delivery, so a day's actual charges can differ from the ceiling. Your agent can show you today's committed spend, the ceiling, and which campaigns make up the total.

MCPCLIAPI

Manage Campaigns

Your agent lists your campaigns, pauses them, resumes them, and changes their budgets. Pausing always works. Resuming starts spending, within the campaign budget and the daily ceiling.

Budgets follow each platform's rules. Google allows only daily budgets. Meta campaigns budgeted per ad set reject a campaign-level change.

For a connected Meta campaign, campaigns review get reads the current review verdict for each ad returned under that campaign in the selected account. Choose the account with --resource and a campaign ID from that account. This read doesn't change campaign status. A null approved or review_status means Meta didn't report a verdict. The provider_review_status on campaigns get is a separate campaign-level value that may be cached or delayed.

Reading one Meta campaign can also return provider_controls: the special ad categories and category countries Meta reports, plus each ad set's ages, countries, and audience expansion. A missing or null value means Meta didn't report it, not that it's off. adsets_coverage says whether all ad sets were read, and observed_at is when Cofounder looked. It's a snapshot of settings, not proof of delivery or compliance, and campaign lists don't include it.

MCPCLIAPI

See Results

Ask your agent how a campaign or a single ad did over a date range. Ranges include both the start and end dates, and results show only the numbers the platform reports. The dashboard's Analytics app also shows your campaigns.

MCPCLIAPI

Commands

Connect accounts:

MCPCLIAPI

Platforms are googleads, linkedinads, metaads, openaiads, pinterestads, tiktokads, and xads.

Research ads and keywords:

MCPCLIAPI

Create a Meta campaign:

cofounder ads campaigns create --input <json>