SendPost MCP by usefulapi
Inspect SendPost delivery statistics, sending IPs, message metadata, domains, and suppressions.
Should I use this
Quality & Safety
Findings (1)
- LOWin sendpost_get_account_group_stats
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"sendpost": {
"url": "https://sendpost.usefulapi.io/mcp"
}
}
}Remote endpoints
https://sendpost.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢sendpost_list_subaccounts(limit, offset, search)
READ (account key): List sub-accounts and safe account metadata. API keys and SMTP credentials are never returned.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"description": "Maximum records, up to 100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"description": "Records to skip for pagination.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"search": {
"type": "string",
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_subaccount(subaccount_id)
READ (account key): Get a sub-account's safe metadata, labels and blocked state. Credentials are excluded.
Input Schema
{
"type": "object",
"properties": {
"subaccount_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"subaccount_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_ips(limit, offset, search)
READ (account key): List sending IPs, warmup and state metadata. Does not allocate or change IPs.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"description": "Maximum records, up to 100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"description": "Records to skip for pagination.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"search": {
"type": "string",
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_ip(ip_id)
READ (account key): Inspect an existing sending IP's public address, reverse DNS and warmup state.
Input Schema
{
"type": "object",
"properties": {
"ip_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"ip_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_ip_pools(limit, offset, search)
READ (account key): List IP pool names, routing strategy, overflow settings and safe public IP metadata.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"description": "Maximum records, up to 100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"description": "Records to skip for pagination.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"search": {
"type": "string",
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_ip_pool(ippool_id)
READ (account key): Inspect one IP pool's routing strategy, overflow settings and public IP metadata. Provider credentials and routing internals are excluded.
Input Schema
{
"type": "object",
"properties": {
"ippool_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"ippool_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_account_stats(from, to)
READ (account key): Daily delivery, bounce, open, click, unsubscribe and spam counts across sub-accounts. Use up to 366 days per call.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_account_stats(from, to)
READ (account key): Aggregate delivery and engagement counts across sub-accounts over a date range, up to 366 days.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_account_group_stats(from, to, group)
READ (account key): Aggregate delivery and engagement counts for an existing group/tag across sub-accounts, up to 366 days.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
},
"group": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Existing message group/tag, for example transactional."
}
},
"required": [
"from",
"to",
"group"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_subaccount_stats(from, to, subaccount_id)
READ (account key): Read a sub-account's delivery and engagement statistic records for a date range, up to 366 days.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
},
"subaccount_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"from",
"to",
"subaccount_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_subaccount_stats(from, to, subaccount_id)
READ (account key): Aggregate delivery and engagement counts for one sub-account over a date range, up to 366 days.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
},
"subaccount_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"from",
"to",
"subaccount_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_message_metadata(message_id)
READ (account key): Inspect a submitted message's ID, sender, recipient, subject, groups and routing metadata. Excludes bodies, attachments, custom headers and recipient custom fields. Large messages may exceed the 1 MiB read limit.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"message_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_domains(limit, offset, search)
READ (sub-account key): Audit sending domains, DNS record configuration and verification failures. Does not create or verify domains.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"description": "Maximum records, up to 100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"description": "Records to skip for pagination.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"search": {
"type": "string",
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_get_domain(domain_id)
READ (sub-account key): Inspect a sending domain's DNS records and verification status.
Input Schema
{
"type": "object",
"properties": {
"domain_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"domain_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendpost_list_suppressions(from, to, limit, offset, search, ...)
READ (sub-account key): Inspect suppressions and documented reasons within a date range, with pagination. Does not add or remove suppressions.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Start date, YYYY-MM-DD (UTC)."
},
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "End date, YYYY-MM-DD (UTC)."
},
"limit": {
"default": 20,
"description": "Maximum records, up to 100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"description": "Records to skip for pagination.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"search": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"enum": [
"hardBounce",
"manual",
"spamComplaint",
"unsubscribe"
]
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence