Lists the platform accounts linked to the organization in Data sources: the ad account, analytics property, Search Console site, business profile, page or channel each module reads (filter with platform). Each one has platform, id (the platform's own id: the customer id, property id, site URL…), composite_id (platform:id, the id dashboards and reports use), name, is_default (the first one of its platform is the one modules use when nobody picks), inherited and source_org_id (the account is read with the workspace's connection) and fields (the stored fields: currency, manager account, permission level…). WhatsApp numbers appear under whatsapp_business. Reads only MB Suite: no platform is called. Not paginated. Requires view access to Integrations. With Google Ads, Google Business Profile, LinkedIn, TikTok or YouTube, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records are left out of the response (the permissions guide lists what each platform allows).
Scope
integrations:read
Permission
View the module
MCP tool
integrations_data_sources_listOn the full surface; on the compact one, mb_execute_operation with id: "integrations.data_sources.list".
Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota).
Links one account of a platform to the organization so its modules read it (the account the Data sources selector would pick): connection carries the platform's id field and its name. The platform must have an active connection (the organization's own or, for a platform an Account inherits, its workspace's: integrations.credentials.availability): MB Suite stores the link and reads the account later with that connection, so without one it is 409 integration_not_connected and nothing is linked. For Google Analytics, Search Console and Business Profile a new account must be one the connection reaches (400 account_not_in_connection): that check calls Google and spends its external quota; other platforms are not checked against the platform now. Linking an account that is already linked refreshes it (outcome updated); a new one is added (added) or, when the organization keeps one account per platform, replaces the current one (replaced, which unlinks the previous). 409 limit_reached (details.resource connections, details.limit) when no more accounts of that platform can be linked. WhatsApp numbers are chosen in the app, not here. Who can: in a workspace, its owners and admins; in an Account, the workspace's team for the platforms that use the workspace's connection (only those, if the Account pays for itself) and the Account's own owners and admins for the platforms it connects itself (none while it is managed by the workspace). Viewers never. 403 data_sources_forbidden otherwise; 403 demo_read_only in a demo organization. Returns the platform's linked accounts after saving. With Google Ads, Google Business Profile, LinkedIn, TikTok or YouTube, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records are left out of the response (the permissions guide lists what each platform allows).
Scope
integrations:write
Permission
Edit in the module
MCP tool
integrations_data_sources_saveOn the full surface; on the compact one, mb_execute_operation with id: "integrations.data_sources.save".
Declared cost: up to 4 reads and 1 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
platformenumpathrequired
The platform of the account to link (google_ads, meta_ads, facebook_page, instagram, tiktok_ads, tiktok, linkedin_ads, linkedin_page, linkedin_profile, google_analytics, google_search_console, google_business_profile, youtube).
connectionobjectbodyrequired
The account's fields, keyed by the platform's own id field: google_ads external_customer_id (+ mcc_id, mcc_name, currency); meta_ads ad_account_id (act_…, + currency); facebook_page page_id; instagram ig_user_id and page_id; tiktok_ads advertiser_id (+ currency); tiktok open_id (+ display_name); linkedin_ads account_id (+ currency); linkedin_page organization_id (+ vanity_name); linkedin_profile person_id; google_analytics property_id; google_search_console site_url (+ permission_level); google_business_profile account_id and location_id; youtube channel_id (+ channel_title). name (and label) are the display name. Unknown fields are ignored.
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.
Unlinks one linked account of a platform, given in identity (the id field of the account in integrations.data_sources.list): the modules stop reading it, and if it was the platform's only account the platform is left unlinked. It only removes the link: the platform connection and the account's data on the platform stay. Unlinking an account that is not linked changes nothing (changed: false). WhatsApp numbers are unlinked in the app. Who can: in a workspace, its owners and admins; in an Account, the workspace's team for the platforms that use the workspace's connection (only those, if the Account pays for itself) and the Account's own owners and admins for the platforms it connects itself (none while it is managed by the workspace). Viewers never. 403 data_sources_forbidden otherwise; 403 demo_read_only in a demo organization. Returns the platform's remaining linked accounts. With Google Ads, Google Business Profile, LinkedIn, TikTok or YouTube, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records are left out of the response (the permissions guide lists what each platform allows).
Scope
integrations:write
Permission
Edit in the module
MCP tool
integrations_data_sources_unlinkOn the full surface; on the compact one, mb_execute_operation with id: "integrations.data_sources.unlink".
Unlinks all the linked accounts of one platform at once (Unlink in Data sources): the modules stop reading that platform until an account is linked again. The platform connection stays (to remove it, integrations.credentials.disconnect). WhatsApp numbers are unlinked in the app. Who can: in a workspace, its owners and admins; in an Account, the workspace's team for the platforms that use the workspace's connection (only those, if the Account pays for itself) and the Account's own owners and admins for the platforms it connects itself (none while it is managed by the workspace). Viewers never. 403 data_sources_forbidden otherwise; 403 demo_read_only in a demo organization. Returns how many accounts were unlinked.
Scope
integrations:write
Permission
Edit in the module
MCP tool
integrations_data_sources_unlink_platformOn the full surface; on the compact one, mb_execute_operation with id: "integrations.data_sources.unlink_platform".
curl-X POST "https://api.mb-suite.com/v1/integrations/data-sources/{platform}/unlink-all" \
-H"Authorization: Bearer $MB_API_KEY"
Try it with your test API key
With a test API key the request always goes to your practice organization: example data you can reset.
curl-X POST "https://api.mb-suite.com/v1/integrations/data-sources/{platform}/unlink-all" \
-H"Authorization: Bearer $MB_TEST_KEY"
POST/v1/integrations/data-sources/bulk/assign
Assign workspace accounts to its Accounts
integrations.data_sources.bulk.assign
WriteBulk · up to 500IdempotentSince 2026-11-01
From a workspace, assigns to each of its Accounts an account of the workspace's own connection, or leaves it without one (connection: null), up to 500 changes per call (Bulk assignment in Integrations). Each change is account_id + platform (google_ads, meta_ads, google_analytics, tiktok_ads, google_search_console, google_business_profile, facebook_page, instagram, linkedin_ads, linkedin_page) + connection (the same fields as integrations.data_sources.save). Only Accounts of this workspace whose platform uses the workspace's connection: an Account that pays for itself, an independent one or one where the platform was released keeps its own and that change comes back in failed (platform_not_inherited), like an unknown Account (account_not_found), a platform the workspace has no active connection of (integration_not_connected), a full platform (limit_reached) or, for Google Analytics, Search Console and Business Profile, an account the workspace's connection does not reach (account_not_in_connection; that check calls Google); the rest is saved. Owners and admins of the workspace only; outside the app it needs a dry run (which says which changes apply) and a confirm_token. With Google Business Profile or LinkedIn, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records are left out of the response (the permissions guide lists what each platform allows).
Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.
Scope
integrations:write
Permission
Edit in the module · Only owner, admin
MCP tool
integrations_data_sources_bulk_assignOn the full surface; on the compact one, mb_execute_operation with id: "integrations.data_sources.bulk.assign".
Declared cost: up to 510 reads and 500 writes per call (they count against the daily quota). Touches an external platform (google): it counts against the external operations quota.
Parameters
changesarray<object>bodyrequired
The assignments, one per Account and platform (up to 500); each one that cannot be applied comes back in failed with its reason.
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.