MCP tool · Bridge
bridge_transfer
Runs a prepared transfer, once, after your explicit yes; the plan is checked again first. Answers with the outcome (completed, partial, failed…) within about 25 seconds, or running. A Meta → Meta copy reuses each ad's post (likes, comments) when Meta lets the destination use it, and copies it as a new post otherwise.
What it does
Run a Bridge transfer prepared by prepare_bridge_transfer, only after the user explicitly said yes to its full recap. The plan is checked again first (if anything changed, nothing is transferred: prepare it again). Answers within ~25 s with the outcome, or status running: then follow it with bridge_transfer_status. A plan runs once.
Parameters
-
plan_idstring required -
confirmconstant requiredtrue = the user said yes to the recap
Example
Your assistant calls it for you when you ask in your own words. What it sends (MCP tools/call, JSON-RPC 2.0):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bridge_transfer",
"arguments": {
"plan_id": "7b0f3c52-4d1e-4c8a-9f61-2a5e8d3c1b90",
"confirm": true
}
}
} The same call over HTTP with an API key, for an MCP client of your own (an assistant that signs in sends its OAuth token instead):
curl -X POST https://app.apogee.ad/mcp \
-H "Authorization: Bearer $APOGEE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"bridge_transfer","arguments":{"plan_id":"7b0f3c52-4d1e-4c8a-9f61-2a5e8d3c1b90","confirm":true}}}' confirm: true is the user's yes: send it only after showing them exactly what will happen and getting their explicit agreement.
Access and cost
| Plans | Pro and Scale. |
|---|---|
| Scope | launch: a connection or an API key without it does not see this tool (scopes). |
| Effect | Changes the ad account or acts as the Page, once, after the user's explicit yes. |
| Credits | 15 credits per ad created, counted at the end (an ad that failed is free), plus 120 for a transfer to Meta (texts written by AI). A call that fails costs nothing (credits). |
| Rate limit | 600 MCP requests per 15 minutes on Pro, 1,200 on Scale (rate limits). |
| Daily cap | Counts 10 units toward the 2,000 units one API key or assistant connection can use in 24 hours. |
In the REST API
The same thing for your own code, with an API key:
- Confirm bridge transfer:
POST /bridge-transfers/{id}/confirm
Related tools
Bridge: Ads of one platform launched on another (Meta → TikTok or Snapchat, and back), or a Meta → Meta copy between two ad accounts. Prepared, shown in full, then run after your explicit yes; a plan runs once, within 24 hours.
prepare_bridge_transfer: Prepares a transfer without transferring anything: the source ads (or a Meta ad set's or campaign's ads), the destination campaign and its existing ad set / ad group / ad squad or a new one copied from a template. Returns the recap and aplan_id;ready: falselists what to ask (a TikTok identity, a Snapchat public profile, a website…), then prepare again withextra_fields. Incompatibilities are listed: your yes accepts them. For a Meta → Meta copy, the destination's fields go inmapping.bridge_transfer_status: Where a transfer is: running, completed, partial (with the failures), failed, not run, or unknown (check the destination before running it again).list_bridge_transfers: The ads already bridged from a source ad account, newest first, with where each one went.get_bridge_stats: The Bridge's Stats tab: each creative bridged from a Meta ad account, its Meta ad next to its TikTok and Snapchat copies, with their spend and results over the period (7-day click attribution everywhere), each platform in its own currency.get_bridge_daily_stats: The Bridge's Daily tab: day by day, per platform, the spend, revenue, ROAS, impressions, link clicks and purchases of every creative bridged from a Meta ad account (366 days at most). Platforms are never added up.