PlainRouter
What this MCP does
Inspects approved advertising accounts and first-party signal health, and proposes policy-gated Meta ad, creative, upload, budget, and status actions without directly executing spend changes.
Tools
Input schema
{'type': 'object', 'required': ['actions', 'rationale', 'idempotency_key', 'evidence', 'target_source'], 'properties': {'actions': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['increase_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['decrease_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['pause'], 'type': 'string'}, 'params': {'type': 'object', 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['resume'], 'type': 'string'}, 'params': {'type': 'object', 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['replace_creative'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['shift_spend'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['rollback'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_campaign'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_ad_set'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_ad'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['upload_asset'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['staged_asset_id', 'asset_type', 'filename', 'content_sha256'], 'properties': {'filename': {'type': 'string', 'maxLength': 255}, 'mime_type': {'type': ['string', 'null'], 'maxLength': 255}, 'asset_type': {'enum': ['image'], 'type': 'string'}, 'size_bytes': {'type': ['integer', 'null'], 'minimum': 1}, 'content_sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'staged_asset_id': {'type': 'string', 'pattern': '^stage_[a-f0-9]{40}$', 'maxLength': 255}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['adjust_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['set_status'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['status'], 'properties': {'status': {'enum': ['active', 'paused'], 'type': 'string'}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['duplicate_ad_with_creative'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['asset_id', 'status'], 'properties': {'status': {'enum': ['paused'], 'type': 'string'}, 'asset_id': {'type': 'string', 'pattern': '^(image|video):.+$', 'maxLength': 255}, 'name_suffix': {'type': ['string', 'null'], 'maxLength': 100}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}]}, 'maxItems': 25, 'minItems': 1}, 'evidence': {'type': 'array', 'items': {'type': 'object', 'required': ['source_tool', 'fields_used'], 'properties': {'fields_used': {'type': 'array', 'items': {'type': 'string', 'maxLength': 255}, 'maxItems': 50, 'minItems': 1}, 'source_tool': {'enum': ['get_account_state', 'get_signal_health', 'get_performance', 'get-creative-library', 'staged-asset-manifest'], 'type': 'string'}, 'action_index': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 3, 'minItems': 1}, 'rationale': {'type': 'string', 'maxLength': 4000}, 'account_id': {'type': 'integer', 'minimum': 1}, 'target_source': {'enum': ['human_supplied'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'maxLength': 64}}}
Input schema
{'type': 'object', 'required': ['account_id'], 'properties': {'level': {'enum': ['campaign', 'adset', 'ad'], 'type': 'string', 'description': 'Limit results to campaign, adset, or ad objects.'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 200, 'minimum': 1, 'description': 'Maximum objects to return, from 1 to 200.'}, 'adset_id': {'type': 'string', 'description': 'Filter to objects under this parent ad set ID.'}, 'after_id': {'type': 'integer', 'minimum': 1, 'description': 'Database ID cursor from the previous page; continue with its last object ID.'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID available to the authorized workspace.'}, 'campaign_id': {'type': 'string', 'description': 'Filter to objects under this parent campaign ID.'}, 'effective_status': {'type': 'string', 'description': 'Filter by Meta effective status, such as ACTIVE, PAUSED, or ARCHIVED.'}}}
Input schema
{'type': 'object', 'properties': {'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Input schema
{'type': 'object', 'required': ['action_id'], 'properties': {'action_id': {'type': 'string'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Output schema
{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'object', 'required': ['batch_status', 'disposition'], 'properties': {'disposition': {'type': 'object', 'required': ['receipt_status', 'outcome_status', 'outcome_reason_code', 'outcome_checked_at', 'compensation_reason_code', 'recovery_disposition', 'late_restored'], 'properties': {'late_restored': {'type': 'boolean'}, 'outcome_status': {'enum': ['measurable', 'not_measurable', 'unavailable', None], 'type': ['string', 'null']}, 'receipt_status': {'enum': ['pending', 'attempting', 'reconciliation_required', 'committed', 'executed_pending_verification', 'measuring', 'verified', 'compensating', 'compensated', 'compensation_failed', 'irreversible', 'failed', 'reconciliation_exhausted', None], 'type': ['string', 'null']}, 'outcome_checked_at': {'type': ['string', 'null']}, 'outcome_reason_code': {'type': ['string', 'null']}, 'recovery_disposition': {'enum': ['no_compensation', 'restored', 'unrestored', 'contradictory', 'irreversible', 'uncertain', None], 'type': ['string', 'null']}, 'compensation_reason_code': {'type': ['string', 'null']}}}, 'batch_status': {'enum': ['pending', 'approved', 'approved_without_execution', 'auto_approved', 'rejected', 'executing', 'executed_pending_verification', 'compensating', 'measuring', 'completed', 'failed', 'rolled_back', 'rollback_incomplete', 'blocked', 'halted'], 'type': 'string'}}}}}
Input schema
{'type': 'object', 'required': ['batch_id'], 'properties': {'batch_id': {'type': 'string'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Output schema
{'type': 'object', 'required': ['data'], 'properties': {'data': {'type': 'object', 'required': ['batch_status', 'restoration_summary', 'actions'], 'properties': {'actions': {'type': 'array', 'items': {'type': 'object', 'required': ['batch_status', 'disposition'], 'properties': {'disposition': {'type': 'object', 'required': ['receipt_status', 'outcome_status', 'outcome_reason_code', 'outcome_checked_at', 'compensation_reason_code', 'recovery_disposition', 'late_restored'], 'properties': {'late_restored': {'type': 'boolean'}, 'outcome_status': {'enum': ['measurable', 'not_measurable', 'unavailable', None], 'type': ['string', 'null']}, 'receipt_status': {'enum': ['pending', 'attempting', 'reconciliation_required', 'committed', 'executed_pending_verification', 'measuring', 'verified', 'compensating', 'compensated', 'compensation_failed', 'irreversible', 'failed', 'reconciliation_exhausted', None], 'type': ['string', 'null']}, 'outcome_checked_at': {'type': ['string', 'null']}, 'outcome_reason_code': {'type': ['string', 'null']}, 'recovery_disposition': {'enum': ['no_compensation', 'restored', 'unrestored', 'contradictory', 'irreversible', 'uncertain', None], 'type': ['string', 'null']}, 'compensation_reason_code': {'type': ['string', 'null']}}}, 'batch_status': {'enum': ['pending', 'approved', 'approved_without_execution', 'auto_approved', 'rejected', 'executing', 'executed_pending_verification', 'compensating', 'measuring', 'completed', 'failed', 'rolled_back', 'rollback_incomplete', 'blocked', 'halted'], 'type': 'string'}}}}, 'batch_status': {'enum': ['pending', 'approved', 'approved_without_execution', 'auto_approved', 'rejected', 'executing', 'executed_pending_verification', 'compensating', 'measuring', 'completed', 'failed', 'rolled_back', 'rollback_incomplete', 'blocked', 'halted'], 'type': 'string'}, 'restoration_summary': {'enum': ['all_receipts_compensated_late', None], 'type': ['string', 'null']}}}}}
Input schema
{'type': 'object', 'required': ['action_id'], 'properties': {'action_id': {'type': 'string'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Output schema
{'type': 'object', 'required': ['document', 'document_sha256', 'chain_entry', 'disposition'], 'properties': {'document': {'type': 'object'}, 'chain_entry': {'type': 'object'}, 'disposition': {'type': 'object', 'required': ['receipt_status', 'outcome_status', 'outcome_reason_code', 'outcome_checked_at', 'compensation_reason_code', 'recovery_disposition', 'late_restored'], 'properties': {'late_restored': {'type': 'boolean'}, 'outcome_status': {'enum': ['measurable', 'not_measurable', 'unavailable', None], 'type': ['string', 'null']}, 'receipt_status': {'enum': ['pending', 'attempting', 'reconciliation_required', 'committed', 'executed_pending_verification', 'measuring', 'verified', 'compensating', 'compensated', 'compensation_failed', 'irreversible', 'failed', 'reconciliation_exhausted', None], 'type': ['string', 'null']}, 'outcome_checked_at': {'type': ['string', 'null']}, 'outcome_reason_code': {'type': ['string', 'null']}, 'recovery_disposition': {'enum': ['no_compensation', 'restored', 'unrestored', 'contradictory', 'irreversible', 'uncertain', None], 'type': ['string', 'null']}, 'compensation_reason_code': {'type': ['string', 'null']}}}, 'document_sha256': {'type': 'string'}}}
Input schema
{'type': 'object', 'properties': {'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum assets returned per requested asset type.'}, 'cursor': {'type': 'string', 'description': 'Opaque Meta cursor returned by a previous call.'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Required when the workspace has more than one active account.'}, 'asset_type': {'enum': ['all', 'image', 'video'], 'type': 'string', 'default': 'all', 'description': 'Limit results to images or videos. Defaults to all.'}}}
Input schema
{'type': 'object', 'required': ['account_id'], 'properties': {'ad_id': {'type': 'string', 'description': 'Limit metrics to this ad ID.'}, 'adset_id': {'type': 'string', 'description': 'Limit metrics to this ad set ID.'}, 'end_date': {'type': 'string', 'description': 'Inclusive end date in YYYY-MM-DD format.'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID available to the authorized workspace.'}, 'start_date': {'type': 'string', 'description': 'Inclusive start date in YYYY-MM-DD format.'}, 'campaign_id': {'type': 'string', 'description': 'Limit metrics to this campaign ID.'}, 'include_changes': {'type': 'boolean', 'default': False, 'description': 'Include object change history within the effective date window.'}}}
Input schema
{'type': 'object', 'properties': {'days': {'type': 'integer', 'default': 7, 'maximum': 90, 'minimum': 1, 'description': 'Number of reporting days to compare, from 1 to 90.'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Input schema
{'type': 'object', 'properties': {'days': {'enum': [7, 30, 90], 'type': 'integer', 'default': 7, 'maximum': 90, 'minimum': 7, 'description': 'Trailing window in days. One of 7, 30, 90.'}, 'months': {'enum': [12], 'type': 'integer', 'description': 'Trailing window of 12 calendar months, in place of days. Offered only where the workspace plan keeps that history and the workspace is set to keep it.'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Input schema
{'type': 'object', 'properties': {'per_page': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Number of creatives to return per page.'}}}
Input schema
{'type': 'object', 'properties': {'page': {'type': 'integer', 'minimum': 1}, 'status': {'enum': ['pending', 'approved_without_execution', 'rejected', 'executing', 'executed_pending_verification', 'compensating', 'measuring', 'verified', 'failed', 'execution_uncertain', 'rolled_back', 'blocked'], 'type': 'string'}, 'account_id': {'type': 'integer', 'minimum': 1, 'description': 'Advertising account ID. Signals reads use the workspace Meta destination when omitted; other tools may require an ID when multiple accounts are active.'}}}
Output schema
{'type': 'object', 'required': ['data', 'meta'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['batch_status', 'disposition'], 'properties': {'disposition': {'type': 'object', 'required': ['receipt_status', 'outcome_status', 'outcome_reason_code', 'outcome_checked_at', 'compensation_reason_code', 'recovery_disposition', 'late_restored'], 'properties': {'late_restored': {'type': 'boolean'}, 'outcome_status': {'enum': ['measurable', 'not_measurable', 'unavailable', None], 'type': ['string', 'null']}, 'receipt_status': {'enum': ['pending', 'attempting', 'reconciliation_required', 'committed', 'executed_pending_verification', 'measuring', 'verified', 'compensating', 'compensated', 'compensation_failed', 'irreversible', 'failed', 'reconciliation_exhausted', None], 'type': ['string', 'null']}, 'outcome_checked_at': {'type': ['string', 'null']}, 'outcome_reason_code': {'type': ['string', 'null']}, 'recovery_disposition': {'enum': ['no_compensation', 'restored', 'unrestored', 'contradictory', 'irreversible', 'uncertain', None], 'type': ['string', 'null']}, 'compensation_reason_code': {'type': ['string', 'null']}}}, 'batch_status': {'enum': ['pending', 'approved', 'approved_without_execution', 'auto_approved', 'rejected', 'executing', 'executed_pending_verification', 'compensating', 'measuring', 'completed', 'failed', 'rolled_back', 'rollback_incomplete', 'blocked', 'halted'], 'type': 'string'}}}}, 'meta': {'type': 'object'}}}
Input schema
{'type': 'object', 'required': ['actions', 'rationale', 'idempotency_key', 'evidence', 'target_source'], 'properties': {'actions': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['increase_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['decrease_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['pause'], 'type': 'string'}, 'params': {'type': 'object', 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['resume'], 'type': 'string'}, 'params': {'type': 'object', 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9]+$', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['replace_creative'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['shift_spend'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['rollback'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_campaign'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_ad_set'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['create_ad'], 'type': 'string'}, 'params': {'type': 'object'}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['upload_asset'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['staged_asset_id', 'asset_type', 'filename', 'content_sha256'], 'properties': {'filename': {'type': 'string', 'maxLength': 255}, 'mime_type': {'type': ['string', 'null'], 'maxLength': 255}, 'asset_type': {'enum': ['image'], 'type': 'string'}, 'size_bytes': {'type': ['integer', 'null'], 'minimum': 1}, 'content_sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'staged_asset_id': {'type': 'string', 'pattern': '^stage_[a-f0-9]{40}$', 'maxLength': 255}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['adjust_budget'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['new_daily_budget_minor'], 'properties': {'new_daily_budget_minor': {'type': 'integer', 'minimum': 1}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['set_status'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['status'], 'properties': {'status': {'enum': ['active', 'paused'], 'type': 'string'}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}, {'type': 'object', 'required': ['type', 'target_entity', 'params', 'rationale'], 'properties': {'type': {'enum': ['duplicate_ad_with_creative'], 'type': 'string'}, 'params': {'type': 'object', 'required': ['asset_id', 'status'], 'properties': {'status': {'enum': ['paused'], 'type': 'string'}, 'asset_id': {'type': 'string', 'pattern': '^(image|video):.+$', 'maxLength': 255}, 'name_suffix': {'type': ['string', 'null'], 'maxLength': 100}}}, 'rationale': {'type': 'string', 'maxLength': 2000}, 'target_entity': {'type': 'object', 'required': ['type', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 128}, 'name': {'type': ['string', 'null'], 'maxLength': 255}, 'type': {'enum': ['ad_account', 'campaign', 'ad_set', 'ad'], 'type': 'string', 'maxLength': 64}}, 'additionalProperties': False}, 'idempotency_key': {'type': 'string', 'maxLength': 255}}}]}, 'maxItems': 25, 'minItems': 1}, 'evidence': {'type': 'array', 'items': {'type': 'object', 'required': ['source_tool', 'fields_used'], 'properties': {'fields_used': {'type': 'array', 'items': {'type': 'string', 'maxLength': 255}, 'maxItems': 50, 'minItems': 1}, 'source_tool': {'enum': ['get_account_state', 'get_signal_health', 'get_performance', 'get-creative-library', 'staged-asset-manifest'], 'type': 'string'}, 'action_index': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 3, 'minItems': 1}, 'rationale': {'type': 'string', 'maxLength': 4000}, 'account_id': {'type': 'integer', 'minimum': 1}, 'target_source': {'enum': ['human_supplied'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'maxLength': 64}}}
Input schema
{'type': 'object', 'properties': {}}
Recent tool changes
Similar MCP servers
AdButler
Manages AdButler advertisers, campaigns, ad items, audiences, zones, creatives, catalogs, and advertising reports.
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Intelligence
Provides vendor, market, SaaS, workforce, government contract, public company, regulatory, competitive, and AI-brand intelligence…
Neotic
Enables agents to create contextual in-app experiences, announcements, and triggers.
CorpusIQ
Connects authenticated users to business systems such as CRM, ecommerce, advertising, analytics, email marketing, SEO, calendars,…
Riley Craig x402 Agent Store
Provides paid blockchain data and transaction reads, AI brand-visibility research, and company or lead enrichment services.