NewsMAN MCP by usefulapi
Read NewsMAN lists, subscribers, segments, newsletter and automation stats; manage subscribers.
我該用這個嗎
品質與安全性
發現項目(5)
- LOW在 newsman_count_segment_subscribers 中
- LOW在 newsman_list_segment_subscribers 中
- LOW在 newsman_get_newsletter_clicked_links 中
- LOW在 newsman_add_subscriber_to_segment 中
- LOW在 newsman_remove_subscriber_from_segment 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"newsman": {
"url": "https://newsman.usefulapi.io/mcp"
}
}
}遠端端點
https://newsman.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(26)
🟢newsman_list_lists
All email lists (and SMS lists) this key can access, each with list_id, list_name and list_type. Start here: most other tools need a list_id. GET /v2/list/all.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_list(list_id)
Properties of one list: sender name and email, owner contact details, site, link parameters, send rate. The list secret is never returned. GET /v2/list/getProps.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id (from newsman_list_lists).",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_count_list_subscribers(list_id)
The number of active (subscribed) subscribers of a list. GET /v2/list/count.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_list_subscribers(list_id, status, since, page, limit)
Subscribers of a list with a given status (subscribed, unsubscribed, bounced, spam, inactivated), optionally only those who joined since a UTC date. Each item has subscriber_id, email and the date of that status. Paged (page from 0, up to 1000 per page). GET /v2/list/getSubscribers.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"status": {
"type": "string",
"enum": [
"subscribed",
"unsubscribed",
"bounced",
"spam",
"inactivated"
],
"description": "Subscriber status."
},
"since": {
"description": "Only subscribers who joined on or after this moment, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"page": {
"description": "Page number, starting at 0 (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Results per page, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"list_id",
"status"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_list_growth(list_id, days, start_date, stop_date)
Daily evolution of a list: total and eligible subscribers, unsubscribes, spam reports and hard bounces per day. Give `days` (last N days) OR start_date/stop_date; the period is at most 90 days. GET /v2/list/subscribersEvolution.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"days": {
"description": "The last N days, 1-90 (alternative to start_date/stop_date; NewsMAN allows at most 90 days).",
"type": "integer",
"minimum": 1,
"maximum": 90
},
"start_date": {
"description": "Start of the period, UTC, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"stop_date": {
"description": "End of the period, UTC, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_search_subscribers(list_id, keywords, status, since, page, ...)
Search the subscribers of a list by keywords (email or name) and status, optionally only those who joined since a UTC date. Paged (page from 0, up to 1000 per page). GET /v2/subscriber/search.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"keywords": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Text to search for, for example part of an email address."
},
"status": {
"description": "Subscriber status (default subscribed).",
"type": "string",
"enum": [
"subscribed",
"unsubscribed",
"bounced",
"spam",
"inactivated"
]
},
"since": {
"description": "Only subscribers who joined on or after this moment, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"page": {
"description": "Page number, starting at 0 (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Results per page, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"list_id",
"keywords"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_subscriber(list_id, email)
One subscriber of a list by email address: status and dates, name, IP, custom properties and segments. GET /v2/subscriber/getByEmail.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "Email address."
}
},
"required": [
"list_id",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_subscriber_by_id(subscriber_id)
One subscriber by subscriber_id: status and dates, name, IP, custom properties and segments. GET /v2/subscriber/get.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"subscriber_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_subscriber_history(subscriber_id)
The last 100 actions of a subscriber: subscribe, unsubscribe, send, view, click, bounce, spam, each with a date and metadata (newsletter, link). GET /v2/subscriber/history.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"subscriber_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_list_segments(list_id)
The segments of a list with segment_id, segment_name, subscriber count and status (0 idle, 1 import running, 2 counting, 3 searching). NewsMAN allows 20 calls a minute for this method. GET /v2/segment/all.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_count_segment_subscribers(segment_id)
The number of active subscribers in a segment. GET /v2/segment/count.
輸入結構描述
{
"type": "object",
"properties": {
"segment_id": {
"description": "NewsMAN segment id (from newsman_list_segments).",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"segment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_list_segment_subscribers(segment_id, page, limit)
The subscribers of a segment (subscriber_id and email). Paged (page from 0, up to 1000 per page). GET /v2/segment/getSubscribers.
輸入結構描述
{
"type": "object",
"properties": {
"segment_id": {
"description": "NewsMAN segment id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"page": {
"description": "Page number, starting at 0 (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Results per page, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"segment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_list_newsletters(list_id, status, start_date, stop_date, days, ...)
Newsletters (campaigns) of a list with newsletter_id, subject, status, dates, segments and headline stats. Filter by status (-1 cancelled, 0 new, 1 confirmed, 2 sending, 3 paused, 4 resumed, 5 sent; or a comma list such as 1,5; default all), by creation date range, or the last N days. Paged. GET /v2/newsletter/all.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"status": {
"description": "Newsletter status: all, -1..5 or a comma list (default all).",
"type": "string",
"pattern": "^(all|-?[0-5](,-?[0-5])*)$"
},
"start_date": {
"description": "Created on or after, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"stop_date": {
"description": "Created on or before, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"days": {
"description": "Created in the last N days (alternative to start_date/stop_date).",
"type": "integer",
"minimum": 1,
"maximum": 3650
},
"page": {
"description": "Page number, starting at 0 (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Results per page, 1-1000 (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_newsletter(newsletter_id)
Properties of one newsletter: subject, sender, status, dates, segments, links to the online view. Long HTML is clipped. GET /v2/newsletter/getProps.
輸入結構描述
{
"type": "object",
"properties": {
"newsletter_id": {
"description": "NewsMAN newsletter id (from newsman_list_newsletters).",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"newsletter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_newsletter_stats(newsletter_id)
Delivery and engagement stats of one newsletter: sent, views, clicks, unsubscribes, bounces, spam reports and rates. GET /v2/newsletter/stats.
輸入結構描述
{
"type": "object",
"properties": {
"newsletter_id": {
"description": "NewsMAN newsletter id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"newsletter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_newsletter_clicked_links(newsletter_id)
The links clicked in one newsletter with the number of clicks and the last click time. GET /v2/newsletter/linksClicked.
輸入結構描述
{
"type": "object",
"properties": {
"newsletter_id": {
"description": "NewsMAN newsletter id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"newsletter_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_list_automations(list_id, name, type, status, start_date, ...)
Automation workflows of a list with workflow_id, name, type, status (0 inactive, 1 active), version and stats. Filter by name, status and last-updated range. GET /v2/automation/all.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"name": {
"description": "Workflow name filter (default: any).",
"type": "string",
"maxLength": 200
},
"type": {
"description": "Workflow type: all (default), sub_date, newsletter_view, newsletter_click, advanced, unsub, manual, ecommerce_cart_update, ecommerce_order_completed, ecommerce_product_view, segment_add, segment_remove, productalert_stock, productalert_price.",
"type": "string",
"pattern": "^[a-z_]{1,40}$"
},
"status": {
"description": "all (default), 0 inactive or 1 active.",
"type": "string",
"enum": [
"0",
"1",
"all"
]
},
"start_date": {
"description": "Updated on or after, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"stop_date": {
"description": "Updated on or before, UTC, YYYY-MM-DD or YYYY-MM-DD HH:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_automation(workflow_id)
One automation workflow: name, type, status, version, recurrence, stats and preview links. GET /v2/automation/getWorkflow.
輸入結構描述
{
"type": "object",
"properties": {
"workflow_id": {
"description": "NewsMAN workflow id (from newsman_list_automations).",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"workflow_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_automation_stats(list_id, workflow_ids, days, start_date, stop_date)
Daily stats of the automations of a list: sends, opens, clicks, purchases, bounces, unsubscribes. Optionally for given workflows and a period (last N days, or start_date/stop_date; at most 90 days). GET /v2/automation/stats.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"workflow_ids": {
"description": "Comma-separated workflow ids (default: all workflows of the list).",
"type": "string",
"maxLength": 500,
"pattern": "^[\\w-]+(,[\\w-]+)*$"
},
"days": {
"description": "The last N days, 1-90 (alternative to start_date/stop_date; NewsMAN allows at most 90 days).",
"type": "integer",
"minimum": 1,
"maximum": 90
},
"start_date": {
"description": "Start of the period, UTC, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"stop_date": {
"description": "End of the period, UTC, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢newsman_get_import_status(import_id)
Status of a background subscriber import by import_id: new, running, finished or error, with times and the last error. GET /v2/import/status.
輸入結構描述
{
"type": "object",
"properties": {
"import_id": {
"description": "NewsMAN import id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"import_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴newsman_subscribe_email(list_id, email, firstname, lastname, props, ...)
WRITE: subscribe an email address to a list (or update it if it exists), with optional name and custom properties. A property key with the tag_ prefix sets a tag. Only use for people who gave consent. The subscriber is active at once, with no confirmation email. Returns the subscriber_id. POST /v2/subscriber/saveSubscribe.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "Email address."
},
"firstname": {
"description": "First name.",
"type": "string",
"maxLength": 200
},
"lastname": {
"description": "Last name.",
"type": "string",
"maxLength": 200
},
"props": {
"description": "Custom properties, for example {\"city\": \"Paris\", \"tag_vip\": \"1\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"ip": {
"description": "IP address to record for this action (NewsMAN requires one). Defaults to 0.0.0.0 when omitted.",
"type": "string",
"maxLength": 45,
"pattern": "^[0-9a-fA-F:.]{3,45}$"
}
},
"required": [
"list_id",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴newsman_unsubscribe_email(list_id, email, ip)
WRITE: unsubscribe an email address from a list, so it no longer receives campaigns from that list. Returns the subscriber_id. POST /v2/subscriber/saveUnsubscribe.
輸入結構描述
{
"type": "object",
"properties": {
"list_id": {
"description": "NewsMAN list id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "Email address."
},
"ip": {
"description": "IP address to record for this action (NewsMAN requires one). Defaults to 0.0.0.0 when omitted.",
"type": "string",
"maxLength": 45,
"pattern": "^[0-9a-fA-F:.]{3,45}$"
}
},
"required": [
"list_id",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴newsman_update_subscriber(subscriber_id, email, firstname, lastname)
WRITE: change the email, first name or last name of a subscriber. Give only the fields to change; the others are left as they are. POST /v2/subscriber/update.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"email": {
"description": "New email address.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"firstname": {
"description": "New first name.",
"type": "string",
"maxLength": 200
},
"lastname": {
"description": "New last name.",
"type": "string",
"maxLength": 200
}
},
"required": [
"subscriber_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡newsman_add_subscriber_tags(subscriber_id, tags)
WRITE: add tags to a subscriber (existing tags stay). POST /v2/subscriber/addTags.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"tags": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": "Tags to add."
}
},
"required": [
"subscriber_id",
"tags"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡newsman_add_subscriber_to_segment(subscriber_id, segment_id)
WRITE: add a subscriber to a (static) segment. POST /v2/subscriber/addToSegment.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"segment_id": {
"description": "NewsMAN segment id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"subscriber_id",
"segment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴newsman_remove_subscriber_from_segment(subscriber_id, segment_id)
WRITE: remove a subscriber from a segment (the subscriber stays on the list). POST /v2/subscriber/removeFromSegment.
輸入結構描述
{
"type": "object",
"properties": {
"subscriber_id": {
"description": "NewsMAN subscriber id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
},
"segment_id": {
"description": "NewsMAN segment id.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 100
},
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
]
}
},
"required": [
"subscriber_id",
"segment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據