Skip to main content
Glama
meser10

Meser10 MCP Server

by meser10

Meser10 MCP Server

Connect the Meser10 email & SMS platform to any MCP client (Claude, Cursor, or your own agent).

תיעוד בעברית, כולל התקנה מודרכת: https://www.meser10.co.il/features/mcp-server/

Tools are generated from the live WSDL. Nobody hand-writes 61 tool definitions here, which means the server covers every API capability by construction and does not drift when the platform ships a new operation.

Quick start

export MESER10_API_KEY=...      # issued in the Meser10 UI
export MESER10_USER_ID=...      # your account number - optional, see below
npx @meser10/mcp-server

MESER10_USER_ID is optional at start-up. 17 of the 61 operations are authenticated by the key alone; the other 44 carry an explicit account number, and those fail with a clear message if it is not set. Set it unless you know you only need the first group. The account number is an identifier, not a secret - it is visible in the Meser10 UI.

Claude Desktop / Claude Code:

{
  "mcpServers": {
    "meser10": {
      "command": "npx",
      "args": ["-y", "@meser10/mcp-server"],
      "env": { "MESER10_API_KEY": "...", "MESER10_USER_ID": "..." }
    }
  }
}

Related MCP server: Nitrosend

Safety model

The server starts read-only. Nothing that spends money, messages a real person, or deletes a record is reachable until you opt in.

MESER10_MODE

Adds

Tools

read (default)

the Get* family

16

write

contacts, groups, campaign drafts

+27

send

delivers to real recipients, spends credit

+13

destructive

permanent deletes

+5

Two more guards:

  • MESER10_MAX_RECIPIENTS (default 100) refuses any single send that targets more addresses than the cap. A model that misreads a prompt cannot mail your whole list.

  • Credentials are injected, never exposed. oLogin and iUserID are stripped from every tool schema and filled in by the server. A model cannot see, guess, or leak them. CLoginInfo does accept UserName/Password, and this server deliberately never populates them - ApiKey only.

The one thing to know about errors

Every operation returns HTTP 200, including failures. Success lives in the Result field of CCallResult, not in the status code. This server reads Result, throws on anything that is not Success or PartialSuccess, and attaches a remedy:

LoginFailed: bad key - MESER10_API_KEY was rejected. Reissue the key in the Meser10 UI and restart.

PartialSuccess is surfaced as a warning rather than silent success, because it means some records in a batch did not land.

Design notes

Legacy variants are hidden. The contract exposes five Ex/Ex2 families (15 operations for 5 capabilities). Offering all of them makes a model choose between near-identical tools and pick wrong. The richest variant is exposed; the rest are hidden behind MESER10_EXPOSE_LEGACY=true.

Names are written for callers. GetGroupsList is what the platform calls it. list_groups is what a developer reaches for. The underlying operation name is always in the description, so nothing is hidden.

Hungarian prefixes become type hints. saGroups is an array of strings, eLang is an enum, iUserID is an int. The generator uses that to produce better schemas and human titles.

Troubleshooting

LoginFailed on a key that worked five minutes ago. The platform blocks the calling IP after a few failed authentications, and the block is long - measured at over three and three quarter hours. It reports itself as Incorrect user name or password, which is indistinguishable from a wrong key, so the instinct to reissue the key and retry makes it worse: the new key is blocked too, because the block is not on the key.

If this happens: stop calling, wait, and do not put a retry loop around authentication. Never retry an auth failure automatically - retrying is what creates the block, and on a shared server it takes down every other integration sending from the same address.

NotEnoughPermissions. Either the key belongs to a different account than the MESER10_USER_ID you set, or that account is real but out of your key's reach. An account number the platform cannot resolve at all fails differently, as ApplicationError, so this message does mean the number exists.

A tool returns a status and no data. Fixed in 1.0.0. Upgrade.

PartialSuccess. Part of a batch did not land. The server surfaces it as a warning rather than silent success; check which records are missing before you retry the whole batch.

Support

support@meser10.co.il · 03-7440020 · Sunday to Thursday, 9:00-17:00 Israel time.

Include the operation name and the Result value you got back. Never include your API key, and if one has been shared anywhere, reissue it.

Development

npm install && npm run build
npm test            # 43 unit tests + 12 end-to-end tests over real MCP stdio

The e2e suite runs a local stand-in for the platform, so it needs no credentials and sends nothing.

Status

Verified against the production endpoint on 2026-09-12, in read mode: authentication with ApiKey only, tool listing, and four operations returning live data through the whole chain.

Also verified locally: WSDL parsing, schema generation, safety gate, envelope construction, credential injection, error mapping, recipient cap, and the MCP protocol over stdio.

Write, send and delete operations are implemented and covered by tests against a stand-in, and have deliberately never been executed against a live account by this project.

Available Tools

14 tools
get_campaignC

Calls GetCampaign on the Meser10 platform. Read-only. SOAP operation: GetCampaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
iCampaignIDYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose 'Read-only', which is a genuine safety signal, but says nothing about authorization requirements, error behavior for an unknown iCampaignID, or what the operation returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, but two of the three sentences are redundant restatements of the tool name and the SOAP operation name, giving low information density per sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter lookup there is no output schema, so the description should at least indicate what a campaign record contains and confirm the ID is the sole lookup key. Neither is provided, leaving the definition incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter iCampaignID, and the description never mentions it. It adds no meaning about where a campaign ID comes from or what format it takes, so the one undocumented parameter remains unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name ('Calls GetCampaign', 'SOAP operation: GetCampaign') rather than describing what a campaign retrieval yields or how it differs from the 12 sibling tools, several of which are also campaign getters (get_campaign_details, get_campaign_summary, get_campaign_results_by_date). 'Read-only' is the only added semantic content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or which sibling to prefer for campaign data. With get_campaign_details, get_campaign_summary, and get_campaign_link_clicks all present, an agent has no basis from the description for choosing this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_detailsC

Per-recipient outcome for one campaign. Read-only. SOAP operation: GetCampaignResultDetails.

ParametersJSON Schema
NameRequiredDescriptionDefault
iCampaignIDYes
eMessageStatusYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation is read-only and identifies the underlying SOAP operation, but it does not cover authentication, rate limits, response format, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler and front-loads the core purpose. The SOAP operation reference adds minor context but is not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should explain return values and parameter meaning, but it does not. It leaves an agent unable to determine what a 'per-recipient outcome' contains or how eMessageStatus affects the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain either required parameter. It hints at 'one campaign' for iCampaignID but says nothing about the eMessageStatus enum or how it filters results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific scope: per-recipient outcome for a single campaign. It distinguishes this from summary tools by focusing on per-recipient results, but does not explicitly name or rule out sibling tools like get_campaign_summary or get_campaign.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives such as get_campaign_summary or get_campaign_results_by_date. The only usage hint is that it is read-only, which does not help with selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_results_by_dateD

Calls GetCampaignResultsBetweenDates on the Meser10 platform. Read-only. SOAP operation: GetCampaignResultsBetweenDates.

ParametersJSON Schema
NameRequiredDescriptionDefault
iCampaignIDYes
dToDateAndTimeNo
eMessageStatusYes
dFromDateAndTimeNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description must carry behavioral disclosure. It adds only 'Read-only' and the SOAP operation name, but omits authentication needs, rate limits, what happens with missing dates, or return format. This is minimal but not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but redundant: 'Calls GetCampaignResultsBetweenDates' and 'SOAP operation: GetCampaignResultsBetweenDates' repeat each other, and no sentence earns its place by adding actionable detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with four parameters (two required, one enum), no output schema, and no annotations, the description is far too sparse. It fails to explain parameter semantics, output, or when to use the tool, leaving the agent with insufficient context to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions none of the four parameters—neither the required iCampaignID/eMessageStatus nor the optional date ranges—so it adds zero semantic meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description merely expands the operation name (GetCampaignResultsBetweenDates) into a sentence, restating the tool name rather than stating in plain language what the tool retrieves or how it differs from siblings like get_transactional_results_by_date. It does not clarify what 'results' means or what the output contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; siblings exist and the description offers no context or exclusions. Nothing helps an agent choose between this and get_transactional_results_by_date or get_campaign_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_summaryB

Totals for one campaign: sent, opened, clicked, bounced. Read-only. SOAP operation: GetCampaignResultSummary.

ParametersJSON Schema
NameRequiredDescriptionDefault
iCampaignIDYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Read-only,' which is valuable and correct, and it lists the metrics returned. However, it says nothing about authentication requirements, pagination, whether the campaign must exist, error behavior, or the format of the totals (e.g., counts versus percentages). For a tool with no annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences (plus one fragment) with zero filler. The purpose and the returned metrics are front-loaded, and the read-only safety note follows immediately. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, no output schema, and no annotations, the description covers the purpose, the metrics returned, read-only status, and the underlying SOAP operation. However, for a tool with zero structured-field support, it omits operational details an agent may need: how to obtain the campaign ID, error handling, and whether results are live or cached. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is exactly one parameter and schema description coverage is 0%, so the description must compensate. The description specifies 'one campaign,' which clarifies that iCampaignID identifies a single campaign and that exactly one ID is expected. It also gives the SOAP operation name GetCampaignResultSummary, which helps an agent mapping to the underlying API. It does not, however, clarify the ID format or source (e.g., obtained from list_campaigns).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear verb-resource pair (get summary of one campaign) and enumerates the exact metrics returned: sent, opened, clicked, bounced. This distinguishes it well from siblings like get_campaign_details, which implies metadata rather than aggregate performance metrics. It falls short of a 5 because it doesn't explicitly name or contrast with a specific sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope is implied: this returns totals for one campaign, so an agent can infer it's for aggregate performance summaries rather than detailed campaign settings or individual link clicks. However, there is no explicit when-to-use versus when-not-to-use guidance, no mention of alternatives such as get_campaign_results_by_date, and no prerequisites stated. This is the minimum viable level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_coupon_statusD

Calls GetCouponStatus on the Meser10 platform. Read-only. SOAP operation: GetCouponStatus.

ParametersJSON Schema
NameRequiredDescriptionDefault
sCouponCodeNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses only that the call is read-only and is a SOAP operation; it says nothing about required permissions, error behavior when the coupon code is invalid/absent, or what the status response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short fragments, front-loaded, but 'GetCouponStatus' is repeated twice in adjacent sentences, making them partly redundant. Efficient if not informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented parameter, the description is far too thin: an agent cannot tell what a returned coupon status looks like or how to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter sCouponCode is documented nowhere. The description does not clarify what the coupon code is, its format, or that it is effectively needed despite being optional, so it adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description largely restates the tool name: 'Calls GetCouponStatus on the Meser10 platform' plus 'SOAP operation: GetCouponStatus.' The only added value is naming the Meser10 platform. It does not say what a coupon status is or what the operation returns, so it is close to tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the many sibling get_* / list_* tools. 'Read-only' implies a safe lookup, but there is no indication of context, prerequisites, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_groupsC

Calls GetGroups on the Meser10 platform. Read-only. SOAP operation: GetGroups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'Read-only', which is useful, but omits return shape, pagination, auth requirements, and side-effect details. 'SOAP operation: GetGroups' is redundant with the first sentence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three fragments where one would do; the first and third sentences say essentially the same thing ('Calls GetGroups' / 'SOAP operation: GetGroups'). The one piece of real information ('Read-only') is buried mid-sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-arg retrieval tool with no annotations and no output schema, the description should describe what is returned (group shape, count, filtering behavior). Instead it repeats the operation name and offers no behavioral or return information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters is a baseline 4. There are no parameters to document, so nothing is missing on this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb ('Calls') and resource ('GetGroups') but the resource name is just the operation identifier repeated, not a plain-language description of what the tool returns. It doesn't distinguish itself from the sibling 'list_groups', which likely serves a similar or identical purpose. The purpose is only implicit: it retrieves groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no explicit alternatives. A sibling named 'list_groups' exists and the description gives no information on how this differs or when to prefer one over the other, leaving the agent to guess between two similarly named tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transactional_results_by_dateD

Calls GetSingleMessagesResultsBetweenDatesEx on the Meser10 platform. Read-only. SOAP operation: GetSingleMessagesResultsBetweenDatesEx.

ParametersJSON Schema
NameRequiredDescriptionDefault
dToDateAndTimeNo
eMessageStatusYes
dFromDateAndTimeNo

TDQS

D1.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it only discloses that the operation is read-only and maps to a SOAP method. It says nothing about pagination, rate limits, return shape, or how date boundaries are treated, leaving most behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the brevity comes from under-specification rather than efficiency. The SOAP operation name is repeated twice, wasting the only space allocated while core information is absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter SOAP-backed retrieval with no annotations and no output schema, the definition omits parameter semantics, date-range behavior, return contents, and usage context. It is far from sufficient for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 3 parameters, and the description adds no meaning for any of them (dFromDateAndTime, dToDateAndTime, eMessageStatus). The agent gets no explanation of date formatting, boundary inclusivity, or the status enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description essentially restates the tool name by naming the underlying SOAP operation (GetSingleMessagesResultsBetweenDatesEx), which is a tautology rather than a plain-language statement of what the tool does. It never explains in agent-facing terms that this retrieves transactional message results within a date range, nor distinguishes it from siblings like get_transactional_results_by_id or get_campaign_results_by_date.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when to prefer get_transactional_results_by_id or get_campaign_results_by_date, or what prerequisites exist. The definition provides no routing information at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transactional_results_by_idC

Calls GetSingleMessagesResultsByIds on the Meser10 platform. Read-only. SOAP operation: GetSingleMessagesResultsByIds.

ParametersJSON Schema
NameRequiredDescriptionDefault
iaMessageIDsNo

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does assert 'Read-only', which is a genuine (if unverifiable) safety claim, but says nothing about auth requirements, result cardinality, paging, error behavior when an ID does not exist, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences where two are near-duplicates: 'Calls GetSingleMessagesResultsByIds on the Meser10 platform' and 'SOAP operation: GetSingleMessagesResultsByIds' convey the same fact. The only non-redundant content is the two-word 'Read-only' note, so the definition is both repetitive and under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter description coverage, the description is the sole source of information and it delivers almost none. An agent cannot determine what is returned, how IDs map to results, or why it would choose this over the by-date sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single iaMessageIDs array parameter. It never explains the parameter's format, whether the array accepts multiple IDs per call, whether an empty/missing value is legal (0 required params), or what an ID refers to — only the plural '-ByIds' in the operation name hints at multiplicity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the underlying SOAP operation name twice ('Calls GetSingleMessagesResultsByIds... SOAP operation: GetSingleMessagesResultsByIds') without ever saying what a transactional result is or what entity the IDs belong to. It is close to tautology: an agent learns nothing beyond the tool name, and nothing distinguishes it from the sibling get_transactional_results_by_date.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the sibling get_transactional_results_by_date that shares the same resource. The 'Read-only' note describes a property of the call, not a condition for selecting this tool over another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_bounced_addressesB

Addresses that hard-bounced. Feed these back into your own suppression list. Read-only. SOAP operation: GetBouncedAddresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
dToDateAndTimeYes
dFromDateAndTimeYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and its one behavioral claim — 'Read-only' — is genuinely useful. But it omits everything else an agent needs: whether the date window is required/max-ranged, whether results paginate, what fields come back, and how 'hard-bounced' is determined. This is thin disclosure for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no padding, purpose front-loaded before the usage hint and the provenance note. Efficient, though the fragment style leaves the core statement as a noun phrase rather than a full sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with no output schema, the description conveys purpose, read-only status, and a usage hint. It still leaves the required date-range semantics and return shape unexplained, which a complete definition would cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two required date-time parameters, so the description must compensate — and it adds nothing about them. It doesn't clarify that both bounds are mandatory, whether the range is inclusive, or the expected format; the schema titles are all the agent has.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the resource precisely — addresses that hard-bounced — and the SOAP operation name (GetBouncedAddresses) confirms the verb is a retrieval. It is distinguishable from the sibling list_unsubscribed_addresses by the 'hard-bounced' qualifier, though the description never states the 'list' verb outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Feed these back into your own suppression list' gives a downstream use case, which implies when the tool is relevant. However, it never says when to use this versus list_unsubscribed_addresses or any other sibling, and offers no prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsC

Calls GetCampaignsBasicInfo on the Meser10 platform. Read-only. SOAP operation: GetCampaignsBasicInfo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral load. 'Read-only' correctly signals it is a safe, non-mutating call, but with no mention of permissions, pagination, result volume, or response shape for a zero-parameter list operation, disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no padding, and the read-only trait appears early. It is concise to the point of being under-informative, though not by verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no annotations and no output schema, the description should say at minimum what record type and fields it returns and roughly how it relates to the many sibling get_* tools. Naming the SOAP operation is not useful to an agent selecting among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to document; the empty schema is self-evident and adds no ambiguity. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the operation name (GetCampaignsBasicInfo) rather than explaining what a campaign is or what 'basic info' includes. It implies listing campaigns but provides no functional framing, and gives no differentiation from siblings like get_campaign, get_campaign_details, or get_campaign_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use list_campaigns versus get_campaign, get_campaign_details, get_campaign_summary, or get_campaign_results_by_date. The read-only note is a safety trait, not usage guidance, so an agent has nothing to route on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_groupsA

List the mailing lists on the account, with their ids. Start here - most other calls take a group. Read-only. SOAP operation: GetGroupsList.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does disclose 'Read-only' and the underlying SOAP operation, which is useful. It does not mention pagination, result ordering, or size limits - relevant gaps for a list call, though modest for a zero-parameter read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, then the usage hook, then the read-only/source note. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only list tool with no output schema and no annotations, the description covers purpose, sequencing, safety profile, and the shape of the return (ids). Minor omissions around pagination or the group/list distinction keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. The description adds meaning by stating the output includes ids, which is the key payload an agent needs to chain into other calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (mailing lists on the account) and even hints at the returned content ('with their ids'). However, it does not differentiate itself from the sibling 'get_groups', which sounds like it covers similar ground, so an agent cannot fully disambiguate from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Start here - most other calls take a group' gives explicit sequencing guidance: this is the entry point whose ids feed other calls. It stops short of naming which alternatives to avoid or when not to use it, but the routing intent is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_unsubscribed_addressesB

Addresses that asked to be removed. Never re-add these. Read-only. SOAP operation: GetRemovedEMailAddresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
dToDateAndTimeYes
dFromDateAndTimeYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does declare 'Read-only' plus the critical behavioral warning not to re-add these addresses. However, it says nothing about the required date-range scoping, result volume, or ordering, leaving the operational profile only half-described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool returns and immediately followed by the critical warning. The trailing 'SOAP operation: GetRemovedEMailAddresses' is traceability metadata rather than agent-facing value, but it costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two required parameters, no annotations, no output schema, and 0% schema coverage, the description omits the required date window entirely. It covers the safety profile and the do-not-re-add rule, but an agent could not invoke it correctly on this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about the two required date parameters or their expected format. The parameter names/titles ('From Date And Time', 'To Date And Time') are self-evident, which prevents a 1, but the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and its meaning: addresses that opted out of email, with the verb implied by the list_ prefix. It does not differentiate itself from close siblings such as list_bounced_addresses, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement or named alternative, but 'Never re-add these' gives a concrete downstream directive that shapes how the agent should treat results. That is actionable guidance without being full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.0.0
    • First observedget_campaign
    • First observedget_campaign_details
    • First observedget_campaign_link_clicks
    • First observedget_campaign_link_clicks_by_date
    • First observedget_campaign_results_by_date
    • First observedget_campaign_summary
    • First observedget_coupon_status
    • First observedget_groups
    • First observedget_transactional_results_by_date
    • First observedget_transactional_results_by_id
    • First observedlist_bounced_addresses
    • First observedlist_campaigns
    • First observedlist_groups
    • First observedlist_unsubscribed_addresses

TDQS

C2.5/5.0

Scored across 14 tools

Disambiguation3/5

Most tools have distinct scopes by campaign, date range, link clicks, transactional results, or suppression lists. However list_groups and get_groups appear to overlap heavily, both returning groups/lists, which creates a real selection ambiguity. The many campaign-result variants are mostly differentiated by descriptions.

Naming Consistency4/5

Names are consistently snake_case and use recognizable get_/list_ verb prefixes for read-only operations. The main inconsistency is list_groups versus get_groups, where one resource is named with two different verb conventions.

Tool Count4/5

14 tools is a reasonable size for a reporting-focused email marketing integration. The count is slightly inflated by near-duplicates like list_groups/get_groups and several campaign-result variants that could potentially be consolidated.

Completeness3/5

The surface covers campaign reporting, transactional results, link clicks, groups, coupon status, and suppression lists. But it is entirely read-only, so sending, creating, updating, and suppression-list management are absent if the server is meant as a full platform integration.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables comprehensive email marketing and transactional email operations through SendGrid's API v3. Supports contact management, campaign creation, email automation, list management, and email sending with built-in read-only safety mode.
    58
    301 npm
    3
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    AI-native email marketing platform built for agents. Control campaigns, automations, contacts, templates, and analytics via MCP with OAuth authentication.
    76 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Draft, test, and send Mailchimp campaigns from an MCP client with audience management, subscriber CRUD, and post-send analytics behind safe-by-default send gates.
    77 npm
    1
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP-capable agents to send, receive, and manage email, including domains, inboxes, contacts, templates, webhooks, and delivery metrics, through the Drin API.
    89
    4 npm
    MIT