google_ads_update_keyword_status
Update keyword status in Google Ads campaigns by enabling, pausing, or removing keywords with specified criteria.
Instructions
Update keyword status (enable, pause, or remove).
Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID status: New status (ENABLED, PAUSED, or REMOVED)
Returns: Success message
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | ||
| ad_group_id | Yes | ||
| criterion_id | Yes | ||
| status | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- MCP tool handler that updates keyword status (enable, pause, or remove). Calls KeywordManager.update_keyword_status.
def google_ads_update_keyword_status( customer_id: str, ad_group_id: str, criterion_id: str, status: str ) -> str: """ Update keyword status (enable, pause, or remove). Args: customer_id: Customer ID (without hyphens) ad_group_id: Ad group ID criterion_id: Keyword criterion ID status: New status (ENABLED, PAUSED, or REMOVED) Returns: Success message """ with performance_logger.track_operation('update_keyword_status', customer_id=customer_id): try: client = get_auth_manager().get_client() keyword_manager = KeywordManager(client) status_upper = status.upper() result = keyword_manager.update_keyword_status( customer_id, ad_group_id, criterion_id, KeywordStatus[status_upper] ) # Audit log audit_logger.log_api_call( customer_id=customer_id, operation="update_keyword_status", resource_type="keyword", resource_id=criterion_id, action="update", result="success", details={'new_status': status_upper} ) # Invalidate cache get_cache_manager().invalidate(customer_id, ResourceType.KEYWORD) status_messages = { "ENABLED": "Keyword is now active and will trigger ads.", "PAUSED": "Keyword is now paused and will not trigger ads.", "REMOVED": "Keyword has been removed." } return ( f"✅ Keyword status updated to {status_upper}\n\n" f"**Criterion ID**: {criterion_id}\n\n" f"{status_messages.get(status_upper, 'Status updated successfully.')}" ) except Exception as e: error_msg = ErrorHandler.handle_error(e, context="update_keyword_status") return f"❌ Failed to update keyword status: {error_msg}" - managers/keyword_manager.py:36-40 (schema)Enum defining valid keyword statuses: ENABLED, PAUSED, REMOVED
class KeywordStatus(str, Enum): """Keyword status options.""" ENABLED = "ENABLED" PAUSED = "PAUSED" REMOVED = "REMOVED" - managers/keyword_manager.py:302-349 (helper)KeywordManager method that builds the AdGroupCriterionOperation, sets field mask for status, calls mutate_ad_group_criteria to update the keyword status in Google Ads.
def update_keyword_status( self, customer_id: str, ad_group_id: str, criterion_id: str, status: KeywordStatus ) -> Dict[str, Any]: """ Update keyword status. Args: customer_id: Customer ID ad_group_id: Ad group ID criterion_id: Keyword criterion ID status: New status Returns: Operation result """ ad_group_criterion_service = self.client.get_service("AdGroupCriterionService") operation = self.client.get_type("AdGroupCriterionOperation") criterion = operation.update criterion.resource_name = ad_group_criterion_service.ad_group_criterion_path( customer_id, ad_group_id, criterion_id ) criterion.status = self.client.enums.AdGroupCriterionStatusEnum[status.value] # Set field mask self.client.copy_from( operation.update_mask, field_mask_pb2.FieldMask(paths=["status"]) ) # Update keyword response = ad_group_criterion_service.mutate_ad_group_criteria( customer_id=customer_id, operations=[operation] ) logger.info(f"Updated keyword {criterion_id} status to {status.value}") return { "criterion_id": criterion_id, "new_status": status.value, "message": f"Keyword status updated to {status.value}" } - tools/keywords/mcp_tools_keywords.py:24-25 (registration)Registration function decorated with @mcp.tool() that registers google_ads_update_keyword_status as an MCP tool. Called from google_ads_mcp.py via _TOOL_MODULES registration.
def register_keyword_tools(mcp: FastMCP): """Register keyword management tools with MCP server.""" - google_ads_mcp.py:483-483 (registration)Top-level registration entry in _TOOL_MODULES list that wires the keyword tools module into the MCP server.
("keywords", "tools.keywords.mcp_tools_keywords", "register_keyword_tools"),