update_campaign
Modify unsent email campaign details like subject, content, sender, or target segment to adjust messaging before distribution.
Instructions
Update an existing campaign (only unsent campaigns can be updated).
Args: campaign_id: The campaign ID (e.g. "mc_12345"). subject: New subject line (optional). text_body: New body content (optional). sender_id: New sender ID (optional). segment_id: New segment ID (optional). preview_text: New preview text (optional).
Returns: The updated campaign record.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| subject | No | ||
| text_body | No | ||
| sender_id | No | ||
| segment_id | No | ||
| preview_text | No |
Implementation Reference
- mcp_server.py:149-168 (handler)The MCP tool handler for update_campaign. It wraps the client method.
@mcp.tool() def update_campaign(campaign_id: str, subject: str | None = None, text_body: str | None = None, sender_id: str | None = None, segment_id: str | None = None, preview_text: str | None = None) -> dict: """ Update an existing campaign (only unsent campaigns can be updated). Args: campaign_id: The campaign ID (e.g. "mc_12345"). subject: New subject line (optional). text_body: New body content (optional). sender_id: New sender ID (optional). segment_id: New segment ID (optional). preview_text: New preview text (optional). Returns: The updated campaign record. """ return _client.update_campaign(campaign_id, subject=subject, text_body=text_body, sender_id=sender_id, segment_id=segment_id, preview_text=preview_text) - client.py:136-154 (handler)The underlying KeilaClient method that performs the API call to update the campaign.
def update_campaign(self, campaign_id: str, subject: str | None = None, text_body: str | None = None, sender_id: str | None = None, segment_id: str | None = None, preview_text: str | None = None) -> dict: """Update an existing campaign.""" campaign_data = {} if subject: campaign_data["subject"] = subject if text_body: campaign_data["text_body"] = text_body if sender_id: campaign_data["sender_id"] = sender_id if segment_id: campaign_data["segment_id"] = segment_id if preview_text is not None: campaign_data["preview_text"] = preview_text resp = self.session.patch(f"{self.url}/api/v1/campaigns/{campaign_id}", json={"data": campaign_data}, headers=self._headers(), timeout=30) resp.raise_for_status() return resp.json()