PricingOpen the demo

Platform

Not a dashboard. An engine.

Anyone can chart an ads API. Matching every krone to the click that caused it, judging it after COGS and lifetime value, and then letting an agent safely change your campaigns — that is five hard systems working together.

A precision-machined module with a single blue light seam running through it.

Connectors

OAuth · webhooks

Attribution

click-id → order

Profit engine

COGS · LTV

AI reasoning

verdicts + evidence

MCP actions

you approve · we push

01

Connectors that stay honest

OAuth apps reviewed by Meta and Google, incremental sync with backfill, and webhooks for anything that can't wait for a poll. No pixels to paste, no scraping, no CSV exports.

  • Reviewed OAuth apps
  • Incremental sync + backfill
  • Webhook ingestion
  • Automatic re-auth
02

Attribution that survives iOS

A first-party script captures click ids at landing, and orders are matched back deterministically — not modelled, not guessed. What can't be matched is labelled unattributed rather than quietly assigned to whoever shouts loudest.

  • First-party click-id capture
  • Deterministic order matching
  • Cohort LTV windows
  • Honest unattributed bucket
03

A profit engine, not a revenue counter

Product-level COGS from Shopify, subscription economics from Stripe, refunds and fees deducted. Every campaign is judged on money you keep — and on marginal ROAS, so scaling advice is a model, not a hunch.

  • Product-level COGS
  • Refunds, fees, discounts
  • Marginal ROAS modelling
  • Multi-currency
04

Reasoning with evidence attached

The AI layer runs on your resolved data, not on screenshots of it. Every verdict cites the numbers behind it, so you can disagree with the reasoning instead of trusting a black box.

  • Verdicts with citations
  • Anomaly + drift detection
  • Cohort-aware LTV logic
  • Stable day-to-day scoring
05

MCP: the part that actually acts

Meta and Google are exposed to the agent as typed, permissioned MCP tools. It can propose a budget change or pause a keyword — but nothing leaves the building without your approval, and everything is logged and revertible.

  • Typed tool schemas
  • Human approval gate
  • Immutable audit log
  • One-click revert

What MCP actually means

Your ad accounts, as tools an agent can safely hold.

MCP — the Model Context Protocol — is the open standard for giving AI models typed, permissioned access to real systems. Most “AI marketing tools” can only write you a summary. Kepra exposes Meta and Google as callable tools, so the agent can propose a real change — and the approval gate makes that safe.

Chatbots

Describe the problem back to you.

Dashboards

Show the number and wait.

Kepra

Proposes the fix, executes it on approval.

The tools the agent is allowed to hold.

Typed, scoped, logged. Reads are free; every write waits for you.

kepra — mcp tool surface
  • meta.campaign.pause(campaign_id)approval required
  • meta.adset.set_budget(adset_id, amount)approval required
  • meta.audience.create(spec)approval required
  • google.keyword.pause(keyword_id)approval required
  • google.campaign.set_bid(id, target_roas)approval required
  • kepra.profit.query(range, dimension)read-only
  • kepra.leak.list(threshold)read-only

Every write is proposed by the agent, approved by you, executed over MCP, and written to an immutable audit log — with a one-click revert.

Nothing auto-pushes

Every write is a proposal until you press approve. Autopilot is a setting you may never turn on — and we ship it off.

EU-hosted, row-level isolated

Data lives in the EU (Ireland) with row-level security: an org can only ever read its own rows, enforced by the database, not by application code.

Every action is auditable

Who proposed it, what evidence it cited, who approved it, what the platform answered — written down, permanently.

The engine is easier to feel than to read about.