Early access
Let your AI agent run your ads
Your agent can set up a campaign from a sentence, check every morning what you spent and what came back, pause the ads that are not working and tell your ad account about each sale. You decide the most it can spend, and nothing starts spending until you say yes.
What it looks like
You: Promote the autumn menu to people near the restaurant. Keep it under $20 a day.
Agent: I have set up a paused campaign with one ad set in your area at $20 a day and an ad using the photo from your last post. Turning it on would put $20 a day to work, of your $50 daily cap. Shall I turn it on?
You: Yes, go ahead.
Agent: It is live. I will send you the spend and the bookings it brings each morning.
Launch
- Build campaigns, ad sets and ads from your photos, text and link, posted as your Facebook Page
- Choose where, who and how much a day, with everything starting paused
Moderate
- Pause anything that is spending without results, straight away
- Change budgets, with a check-in before any increase
- Turn a campaign on when you say yes
- Keep watch on a schedule, for example pausing an ad set each morning if a click costs more than you want to pay
Report
- Read spend, clicks and results by campaign or by day, in plain numbers
- Send sales and leads back to your ad account so it learns who buys
How your money stays safe
Caps that only you can raise
You set a daily budget cap and a monthly spend cap in your dashboard. Your agent can lower them but can never raise them, and with no caps set it cannot turn anything on.
A yes before anything spends
Everything your agent builds starts paused. Turning something on, or raising a budget that is already running, waits for your yes. You can let the agent ask you in the chat, or have every change wait for you to approve it in the dashboard.
Paused at the monthly cap
Spaces checks spend through the day. When it reaches your monthly cap, Spaces pauses the campaigns it runs and only you can raise the cap. The ad network reports spend with a short delay and can go a little over a daily budget on some days, so set your caps with some room.
Your account stays yours
You connect your ad account by signing in to Facebook and choosing which accounts to share. Spaces only turns on what it created, and you can disconnect at any time.
Ad networks
- Facebook and Instagram (Meta): early access
- Google: planned
- TikTok: planned
- LinkedIn: planned
- Microsoft (Bing): planned
- Pinterest: planned
- Reddit: planned
FAQ
Which ad networks does it work with?
Facebook and Instagram come first, through your Meta ad account. Google, TikTok, LinkedIn, Microsoft, Pinterest and Reddit are planned next.
Do I pay for ads through Spaces?
No. Your ads are billed by Meta to the payment method on your ad account, as they are today. Spaces never holds your ad money.
Can my agent spend more than I agreed?
Your agent cannot raise your caps or turn anything on without a yes. Meta can spend a little over a daily budget on a busy day, which is how its delivery works, so the monthly cap is the one to rely on.
How do I get access?
Ads is in early access. Write to hello@spacesos.com and we will turn it on for your workspace.
For developers: every ads tool
MCP at https://api.spacesos.com/mcp, REST at https://api.spacesos.com/v1. Rules and error codes are in llms-full.txt.
Launch
| What it does | MCP tool | REST |
|---|---|---|
| Facebook Pages this ad account can advertise as. | list_ad_pages | GET /v1/ads/accounts/{ad_account_id}/pages |
| Pixels (datasets) this ad account can send conversions to. | list_ad_pixels | GET /v1/ads/accounts/{ad_account_id}/pixels |
| Create a campaign. It is always created paused. | create_ad_campaign | POST /v1/ads/accounts/{ad_account_id}/campaigns |
| Create an ad set with a budget, schedule and audience. It is always created paused. | create_ad_set | POST /v1/ads/accounts/{ad_account_id}/ad-sets |
| Create an ad from an image, text and a link, posted as one of your Pages. It is always created paused. | create_ad | POST /v1/ads/accounts/{ad_account_id}/ads |
| Upload an image for ads. Returns the image_hash that create_ad needs. | upload_ad_image | POST /v1/ads/accounts/{ad_account_id}/images |
Moderate
| What it does | MCP tool | REST |
|---|---|---|
| Lower the daily budget cap or monthly spend cap, or require a person to approve. Raising a cap is done by a person in the dashboard. | update_ad_limits | PATCH /v1/ads/accounts/{ad_account_id}/limits |
| Rename a campaign or change its budget. Raising the budget of a running campaign waits for a confirmation. | update_ad_campaign | PATCH /v1/ads/accounts/{ad_account_id}/campaigns/{campaign_id} |
| Rename an ad set or change its budget or end time. Raising the budget of a running ad set waits for a confirmation. | update_ad_set | PATCH /v1/ads/accounts/{ad_account_id}/ad-sets/{ad_set_id} |
| Pause a campaign, ad set or ad. Pausing never spends money, so it is done straight away. | pause_ad_object | POST /v1/ads/accounts/{ad_account_id}/objects/{object_id}/pause |
| Turn a paused campaign, ad set or ad back on. Waits for a confirmation, inside your caps. | resume_ad_object | POST /v1/ads/accounts/{ad_account_id}/objects/{object_id}/resume |
| Pause, turn on or set the budget of a campaign, ad set or ad on a schedule, optionally only when a number crosses a line (pause when a click costs over 2). Pausing starts straight away; turning on and budgets wait for a one-time confirmation, and every run checks your caps. | create_ad_routine | POST /v1/ads/accounts/{ad_account_id}/routines |
| Ad routines in this workspace, with their schedule and whether they are on. Runs are in list_routine_runs. | list_ad_routines | GET /v1/ads/routines |
| Pause or turn back on an ad routine. One that can spend only turns on once it has been approved. | update_ad_routine | PATCH /v1/ads/routines/{routine_id} |
| Delete an ad routine and cancel its waiting runs. | delete_ad_routine | DELETE /v1/ads/routines/{routine_id} |
| Changes waiting to be confirmed, and recent decisions. | list_ad_confirmations | GET /v1/ads/confirmations |
| One change waiting to be confirmed, in plain words. | get_ad_confirmation | GET /v1/ads/confirmations/{confirmation_id} |
| Carry out a change that can spend money, after the person has said yes. Caps are checked again first. | confirm_ad_change | POST /v1/ads/confirmations/{confirmation_id}/confirm |
| Cancel a change that is waiting to be confirmed. | cancel_ad_change | POST /v1/ads/confirmations/{confirmation_id}/cancel |
Report
| What it does | MCP tool | REST |
|---|---|---|
| Campaigns in the ad account, with status and budget. | list_ad_campaigns | GET /v1/ads/accounts/{ad_account_id}/campaigns |
| Ad sets, for one campaign or the whole account. | list_ad_sets | GET /v1/ads/accounts/{ad_account_id}/ad-sets |
| Ads, for one ad set or the whole account. | list_ads | GET /v1/ads/accounts/{ad_account_id}/ads |
| Spend and results by account, campaign, ad set or ad, for a date range. | get_ad_insights | GET /v1/ads/accounts/{ad_account_id}/insights |
| Send sales, leads or other results back to the network so it can optimize. Personal details are hashed before they leave Spaces. | send_ad_conversions | POST /v1/ads/accounts/{ad_account_id}/conversions |
Connect and caps
| What it does | MCP tool | REST |
|---|---|---|
| Ad networks you can connect, and which are live. | list_ad_networks | GET /v1/ads/networks |
| A link the owner opens to connect an ad account. Nothing is connected until they sign in and approve. | create_ads_connect_link | POST /v1/ads/connect-link |
| Connected ad accounts, with their caps and approval setting. | list_ad_accounts | GET /v1/ads/accounts |
| One ad account: caps, spend this month by what Spaces runs, and active daily budgets. | get_ad_account | GET /v1/ads/accounts/{ad_account_id} |
| Stop managing an ad account. Campaigns keep their current status on the network. | disconnect_ad_account | DELETE /v1/ads/accounts/{ad_account_id} |