Cross-network compare
Query Meta CTR against Google Ads CPI in a single call. Granularity-safe, currency-segregated, honest about missing data.
Hosted MCP server for mobile UA teams — Meta, Google Ads, Unity, AppLovin, Mintegral through one agent-native endpoint.
Currency-safe. Multi-tenant. Spend-guarded.
Meta Live
AppLovin Live
Mintegral Live
Google Ads Live
Meta Live
AppLovin Live
Mintegral Live
Google Ads Live 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.
Query Meta CTR against Google Ads CPI in a single call. Granularity-safe, currency-segregated, honest about missing data.
Every mutation demands a 60-second, one-shot token. Nothing lives-fires without an explicit tenant-scoped cap check.
Every tool call, every token issue, every rejection lands in mcp_events. Debuggable from the log alone.
Each client's credentials live isolated in PocketBase. Service-token access only, through custom endpoints, per tenant.
USD spend never silently pollutes EUR limits. Per-currency buckets, mismatch refusal for tokens, foreign-account warnings.
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.
One project-scope file, one tenant token. No SDKs, no wrappers. Pick your client — the config lands in the right place.
$ claude mcp add uamcp \ --transport http \ --url https://mcp.uamcp.com/mcp \ --header "Authorization: Bearer ${UAMCP_TOKEN}"
// ~/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.
Meta binds each account to its own proxy pool. No shared IP for Facebook — no checkpoint, no cascade risk when one account gets hit.
Each ad-network gets one vault slot per tenant. Paste the API credentials once — resolved only through service-token endpoints on your MCP requests.
Meta act_824193 · ••••1e4a ● Live
AppLovin nightsky-prod · ••••b23f ● Live
Mintegral Not connected
Google Ads Not connected Drop this prompt at the start of your agent session — Claude, Cursor, Windsurf, or any MCP-native client. It boots the agent onto the surface, teaches it the guardrails, and hands it a first cross-network sweep to run.
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 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.
// 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
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.
AppLovin, Unity, and Mintegral in one call — that's the difference between shipping and stalling.
Roles and specifics accurate. Names, avatars, and companies anonymised on request — the surface they praise is metrics.pull, budget.adjust, audit.query.
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.
Companies we collaborate with.
5 slots remaining · Wave 2