Newsletters
This reference is auto-generated from the registered MCP tool providers in perspectapiworkers.
It reflects the tools exposed by the per-site Perspect MCP server.
Connection
Use the per-site MCP endpoint:
https://perspect.com/mcp/{siteName}
Authenticate with OAuth or an MCP API key using Authorization: Bearer sk_mcp_....
Tools
newsletter_campaign_create
Title: Create Campaign
Create a newsletter campaign. Content is Markdown. Use newsletter_list_list to get list IDs for targeting. Campaigns start as draft — set status='scheduled' with a scheduled_at datetime to send (requires newsletters.publish permission). Use newsletter_statistics to review subscriber counts before sending.
Required permission: newsletters.create
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
campaign_name |
string | Yes | — | Campaign name |
slug |
string | No | — | Campaign slug (auto-generated if omitted) |
slug_prefix |
string | No | — | Optional slug prefix for archive paths |
subject |
string | Yes | — | Email subject line |
markdown_content |
string | Yes | — | Campaign markdown body |
status |
string | No | "draft" |
Campaign status Allowed: draft, scheduled, cancelled. |
scheduled_at |
string | No | — | Scheduled local datetime (YYYY-MM-DDTHH:MM[:SS]) |
preview_text |
string | No | — | Preview/preheader text |
from_name |
string | No | — | From name override |
from_email |
string | No | — | From email override |
reply_to_email |
string | No | — | Reply-to email override |
template_id |
string | No | — | Newsletter template version ID |
series_id |
string | No | — | Series ID |
list_ids |
array<string> | No | — | Target list IDs |
tags |
array<string> | No | — | Campaign tags |
notes |
string | No | — | Internal notes |
Example call
{
"tool": "newsletter_campaign_create",
"arguments": {
"campaign_name": "string",
"subject": "string",
"markdown_content": "string",
"status": "draft"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_campaign_delete
Title: Delete Campaign
Delete a newsletter campaign and related placements
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
campaignId |
string | Yes | — | Campaign ID |
Example call
{
"tool": "newsletter_campaign_delete",
"arguments": {
"campaignId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_campaign_get
Title: Get Campaign
Get a specific newsletter campaign by ID
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
campaignId |
string | Yes | — | Campaign ID |
Example call
{
"tool": "newsletter_campaign_get",
"arguments": {
"campaignId": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_campaign_list
Title: List Campaigns
List newsletter campaigns with optional status filter
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit |
number | No | 20 |
Maximum number of results (1-100) |
offset |
number | No | 0 |
Number of results to skip |
status |
string | No | — | Filter by campaign status Allowed: draft, scheduled, sending, sent, cancelled. |
Example call
{
"tool": "newsletter_campaign_list",
"arguments": {
"limit": 20,
"offset": 0
}
}
Output schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"total": {
"type": "number"
},
"pages": {
"type": "number"
}
},
"required": [
"limit",
"offset",
"total",
"pages"
]
}
},
"required": [
"items",
"pagination"
]
}
newsletter_campaign_update
Title: Update Campaign
Update a newsletter campaign. Setting status='scheduled' requires newsletters.publish permission.
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
campaignId |
string | Yes | — | Campaign ID |
campaign_name |
string | Yes | — | Campaign name |
slug |
string | No | — | Campaign slug |
slug_prefix |
string | No | — | Optional slug prefix for archive paths |
subject |
string | Yes | — | Email subject line |
markdown_content |
string | Yes | — | Campaign markdown body |
status |
string | No | "draft" |
Campaign status Allowed: draft, scheduled, cancelled. |
scheduled_at |
string | No | — | Scheduled local datetime (YYYY-MM-DDTHH:MM[:SS]) |
preview_text |
string | No | — | Preview/preheader text |
from_name |
string | No | — | From name override |
from_email |
string | No | — | From email override |
reply_to_email |
string | No | — | Reply-to email override |
template_id |
string | No | — | Newsletter template version ID |
series_id |
string | No | — | Series ID |
list_ids |
array<string> | No | — | Target list IDs |
tags |
array<string> | No | — | Campaign tags |
notes |
string | No | — | Internal notes |
Example call
{
"tool": "newsletter_campaign_update",
"arguments": {
"campaignId": "string",
"campaign_name": "string",
"subject": "string",
"markdown_content": "string",
"status": "draft"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_list_add_subscriber
Title: Add Subscriber to List
Add a subscription to a newsletter list
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subscriptionId |
string | Yes | — | Subscription ID to add |
listId |
string | Yes | — | List ID to add the subscription to |
Example call
{
"tool": "newsletter_list_add_subscriber",
"arguments": {
"subscriptionId": "string",
"listId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_list_create
Title: Create Newsletter List
Create a new newsletter list
Required permission: newsletters.create
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
list_name |
string | Yes | — | Display name of the list |
slug |
string | Yes | — | URL-friendly slug |
description |
string | No | — | List description |
is_public |
boolean | No | true |
Whether the list is visible to subscribers |
is_default |
boolean | No | false |
Whether new subscribers are added to this list by default |
double_opt_in |
boolean | No | true |
Require email confirmation |
welcome_email_enabled |
boolean | No | true |
Send welcome email on subscription |
Example call
{
"tool": "newsletter_list_create",
"arguments": {
"list_name": "string",
"slug": "string",
"is_public": true,
"is_default": false,
"double_opt_in": true,
"welcome_email_enabled": true
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_list_delete
Title: Archive Newsletter List
Archive a newsletter list (soft delete). Valid from: active.
Required permission: newsletters.delete
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
listId |
string | Yes | — | List ID |
Example call
{
"tool": "newsletter_list_delete",
"arguments": {
"listId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_list_get
Title: Get Newsletter List
Get a specific newsletter list by ID
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
listId |
string | Yes | — | List ID |
Example call
{
"tool": "newsletter_list_get",
"arguments": {
"listId": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_list_list
Title: List Newsletter Lists
List all newsletter lists for a site
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status |
string | No | — | Filter by list status Allowed: active, archived. |
Example call
{
"tool": "newsletter_list_list",
"arguments": {}
}
Output schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"pagination": {
"type": "object",
"properties": {
"total": {
"type": "number"
}
},
"required": [
"total"
]
}
},
"required": [
"items",
"pagination"
]
}
newsletter_list_remove_subscriber
Title: Remove Subscriber from List
Remove a subscription from a newsletter list
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subscriptionId |
string | Yes | — | Subscription ID to remove |
listId |
string | Yes | — | List ID to remove the subscription from |
Example call
{
"tool": "newsletter_list_remove_subscriber",
"arguments": {
"subscriptionId": "string",
"listId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_list_update
Title: Update Newsletter List
Update an existing newsletter list
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
listId |
string | Yes | — | List ID |
list_name |
string | No | — | Display name |
slug |
string | No | — | URL-friendly slug |
description |
string | No | — | List description |
is_public |
boolean | No | — | Whether the list is visible to subscribers |
is_default |
boolean | No | — | Default list for new subscribers |
double_opt_in |
boolean | No | — | Require email confirmation |
welcome_email_enabled |
boolean | No | — | Send welcome email |
status |
string | No | — | List status Allowed: active, archived. |
Example call
{
"tool": "newsletter_list_update",
"arguments": {
"listId": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_series_create
Title: Create Newsletter Series
Create a newsletter series
Required permission: newsletters.create
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
series_name |
string | Yes | — | Series name |
description |
string | No | — | Optional description |
status |
string | No | "active" |
Series status (active = sending enabled, paused = sends skipped) Allowed: active, paused, archived. |
cadence |
string | No | "manual" |
Send cadence; use 'manual' to trigger sends explicitly Allowed: manual, daily, weekly, monthly. |
timezone |
string | No | — | IANA timezone (e.g. America/New_York) |
send_time |
string | No | — | Send time (HH:MM) |
day_of_week |
number | No | — | Day of week for weekly cadence (0=Sun ... 6=Sat) |
day_of_month |
number | No | — | Day of month for monthly cadence (1-31) |
next_send_at |
string | No | — | Next send local datetime (YYYY-MM-DDTHH:MM[:SS]) |
list_ids |
array<string> | No | — | Default list IDs for this series |
from_name |
string | No | — | Default from name |
from_email |
string | No | — | Default from email |
reply_to_email |
string | No | — | Default reply-to email |
subject_prefix |
string | No | — | Default subject prefix |
tags |
array<string> | No | — | Series tags |
notes |
string | No | — | Internal notes |
Example call
{
"tool": "newsletter_series_create",
"arguments": {
"series_name": "string",
"status": "active",
"cadence": "manual"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_series_delete
Title: Archive Newsletter Series
Archive a newsletter series. Valid from: active, paused.
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seriesId |
string | Yes | — | Series ID |
Example call
{
"tool": "newsletter_series_delete",
"arguments": {
"seriesId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_series_get
Title: Get Newsletter Series
Get a specific newsletter series by ID
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seriesId |
string | Yes | — | Series ID |
Example call
{
"tool": "newsletter_series_get",
"arguments": {
"seriesId": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_series_list
Title: List Newsletter Series
List newsletter series for the connected site
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status |
string | No | — | Filter by series status Allowed: active, paused, archived. |
Example call
{
"tool": "newsletter_series_list",
"arguments": {}
}
Output schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"pagination": {
"type": "object",
"properties": {
"total": {
"type": "number"
}
},
"required": [
"total"
]
}
},
"required": [
"items",
"pagination"
]
}
newsletter_series_update
Title: Update Newsletter Series
Update an existing newsletter series
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
seriesId |
string | Yes | — | Series ID |
series_name |
string | Yes | — | Series name |
description |
string | No | — | Optional description |
status |
string | No | "active" |
Series status (active = sending enabled, paused = sends skipped) Allowed: active, paused, archived. |
cadence |
string | No | "manual" |
Send cadence; use 'manual' to trigger sends explicitly Allowed: manual, daily, weekly, monthly. |
timezone |
string | No | — | IANA timezone (e.g. America/New_York) |
send_time |
string | No | — | Send time (HH:MM) |
day_of_week |
number | No | — | Day of week for weekly cadence (0=Sun ... 6=Sat) |
day_of_month |
number | No | — | Day of month for monthly cadence (1-31) |
next_send_at |
string | No | — | Next send local datetime (YYYY-MM-DDTHH:MM[:SS]) |
list_ids |
array<string> | No | — | Default list IDs for this series |
from_name |
string | No | — | Default from name |
from_email |
string | No | — | Default from email |
reply_to_email |
string | No | — | Default reply-to email |
subject_prefix |
string | No | — | Default subject prefix |
tags |
array<string> | No | — | Series tags |
notes |
string | No | — | Internal notes |
Example call
{
"tool": "newsletter_series_update",
"arguments": {
"seriesId": "string",
"series_name": "string",
"status": "active",
"cadence": "manual"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_statistics
Title: Newsletter Statistics
Get newsletter statistics including subscriber counts by status and recent activity
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startDate |
string | No | — | Start date for activity period (ISO 8601) |
endDate |
string | No | — | End date for activity period (ISO 8601) |
listId |
string | No | — | Filter stats to a specific list |
Example call
{
"tool": "newsletter_statistics",
"arguments": {}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_subscription_bulk_update
Title: Bulk Update Subscriptions
Perform a bulk action on multiple subscriptions
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
ids |
array<string> | Yes | — | Array of subscription IDs (max 100) |
action |
string | Yes | — | Action to perform Allowed: confirm, unsubscribe, delete, add_to_list, remove_from_list. |
listId |
string | No | — | List ID (required for add_to_list / remove_from_list) |
Example call
{
"tool": "newsletter_subscription_bulk_update",
"arguments": {
"ids": [
"string"
],
"action": "confirm"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_subscription_delete
Title: Delete Subscription
Permanently delete a newsletter subscription and remove from all lists
Required permission: newsletters.delete
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subscriptionId |
string | Yes | — | Subscription ID |
Example call
{
"tool": "newsletter_subscription_delete",
"arguments": {
"subscriptionId": "string"
}
}
Output schema
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
]
}
newsletter_subscription_get
Title: Get Subscription
Get a specific newsletter subscription by ID
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subscriptionId |
string | Yes | — | Subscription ID |
Example call
{
"tool": "newsletter_subscription_get",
"arguments": {
"subscriptionId": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_subscription_get_by_email
Title: Find Subscription by Email
Look up a newsletter subscription by email address
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
email |
string | Yes | — | Email address to look up |
Example call
{
"tool": "newsletter_subscription_get_by_email",
"arguments": {
"email": "string"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
newsletter_subscription_list
Title: List Subscriptions
List newsletter subscriptions with optional filters (status, search, list, date range)
Required permission: newsletters.read
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit |
number | No | 20 |
Maximum number of results (1-100) |
offset |
number | No | 0 |
Number of results to skip |
status |
string | No | — | Filter by subscription status Allowed: pending, confirmed, unsubscribed, bounced, complained. |
listId |
string | No | — | Filter by newsletter list ID |
search |
string | No | — | Search by email or name |
startDate |
string | No | — | Filter subscriptions created after this date (ISO 8601) |
endDate |
string | No | — | Filter subscriptions created before this date (ISO 8601) |
Example call
{
"tool": "newsletter_subscription_list",
"arguments": {
"limit": 20,
"offset": 0
}
}
Output schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"total": {
"type": "number"
},
"pages": {
"type": "number"
}
},
"required": [
"limit",
"offset",
"total",
"pages"
]
}
},
"required": [
"items",
"pagination"
]
}
newsletter_subscription_update_status
Title: Update Subscription Status
Update a subscription's status (confirm, unsubscribe, mark as bounced or complained). Valid from: pending, confirmed, unsubscribed, bounced, complained.
Required permission: newsletters.update
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
subscriptionId |
string | Yes | — | Subscription ID |
status |
string | Yes | — | New status Allowed: confirmed, unsubscribed, bounced, complained. |
notes |
string | No | — | Optional notes (e.g., unsubscribe reason) |
Example call
{
"tool": "newsletter_subscription_update_status",
"arguments": {
"subscriptionId": "string",
"status": "confirmed"
}
}
Output schema
{
"type": "object",
"additionalProperties": true
}
This page is generated from the registered MCP tool providers. Do not edit it by hand.