The manual

How it works — from sign-up to an ad your assistant just paused.

Every step, in order, with the reasoning behind it. Read it end to end in about four minutes and you will know exactly what the system does on your behalf — and what it will never do without asking.

01 — The idea

One endpoint between your accounts and your assistant

You connect once

OAuth to Meta Ads. Accounts, Pages and permissions land in the console.

We expose tools

Every action the UI can take is also an MCP tool and a REST endpoint.

You stay in control

Scopes, validation and an audit trail sit between intent and spend.

02 — The logic

What happens between “pause that ad” and the ad actually pausing

  1. 1

    You / your assistant

    Chat, dashboard, or API call

  2. 2

    Ethio Viral Ads MCP + REST

    Auth, scopes, validation, audit

  3. 3

    Meta Graph API v24

    Campaigns, ad sets, ads, creatives

  4. 4

    Sync + webhooks

    Results flow back into the console

The loop closes: results come back through scheduled sync and Meta webhooks, so the next question your assistant asks is answered with numbers that are minutes old, not days old.

03 — Step by step

Eight steps, and why each one exists

01

Create your account

Sign up with Google or email. A workspace is created and every table is row-level scoped to your user.

Why: Ad data is money data. Isolation happens in the database, not in the UI — so even a bug in a page cannot leak another workspace's spend.

/auth

02

Connect Meta Ads with OAuth

Connections → Connect Meta. Meta's consent screen asks for ads_management, ads_read, business_management and Page access. You come back with your ad accounts and Pages listed.

Why: No access tokens are ever pasted by hand. The token is exchanged server-side, stored encrypted, and refreshed for you — a pasted token would expire in an hour and leak in a screenshot.

/connections

03

Activate one ad account and one Page

Pick the account you want to operate on and the Facebook Page ads will be published from.

Why: Everything downstream — dashboards, API keys, MCP tools — acts on the active account. One switch changes the whole console instead of ten separate pickers.

/connections

04

Watch the console fill with real numbers

Overview, Analytics and Meta Ads pull live spend, impressions, reach, clicks and results from the Graph API, plus the last sync time.

Why: Nothing is mocked. If a number looks wrong here, it is wrong in Meta too — that is the point of a single source of truth.

/dashboard

05

Build or edit an ad

Create a campaign, ad set and ad in one wizard. Upload an image or video and the checklist validates dimensions, format, aspect ratio and duration before Meta ever sees it.

Why: Meta rejects creatives after upload with vague errors. Validating locally turns a 20-minute round trip into an instant red line.

/campaigns

06

Point your AI assistant at the MCP endpoint

Copy the /mcp URL into Claude, ChatGPT or Cursor and add an API key as the bearer token. The assistant then sees your tools.

Why: MCP is the open standard for giving an assistant real tools. Your assistant does not scrape a dashboard — it calls the same audited functions the UI does.

/setup

07

Or drive it with an API key

Issue a scoped key — create ads, pause/resume, update creative, upload media — and call the REST endpoints from a script or n8n.

Why: Scopes mean a key used by a scheduling script can never spend money it wasn't allowed to spend.

/api-keys

08

Keep it in sync and audited

Webhooks push Meta changes back in near real time; a backoff queue retries transient failures; every key action lands in the audit log.

Why: Automation without a paper trail is a liability. You can always answer 'who paused this ad, and when'.

/audit

04 — Talking to it

Things people actually ask on day one

Pause every ad under 1.2 ROAS and move that budget to Retargeting.

What did we spend yesterday, and which creative had the best cost per result?

Swap the video on the Summer Sale ad for this URL and resume it.

Raise the daily budget on the top ad set by 20% but cap it at $200.

{
  "mcpServers": {
    "ethio-viral-ads": { "url": "https://ads.ethio-viral.com/mcp" }
  }
}

Your exact endpoint and config are on the MCP setup page once you sign in.

05 — Guardrails

What stands between an AI and your budget

Server-side tokens

Meta access tokens never reach the browser; the app holds them server-side.

Scoped API keys

Each key carries an explicit permission set and can be revoked instantly.

Per-user queries

Every database query is filtered by your user id on the server.

Full audit log

Create, pause, resume, creative change, media upload — with result and timestamp.

Validation before spend

Creatives and budgets are checked before a single request reaches Meta.

Retry with backoff

Rate limits and permission blips recover on their own instead of silently dropping.

06 — Operating manual

The detailed version lives inside the console

After you sign in, the Manual page walks the same steps against your own account — with live checkmarks for what is already done, copy-paste snippets for your endpoint, and a troubleshooting section for the errors Meta actually returns.

Create an account