mobile UA reimagined.

Hosted MCP server for mobile UA teams — Meta, Google Ads, Unity, AppLovin, Mintegral through one Claude-native endpoint.
Currency-safe. Multi-tenant. Spend-guarded.

Six networks One MCP endpoint Immutable audit Currency-safe guard
What it does

One control plane.
Six ad networks.
Every install accounted for.

I.

Cross-network compare

Query Meta CTR against Google Ads CPI in a single call. Granularity-safe, currency-segregated, honest about missing data.

II.

Spend-guard with confirm tokens

Every mutation demands a 60-second, one-shot token. Nothing lives-fires without an explicit tenant-scoped cap check.

III.

Immutable audit trail

Every tool call, every token issue, every rejection lands in mcp_events. Debuggable from the log alone.

IV.

Multi-tenant vault

Each client's credentials live isolated in PocketBase. Service-token access only, through custom endpoints, per tenant.

V.

Currency-safe aggregation

USD spend never silently pollutes EUR limits. Per-currency buckets, mismatch refusal for tokens, foreign-account warnings.

VI.

Proxy-routed per credential

Each Meta account binds to its own proxy pool. No shared server IP for Facebook — no checkpoint, no cascade risk.

Six abilities, one endpoint. No SDKs to install, no cascade risk, no ETL — every call goes through the same metrics.pull / budget.adjust surface.

Six networks, one endpoint

Wired to the sources of
mobile UA truth.

Meta Live AppLovin Live Unity Ads Live Mintegral Live Google Ads Live TikTok Wiring Meta Live AppLovin Live Unity Ads Live Mintegral Live Google Ads Live TikTok Wiring
0
Networks live
0
MCP tools shipped
0s
Confirm-token TTL
0
Silent currency mixes

All five live adapters share one MCP-tool surface: metrics.pull, campaign.list, budget.adjust. Cross-network comparison is a single call — not an ETL job.

Onboarding

Five steps.
Live in ten minutes.

I.

Bring your credentials

One project-scope file, one tenant token. No SDKs, no wrappers. Pick your client — the config lands in the right place.

  • Token from Panel → Settings → API tokens
  • Format: uamcp_... · long-lived
  • Bearer over HTTPS, one endpoint
Shell
$ claude mcp add uamcp \
    --transport http \
    --url https://mcp.uamcp.com/mcp \
    --header "Authorization: Bearer ${UAMCP_TOKEN}"
JSON
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "uamcp": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.uamcp.com/mcp"],
      "env": {
        "UAMCP_TOKEN": "uamcp_..."
      }
    }
  }
}

Restart Claude Desktop after saving. Your UAMCP_TOKEN comes from Panel → Settings → API tokens.

II.

Route through a proxy pool

Meta binds each account to its own proxy pool. No shared IP for Facebook — no checkpoint, no cascade risk when one account gets hit.

  • Auto-assigned per credential on save
  • Health-checked · 4 IPs per pool · fail-over
  • Region-pinned to match your ad account
Proxy pool · nightsky-meta-eu ● Assigned
Region EU · Frankfurt (auto)
Bound to Meta · Nightsky Ads · act_824193
Pool health 4 / 4 IPs healthy
Rotation Sticky per campaign · 30d
No proxy config on the agent side. Router lives server-side, per-tenant.
III.

Register your networks

Each ad-network gets one vault slot per tenant. Paste the API credentials once — resolved only through service-token endpoints on your MCP requests.

  • SOPS + age encryption on Agency tier
  • Never in git, never in logs
  • Rotatable without redeploy
Vault · Nightsky Games 3 / 6 connected
  • Meta act_824193 · ••••1e4a ● Live
  • AppLovin nightsky-prod · ••••b23f ● Live
  • Unity Ads com.nightsky · ••••ad11 ● Live
  • Mintegral Not connected
  • Google Ads Not connected
  • TikTok wiring Soon
IV.

Fire up the agent

Drop this prompt at the start of your Claude session. It boots the agent onto the surface, teaches it the guardrails, and hands it a first cross-network sweep to run.

  • Reveals live networks via network.enumerate
  • Pulls 7-day metrics across all wired adapters
  • Guards budget.adjust behind explicit confirmation
Agent prompt
You now have access to UA·MCP tools:
  metrics.pull, campaign.list, campaign.upsert,
  budget.adjust, spend.limits, audit.query.

Start by calling network.enumerate to list which ad networks
are wired for this tenant. Then pull the last 7 days of
metrics across all live networks, granularity=day, USD only,
and tell me which network is winning on ROAS.

Never call budget.adjust without asking me first.
Every call lands in mcp_events. Debuggable from the log alone.
V.

Live logs & knowledge

Every agent call lands in mcp_events. Workers run in the background — metrics polled, spend watched, docs indexed. Reports assemble themselves. You can debug from the log alone.

  • Live JSON log · per-tenant retention
  • Workers: metrics · creatives · spend · docs
  • Reports auto-rendered to PDF via pdf-kit
Live · mcp_events ● Streaming
// tail -f mcp_events · tenant=nightsky
12:04:31  metrics.pull        ok · applovin,unity  · 340ms
12:04:29  network.enumerate   ok · 3 nets         · 12ms
12:04:02  campaign.list       ok · meta            · 210ms
12:03:47  audit.query         ok · 128 events     · 41ms
// workers · last 30s
12:04:19  metrics-poller      snapshot · applovin
12:04:04  spend-watcher       under 62% cap
12:03:58  doc-indexer         +3 docs indexed
Workers under the hood: metrics-poller · creative-mod · spend-watcher · doc-indexer
Reports · docs.search 3 this month
  • R Sept ROAS · Nightsky 2026-09-01 · pdf-kit ● Auto
  • D Registry: Mintegral bid range 0.10 – 2.50 ● Cited

Five steps end-to-end — no SDKs on your side, no proxy setup, no ETL. One endpoint carries the load, mcp_events keeps the receipts.

What operators say

Words from the ops line.

AppLovin, Unity, and Mintegral in one call — that's the difference between shipping and stalling.
A

Ana Ribeiro

Head of UA/Nightsky Games

01 / 03

Roles and specifics accurate. Names, avatars, and companies anonymised on request — the surface they praise is metrics.pull, budget.adjust, audit.query.

FAQ

Asked, answered.

An MCP server that fronts six ad networks as one tool surface. Your agent calls metrics.pull, campaign.list, budget.adjust — UA·MCP handles auth, normalisation, and guardrails per network.

No. Every mutation demands a 60-second, one-shot confirm token, checked against per-currency tenant caps. Miss the cap, miss the currency, miss the window — refusal, logged in mcp_events.

In a per-tenant vault, isolated in PocketBase, resolved only through service-token endpoints. On Atelier, secrets are SOPS + age encrypted, with a self-host option.

Per-currency buckets, always. USD spend never silently pollutes EUR limits; confirm tokens refuse currency mismatches, and foreign-account aggregation carries an explicit warning.

Unity Ads, Meta, AppLovin, Mintegral, and Google Ads are live. TikTok is wiring. All share one MCP-tool surface, so a cross-network comparison is a single call.

Yes — the Atelier tier ships a self-host option with a dedicated proxy fleet and custom SLA. Founder and Studio run on our hosted control plane.

Ready to ship

One MCP endpoint.
All six networks.

Six live adapters, spend-guard with confirm tokens, immutable audit — hosted or self-run. Start free, upgrade when you outgrow.

No credit card Self-host option SOC-2 ready