Skip to main content
Glama

Moosend MCP by usefulapi

Server Details

Inspect Moosend lists, subscribers, segments and campaign stats, and add or unsubscribe subscribers.

Ownership verified
Status
Healthy
Uptime
62.4% over 29 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.8/5.0

Scored across 20 tools

Disambiguation5/5

Each tool targets a distinct resource+action: get vs list, by-ID vs by-email lookups, and segment members vs list subscribers are all clearly separated. The four campaign-statistics tools (summary, activity, activity_by_location, link_activity) sound similar but each description pins down a different data shape. add_subscriber's upsert behavior is explicitly flagged so it doesn't collide with update_subscriber.

Naming Consistency5/5

Uniform moosend_<verb>_<noun> snake_case pattern throughout (add, create, get, list, update, unsubscribe). Even the longer names like get_campaign_activity_by_location follow the same verb_noun convention. No camelCase or stylistic mixing.

Tool Count4/5

20 tools is on the heavier side, but the surface spans genuinely distinct sub-domains (subscribers, lists, segments, campaigns, senders, stats) and each tool earns its place. Slightly over the ideal band rather than bloated.

Completeness4/5

Subscriber lifecycle is well covered (add, get, get-by-email, list, update, unsubscribe) and campaigns/lists/segments are readable with draft creation. Gaps exist (no delete for lists/campaigns/subscribers, no segment creation or campaign update/send), but sending is intentionally human-gated and core workflows remain workable.

Available Tools

20 tools
moosend_add_subscriberAdd or update a subscriberA
Destructive
Inspect

WRITE: add one subscriber to a mailing list. If the email already exists in the list, that subscriber is UPDATED instead (and custom fields you omit are cleared). A previously unsubscribed address is re-subscribed. Rate limit 10 calls / 10 s. Moosend: POST /subscribers/{MailingListID}/subscribe.json.

NameRequiredDescriptionDefault
nameNoSubscriber name.
tagsNoSubscriber tags.
emailYesSubscriber email address.
preferencesNoPreference option values chosen by the subscriber (must match the list's preference options).
custom_fieldsNoCustom field values by field name, e.g. {"City":"Athens","Age":25}. Sent to Moosend as "Name=Value" pairs. WARNING: on an existing subscriber, any custom field NOT included is cleared — include every field you want to keep.
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).
has_external_double_opt_inNoTrue if the subscriber already gave consent by other means.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond destructiveHint=true, the description discloses the critical behaviors: existing emails are UPDATED, omitted custom fields are cleared, unsubscribed addresses are re-subscribed, and there is a 10/10s rate limit. The destructive annotation is consistent with the disclosed clearing behavior rather than contradicted.

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?

Front-loaded with the 'WRITE:' marker and built from short, information-dense sentences. Every clause (upsert, field clearing, re-subscribe, rate limit, endpoint) carries distinct value with no padding.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers the write semantics, side effects, rate limit, and endpoint mapping needed to call it correctly. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, including the custom_fields clearing warning. The description reinforces this but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('add one subscriber to a mailing list') and then discloses the upsert behavior that defines this tool. An agent can distinguish it from moosend_update_subscriber because the description explains the add-or-update-on-conflict semantics that is intrinsic to this endpoint.

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?

Usage is clearly implied by the upsert framing, but there is no explicit routing against the sibling moosend_update_subscriber or a statement of when-not to use this tool. The context is helpful yet leaves the add-vs-update-tool choice to inference.

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

moosend_create_draft_campaignCreate a draft campaignA
Destructive
Inspect

WRITE: create a regular (non-A/B) DRAFT campaign. It is NOT sent — sending stays a human action in Moosend. Give the content as html_content or a web_location URL. sender_email and reply_to_email must be senders in the account (see moosend_list_senders). Returns the new campaign's ID. Moosend: POST /campaigns/create.json.

NameRequiredDescriptionDefault
nameYesCampaign name.
subjectYesSubject line.
html_contentNoComplete HTML body of the campaign.
sender_emailYesSender email — must be one of the account's senders.
web_locationNoURL Moosend fetches the HTML from (CSS is inlined automatically).
mailing_listsYesTarget lists, each optionally narrowed to one segment.
reply_to_emailNoReply-to email — must be one of the account's senders. Default: sender_email.
confirmation_to_emailNoWhere to send the 'campaign sent' confirmation. Default: sender_email.
track_in_google_analyticsNoEnable Google Analytics tracking (requires GA on your site).

TDQS

A4.5/5.0
Behavior5/5

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

The annotations only supply destructiveHint=true; the description adds the substantive behavioral facts an agent actually needs: the result is a draft rather than a send, sending is intentionally out of band, sender/reply-to addresses must already exist in the account, and the call returns the new campaign ID along with the underlying Moosend endpoint. This is material context beyond the annotation.

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?

Four compact sentences with zero filler: write mode and scope first, the not-sent guarantee second, content and sender requirements third, return value last. Each sentence carries distinct information and the most decision-relevant facts are front-loaded.

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

Completeness5/5

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

For a 9-parameter write tool with no output schema, the description covers the write semantics, the human-gated send step, content sourcing, sender prerequisites, and the return value (the new ID). Nothing an agent needs in order to invoke this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, subject, sender_email, mailing_lists, and the rest. The description adds only two marginal clarifications — the html_content vs. web_location choice and the sender-account constraint (which the schema already states). Baseline 3 is correct here.

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

Purpose5/5

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

The description opens with a specific verb and resource ('WRITE: create a regular (non-A/B) DRAFT campaign') and narrows the scope in ways that matter: non-A/B, draft-only, and the fact that no email is dispatched. An agent can distinguish this from list_campaigns or get_campaign without opening any schema.

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?

It states the operational boundary clearly ('It is NOT sent — sending stays a human action in Moosend'), tells the agent the two ways content can be supplied, and routes sender validation to the moosend_list_senders sibling. It stops short of spelling out full preconditions (e.g., what to do after creation), but the context for when to call it is explicit.

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

moosend_create_mailing_listCreate a mailing listA
Destructive
Inspect

WRITE: create a new, empty mailing list. Returns the new list's ID. Moosend: POST /lists/create.json.

NameRequiredDescriptionDefault
nameYesList name.
preferencesNoOptional preference field for the list. Omit for none.
confirmation_pageNoURL shown at the end of the subscription process.
redirect_after_unsubscribe_pageNoURL subscribers are redirected to after unsubscribing.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations only declare destructiveHint=true, so the description carries the rest of the load. It usefully adds that the list is empty on creation, that it's a write operation, and that it returns the new ID, but it says nothing about duplicate-name behavior, permission requirements, or irreversibility. No contradiction with the annotations.

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 terse fragments with the mutation nature and outcome front-loaded; zero wasted words.

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?

With no output schema, the statement that it returns the new list's ID fills an important gap, and all four parameters are fully documented by the schema. A note on duplicate names or permissions would round it out, but it is nearly complete for this tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, preferences, and the two URL fields. The description adds no parameter-level detail beyond that, which is acceptable at full coverage.

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

Purpose5/5

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

States a specific verb and resource ('create a new, empty mailing list'), disambiguating it from the read-side siblings like moosend_get_mailing_list and moosend_list_mailing_lists. The 'empty' qualifier and the endpoint notation make the scope unambiguous.

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 'WRITE:' prefix signals a mutation and 'create a new' implies the novelty condition, but there is no explicit when-to-use vs. when-not guidance and no alternatives named (e.g., how this differs from adding subscribers or updating an existing list).

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

moosend_get_campaignGet campaign detailsA
Read-only
Inspect

Get one campaign's details: subject, sender and reply-to, HTML and plain content, target lists/segments, schedule, status and A/B data. No statistics (use moosend_get_campaign_summary). Moosend: GET /campaigns/{CampaignID}/view.json.

NameRequiredDescriptionDefault
campaign_idYesCampaign ID (a GUID, from moosend_list_campaigns).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered; the description adds real value on top by scoping exactly which campaign data is and is not returned and by citing the underlying endpoint. It stops short of noting auth requirements or response size/format, so it is not perfect, but it is well beyond restating annotations.

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 compact sentences, front-loaded with the primary purpose, then the exclusion/alternative, then the API mapping. Every clause carries information; no filler.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of describing return content — which it does by listing the field groups the agent will receive. Combined with the exclusion pointing to the summary tool, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one parameter, whose schema description already explains the GUID format and its source (moosend_list_campaigns). The description adds no additional parameter-level detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get one campaign's details') and then enumerates the actual fields returned (subject, sender/reply-to, HTML/plain content, target lists/segments, schedule, status, A/B data). It also names the sibling it is not, so an agent can distinguish it from moosend_get_campaign_summary without opening either schema.

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

Usage Guidelines5/5

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

Explicitly excludes statistics and routes the agent to the correct alternative ('No statistics (use moosend_get_campaign_summary)'). The schema's parameter description further supplies the prerequisite chain, telling the agent to obtain the ID from moosend_list_campaigns.

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

moosend_get_campaign_activityGet campaign recipient activityA
Read-only
Inspect

Per-recipient activity for a campaign by type: Sent, Opened, LinkClicked, Unsubscribed, Bounced, Complained, or Activity (all). Paged (default 50, max 1000) and filterable by date. NOTE: Moosend rate-limits this endpoint to 2 calls per 60 seconds per API key. Moosend: GET /campaigns/{CampaignID}/stats/{Type}.json.

NameRequiredDescriptionDefault
toNoEnd date, DD-MM-YYYY. Default: today.
fromNoStart date, DD-MM-YYYY. Default: the send date.
pageNoPage number, starting at 1. Default 1.
typeNoActivity type. Default Sent.
page_sizeNoResults per page, 1-1000.
campaign_idYesCampaign ID (a GUID, from moosend_list_campaigns).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true; the description goes well beyond that by disclosing the hard rate limit (2 calls per 60 seconds per API key), the pagination defaults (50, max 1000), and the date filter's default window. The rate-limit warning is exactly the kind of operational trait an agent needs to avoid throttling failures.

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 what the tool returns, then filters/paging, then the rate-limit caveat, closing with the raw endpoint mapping. Nothing is padded and the most decision-relevant facts come first.

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

Completeness5/5

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

A read-only, six-parameter reporting tool with 100% schema coverage and no output schema; the description covers scope, types, paging, date filtering, defaults, and the rate-limit constraint. Nothing an agent needs in order to call this correctly is missing.

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?

Schema description coverage is 100%, so the baseline is 3; the description still adds value by supplying the page-size default of 50 (the schema only bounds it at 1-1000) and restating the type enum compactly. It stops short of clarifying the from/to default interaction beyond what the schema already says.

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

Purpose5/5

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

States a specific verb+resource ('per-recipient activity for a campaign') and enumerates the exact activity types (Sent, Opened, LinkClicked, Unsubscribed, Bounced, Complained, Activity) the tool returns. This is specific enough to distinguish it from sibling reporting tools like get_campaign_summary or get_campaign_link_activity without opening a schema.

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?

Usage is implied via the enumerated type values and the paging/date-filter notes, so an agent can infer this is the per-recipient detail endpoint. However, it never states when to prefer this over the obvious siblings (get_campaign_link_activity, get_campaign_activity_by_location, get_campaign_summary), which is a real missed routing cue given the overlapping 'LinkClicked' type.

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

moosend_get_campaign_activity_by_locationGet campaign opens by countryB
Read-only
Inspect

A campaign's total and unique opens broken down by country code. Moosend: GET /campaigns/{CampaignID}/stats/countries.json.

NameRequiredDescriptionDefault
campaign_idYesCampaign ID (a GUID, from moosend_list_campaigns).

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already declares the safe read profile, and the description is consistent with it. The description adds the useful detail that results are total AND unique opens grouped by country, but says nothing about permissions, date-range behavior, or response shape beyond the grouping dimension.

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?

Two short, front-loaded sentences with no filler; the resource meaning comes first. The trailing 'Moosend: GET /campaigns/{CampaignID}/stats/countries.json' is slightly redundant implementation detail but cheap and harmless.

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?

With no output schema, the description correctly communicates what the tool returns (opens by country code) and the tool is a single-parameter read operation, so most of what an agent needs is covered. Minor gaps around result ordering or empty-result behavior keep it from a 5.

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

Parameters3/5

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

Schema description coverage is 100% and the single campaign_id parameter is fully documented in the schema as a GUID sourced from moosend_list_campaigns. The description adds no additional parameter meaning, so the baseline 3 for schema-driven params applies.

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 specific resource (a campaign's total and unique opens) and a specific dimension (broken down by country code), which an agent can distinguish from sibling tools like get_campaign_activity or get_campaign_summary. However, it never explicitly contrasts itself with those siblings, so the differentiation relies on inference.

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 versus get_campaign_activity, get_campaign_link_activity, or get_campaign_summary. The agent must infer the selection rule purely from the resource phrase, and no exclusions or prerequisites are given.

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

moosend_get_campaign_summaryGet campaign summaryB
Read-only
Inspect

Get a sent campaign's results to date: sent, total/unique opens, total/unique link clicks, bounces, complaints, forwards and unsubscribes. Moosend: GET /campaigns/{CampaignID}/view_summary.json.

NameRequiredDescriptionDefault
campaign_idYesCampaign ID (a GUID, from moosend_list_campaigns).

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read with no side effects, so the description's burden is lighter. The metric list adds useful detail about what data is exposed, but nothing is said about error behavior for unsent campaigns, rate limits, or authentication requirements.

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?

Two sentences, front-loaded with the metric list before the endpoint reference; every clause carries information. The raw API path is marginally redundant for an agent but is compact and harmless.

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?

With no output schema, the description usefully enumerates the returned fields (sent, opens, clicks, bounces, complaints, forwards, unsubscribes), which is exactly what the agent needs to interpret results. It is only slightly incomplete regarding failure behavior for a non-sent campaign.

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

Parameters3/5

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

Schema coverage is 100% and the single campaign_id parameter is already documented as a GUID sourced from moosend_list_campaigns. The description adds no syntax, format, or sourcing detail beyond that, so the baseline 3 applies.

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 verb (get) and resource (a sent campaign's results to date) and enumerates the exact metrics returned, which lets an agent separate it from generic siblings like moosend_get_campaign. It does not name or contrast those siblings explicitly, so it falls short of a 5.

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 only an implicit precondition that the campaign must already be sent; no when-to-use, when-not-to-use, or alternative is offered. Given the dense cluster of similar siblings (moosend_get_campaign, moosend_get_campaign_activity, moosend_get_campaign_link_activity), the absence of routing guidance is a real gap.

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

moosend_get_mailing_listGet mailing list detailsA
Read-only
Inspect

Get one mailing list: name, member counts, status, custom field definitions (id, name, type, required), preferences and the latest import operation. Moosend: GET /lists/{MailingListID}/details.json.

NameRequiredDescriptionDefault
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).
with_statisticsNoInclude subscriber statistics. Default true.

TDQS

A3.7/5.0
Behavior3/5

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

With readOnlyHint=true already declaring the safety profile, the description adds the returned content shape, including the 'latest import operation', which is genuinely useful context. It does not disclose auth requirements, rate limits, or the effect of the with_statistics flag, so it stays at an adequate level.

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?

Front-loaded single sentence listing the payload contents, with the REST endpoint appended for mapping context. Slightly more than strictly required, but every element is short and no sentence is wasted.

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 simple read tool with no output schema, the description compensates by enumerating the returned fields, which is exactly what an agent needs. The only gap is not explaining what with_statistics changes in the payload.

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

Parameters3/5

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

Schema description coverage is 100% with only two parameters, so the schema already documents mailing_list_id and with_statistics (including its default). The description alludes to member counts/statistics but adds no syntax or behavioral detail beyond the schema, making baseline 3 correct.

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

Purpose5/5

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

States a specific verb and resource ('Get one mailing list') and enumerates exactly what the response contains: name, member counts, status, custom field definitions, preferences, latest import operation. The singular 'one mailing list' clearly differentiates it from the sibling moosend_list_mailing_lists.

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?

Usage is only implied: an agent can infer you call this when you need details for a single list. No explicit when-to-use condition, prerequisites, or named alternative (e.g., moosend_list_mailing_lists for enumeration) is given, so guidance is minimal rather than absent.

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

moosend_get_segmentGet segment detailsA
Read-only
Inspect

Get one segment's details and criteria (not its members). Moosend: GET /lists/{MailingListID}/segments/{SegmentID}/details.json.

NameRequiredDescriptionDefault
segment_idYesSegment ID (an integer, from moosend_list_segments).
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=true in annotations already establishes this as a safe read. The description adds value by clarifying that the response covers segment criteria rather than member records, but says nothing about auth requirements, error behavior, or response shape for a tool with no output schema.

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 compact sentences: the first carries purpose and scope, the second carries endpoint identity. Nothing is redundant and the disambiguating clause is front-loaded.

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 two-required-param read tool with no output schema, the description covers what is fetched and what is not, which is enough for correct invocation. Only auth/permission expectations and response format are left implicit.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already documents its type and source tool (segment_id from list_segments, mailing_list_id from list_mailing_lists). The description adds no parameter-level detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

Specific verb + resource ('Get one segment's details and criteria') with an explicit scope exclusion ('not its members') that separates it from the sibling moosend_list_segment_subscribers. The Moosend REST path reinforces exactly which resource is fetched.

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?

The parenthetical 'not its members' implicitly routes the agent to list_segment_subscribers when members are wanted, and it contrasts with list_segments by fetching one entity. No explicit 'use this when / do not use when' phrasing or prerequisites are stated.

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

moosend_get_subscriberGet subscriber by IDC
Read-only
Inspect

Get one subscriber in a mailing list by subscriber ID. Moosend: GET /subscribers/{MailingListID}/find/{SubscriberID}.json.

NameRequiredDescriptionDefault
subscriber_idYesSubscriber ID (a GUID).
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

C2.9/5.0
Behavior2/5

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

The readOnlyHint annotation already declares this is a safe read. The description only restates the read via 'Get' and adds the raw HTTP endpoint path, which is not a behavioral trait (no auth needs, rate limits, error behavior, or side effects disclosed). It adds essentially no behavioral context beyond the annotation.

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?

Two tight sentences, front-loaded with the action and resource. The second sentence (endpoint path) is largely technical garnish for an agent and doesn't earn its place as strongly as the first, but nothing is bloated.

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 with full schema coverage and a readOnly hint, the description is adequate. However, there is no output schema, and the description never indicates what subscriber data (email, status, custom fields) comes back, leaving an agent without return-shape expectations.

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

Parameters3/5

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

Schema description coverage is 100%: both subscriber_id and mailing_list_id are documented as GUIDs, with mailing_list_id even pointing to moosend_list_mailing_lists. The description adds no param-level meaning beyond what the schema already provides, so the baseline 3 applies.

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 (Get), resource (subscriber), and scope (one subscriber by subscriber ID within a mailing list). This implicitly distinguishes it from siblings like moosend_get_subscriber_by_email and moosend_list_subscribers, but it never names or contrasts those alternatives explicitly.

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?

The description says what the tool does but gives no guidance on when to choose it over moosend_get_subscriber_by_email (when you only have an email) or moosend_list_subscribers (when you want multiple). There are no prerequisites, exclusions, or alternative-routing instructions.

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

moosend_get_subscriber_by_emailFind subscriber by emailA
Read-only
Inspect

Look up a subscriber in one mailing list by email address: ID, name, status (SubscribeType 1 subscribed, 2 unsubscribed, 3 bounced, 4 removed), custom fields, tags and preferences. Moosend: GET /subscribers/{MailingListID}/view.json?Email=.

NameRequiredDescriptionDefault
emailYesSubscriber email address.
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that: it enumerates the returned payload (ID, name, status, custom fields, tags, preferences) and decodes the status values (SubscribeType 1-4), which an agent cannot get from the annotations or input schema.

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?

A single front-loaded sentence carries the substance, with the return fields and status decode packed inline rather than buried. The trailing 'Moosend: GET /subscribers/{MailingListID}/view.json?Email=.' largely restates the operation and is mild redundancy.

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?

With no output schema, the description usefully compensates by naming the returned fields and status codes. What remains unstated is the not-found/error behavior (e.g., what happens when the email is absent from the list), which matters for a lookup tool.

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

Parameters3/5

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

Schema description coverage is 100%, so both email and mailing_list_id are already documented in the schema, including the GUID provenance hint. The description adds no new parameter-level detail (no format, casing, or URL-encoding guidance beyond what the schema provides), so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (look up) and resource (subscriber), scoped explicitly to a single mailing list and keyed by email address. This distinguishes it from sibling list-oriented tools like moosend_list_subscribers and from moosend_get_subscriber without needing to open either schema.

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 phrase 'in one mailing list by email address' implies when this lookup is appropriate versus an ID-based or list-based sibling, but it never names an alternative or states an explicit when-not condition. Usage must be inferred rather than read.

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

moosend_list_campaignsList campaignsA
Read-only
Inspect

List campaigns with status (0 draft, 1 queued, 3 sent, 5 awaiting delivery, 6 sending, ...), delivery/schedule dates, target lists and headline stats (sent, opens, clicks, bounces, unsubscribes, complaints). Paged, up to 1000 per page. Moosend: GET /campaigns/{Page}/{PageSize}.json.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1. Default 1.
sort_byNoProperty to sort by. Default CreatedOn.
page_sizeNoResults per page, 1-1000.
sort_methodNoSort direction. Default ASC.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds genuinely useful context beyond that: the full status code mapping (0 draft, 1 queued, 3 sent, 5 awaiting delivery, 6 sending), the pagination ceiling of 1000, and the underlying endpoint shape. It stops short of describing ordering defaults in prose, but the operational picture is clear.

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 tight sentences: the returned payload first, then pagination and endpoint. The status enumeration is verbose but it is high-value decoding information, and nothing is padded or redundant.

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?

With no output schema, the description must carry the return-shape burden and does so well, naming the stat fields and pagination behavior. It does not state totals/paging metadata or default sort order in prose, which leaves a small gap for a list endpoint, but an agent has enough to call and interpret it.

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

Parameters3/5

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

Schema description coverage is 100%, so page, page_size, sort_by and sort_method are already fully documented with defaults and enums. The description only restates the 1000-per-page bound and never mentions sorting, so it adds essentially nothing the schema does not already carry.

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

Purpose5/5

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

States a specific verb and resource ('List campaigns') and then enumerates exactly what comes back: status codes, delivery/schedule dates, target lists, and headline stats. This makes it trivially distinguishable from the singular moosend_get_campaign and the many get_* siblings in the toolset.

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 plural 'List' versus the sibling get_campaign/get_campaign_summary implies this is the enumeration path, and the pagination note implies bulk retrieval. However, there is no explicit statement of when to prefer this over get_campaign_summary or get_campaign_activity, so usage is only implied.

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

moosend_list_mailing_listsList mailing listsA
Read-only
Inspect

List the active email (mailing) lists in the account with member counts (active, bounced, removed, unsubscribed), custom field definitions and preferences, plus paging info. A cheap way to confirm the API key works and to find list IDs. Moosend: GET /lists/{Page}/{PageSize}.json.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1. Default 1.
sort_byNoProperty to sort by. Default CreatedOn.
page_sizeNoResults per page, 1-1000.
sort_methodNoSort direction. Default ASC.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context on top: the response payload composition (member counts by status, custom fields, preferences, paging) and a cost signal ('cheap'), which matters for quota-sensitive agents. It does not discuss rate limits or the 1-1000 page_size ceiling's practical effect.

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 tight sentences plus a compact endpoint mapping (GET /lists/{Page}/{PageSize}.json). The verb, scope, return contents, and practical use case are all front-loaded with no filler or repetition.

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

Completeness5/5

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

There is no output schema, so the description carries the burden of describing the return value — and it does, enumerating counts, custom field definitions, preferences, and paging. Combined with the 100% schema coverage on inputs, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100% with two enum-constrained params (sort_by, sort_method), so the schema already carries the parameter meaning. The description only alludes to 'paging info' without documenting the page/page_size interplay or defaults, so it adds little beyond the schema — the baseline 3 is correct.

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

Purpose5/5

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

States a specific verb (List) and resource (active email/mailing lists in the account) and enumerates what comes back: member counts by status, custom field definitions and preferences, and paging info. The scope qualifier 'active' and the 'find list IDs' framing implicitly separate it from moosend_get_mailing_list, which fetches one list.

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?

Gives explicit usage context ('a cheap way to confirm the API key works and to find list IDs'), which tells the agent when this is the right entry point rather than jumping straight to a get_* sibling. It stops short of naming an alternative or an exclusion (e.g., 'for a single list's details use moosend_get_mailing_list').

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

moosend_list_segmentsList segments of a listA
Read-only
Inspect

List the segments of one mailing list, including their criteria, match type (0 all / 1 any) and a readable description. Moosend: GET /lists/{MailingListID}/segments.json.

NameRequiredDescriptionDefault
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds genuine value by enumerating returned fields (criteria, match type 0/1, readable description), but omits pagination, result caps, or error behavior for an unknown list ID.

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?

One front-loaded sentence stating scope and returned fields, followed by the backing endpoint. Little waste, though the raw endpoint path is marginally redundant for an agent that doesn't need it.

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?

With no output schema, the description correctly compensates by naming the fields returned, and the single required parameter is fully covered by the schema. Only missing pagination/edge-case notes keep it from a 5.

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

Parameters3/5

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

Schema coverage is 100% and the single mailing_list_id parameter is already documented (GUID, sourced from moosend_list_mailing_lists). The description adds nothing beyond what the schema provides, so the baseline 3 is correct.

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 (segments of one mailing list), plus what the results contain (criteria, match type, description). It implicitly distinguishes itself from moosend_get_segment by scope ('one mailing list'), though it never names that sibling explicitly to fully earn a 5.

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?

Usage is only implied: an agent can infer you call this to enumerate a list's segments, and that moosend_get_segment handles a single one. There is no explicit when-to-use, when-not, or named alternative, so it stays at 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.

moosend_list_segment_subscribersList segment subscribersA
Read-only
Inspect

List the subscribers that currently match one segment's criteria. Moosend: GET /lists/{MailingListID}/segments/{SegmentID}/members.json.

NameRequiredDescriptionDefault
segment_idYesSegment ID (an integer, from moosend_list_segments).
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a non-destructive read, so the description only needs to add context. It does add a useful trait – that results reflect segment membership 'currently' (dynamic, not a static snapshot) – plus the backing REST endpoint, but says nothing about pagination, result size, or empty-segment behavior.

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 with zero filler: the purpose and scope come first, and the endpoint mapping is a compact secondary detail. Nothing redundant or padded.

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 two-parameter listing tool with full schema coverage and a readOnlyHint, the essentials are present, but with no output schema the description gives no hint about the shape of the returned subscriber records or pagination, leaving a real gap in what an agent needs to use results correctly. There is also no note on behavior when a segment matches zero subscribers.

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

Parameters3/5

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

Schema description coverage is 100%: both required parameters are documented, including their source tools (moosend_list_segments, moosend_list_mailing_lists) and the GUID/integer formats. The description adds no parameter meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 verb and resource ('List the subscribers') plus a qualifying scope ('that currently match one segment's criteria'), which distinguishes it from the broader moosend_list_subscribers. It does not explicitly name that sibling, so it stops short of a 5.

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?

Usage is only implied by the scope phrase 'currently match one segment's criteria' – the agent can infer this is the segment-filtered variant of listing subscribers. There is no explicit when-to-use, no when-not-to-use, and no named alternative such as moosend_list_subscribers or moosend_get_segment.

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

moosend_list_sendersList campaign sendersA
Read-only
Inspect

List the account's campaign senders (name, email, enabled, SPF/DKIM verification). A draft campaign's sender and reply-to must be one of these. Moosend: GET /senders/find_all.json.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

readOnlyHint=true already tells the agent this is a safe read, so the bar is lower; the description still adds value by naming the returned fields and the SPF/DKIM verification aspect, plus the underlying endpoint. It does not discuss ordering or volume, but for a small account-scoped list that is minor.

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?

Two dense sentences front-load the purpose and the practical constraint, with no filler. The trailing 'Moosend: GET /senders/find_all.json' is mostly implementation trivia that an agent caller does not strictly need, which slightly dilutes the otherwise efficient structure.

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

Completeness5/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 parameters, the description carries the burden and does it: it enumerates the returned fields and the business rule tying senders to draft campaigns, so an agent can call and interpret this tool without opening anything else.

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 input parameters, so per the baseline this scores 4; there is nothing for the description to disambiguate and it correctly presents the tool as parameterless.

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

Purpose5/5

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

Specific verb (List) plus resource (account's campaign senders), and it enumerates the returned fields (name, email, enabled, SPF/DKIM verification), which clearly separates it from sibling list tools like list_campaigns or list_mailing_lists.

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?

States a concrete use condition: a draft campaign's sender and reply-to must come from this list, effectively routing the agent here before create_draft_campaign. It gives no explicit exclusions or named alternative, but the context for when this list matters is clear.

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

moosend_list_subscribersList subscribers in a listA
Read-only
Inspect

List the subscribers of one mailing list filtered by status (Subscribed, Unsubscribed, Bounced or Removed), with name, email, custom fields, tags, preferences and dates. Paged. Moosend: GET /lists/{MailingListID}/subscribers/{Status}.json.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1. Default 1.
statusNoSubscriber status to return. Default Subscribed.
page_sizeNoResults per page, 1-1000.
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description's addition of 'Paged' and the endpoint shape (GET /lists/{MailingListID}/subscribers/{Status}.json) is genuine value. It also discloses the returned subscriber facets, though it omits rate limits, default page size, and total-count behavior.

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 compact sentences that front-load the core action and keep the filter, return fields, and pagination note tight. The trailing API-path sentence is somewhat redundant with the tool's purpose but is short and harmless.

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?

With no output schema, the description usefully enumerates the returned fields (name, email, custom fields, tags, preferences, dates) and flags pagination, which covers the main agent questions. Missing details on paging limits/defaults are already handled by the schema.

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

Parameters3/5

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

Schema coverage is 100% with per-parameter descriptions and an enum for status, so the schema carries the parameter burden. The description's restatement of the four status values and 'Paged' adds little beyond what the schema already documents, matching the baseline 3.

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 concrete verb+resource ('List the subscribers of one mailing list') plus the filter dimension (status) and the fields returned, so the agent knows exactly what comes back. It does not explicitly contrast itself with the close sibling moosend_list_segment_subscribers, leaving that distinction (mailing list vs. segment) to inference.

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 status filter scope implies when to reach for this tool, and 'one mailing list' implies the required scoping. However, there is no explicit when-to-use/when-not guidance and no routing to alternatives such as moosend_get_subscriber or moosend_list_segment_subscribers.

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

moosend_unsubscribe_subscriberUnsubscribe from a listA
Destructive
Inspect

WRITE: unsubscribe one email address from one mailing list (not account-wide). Undo by adding the subscriber again with moosend_add_subscriber. Moosend: POST /subscribers/{MailingListID}/unsubscribe.json.

NameRequiredDescriptionDefault
emailYesEmail address to unsubscribe.
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the write/destructive nature is partly covered. The description adds value beyond that: the 'WRITE:' marker, the explicit single-list scope limit, the reversal procedure, and the underlying endpoint. It stops short of stating whether unsubscribing a non-existent subscriber errors or is idempotent.

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, front-loaded segments (capability, undo path, endpoint) with no filler. The most decision-relevant information — the scope restriction — comes first.

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 two-parameter mutation with no output schema, the description covers scope, reversibility, and endpoint. Only minor gaps remain (error/idempotency behavior, any rate limiting), which are unlikely to block correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% — both email and mailing_list_id are documented in the schema, including the GUID hint and pointer to moosend_list_mailing_lists. The description adds no parameter-level detail, so the baseline 3 applies.

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

Purpose5/5

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

Specific verb (unsubscribe) + resource (one email address from one mailing list) with explicit scope. It even pre-empts the obvious ambiguity by stating '(not account-wide)', so the agent can distinguish it from any bulk/account-level operation.

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?

Gives clear usage context and names the reversible path via moosend_add_subscriber. It does not, however, mention moosend_update_subscriber or when to prefer that over an unsubscribe/re-add cycle, so the alternative-selection guidance is not exhaustive.

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

moosend_update_subscriberUpdate a subscriberA
Destructive
Inspect

WRITE: update one subscriber (by ID) in a mailing list — email, name, custom fields, tags, preferences. Include every custom field you want to keep. Moosend: POST /subscribers/{MailingListID}/update/{SubscriberID}.json.

NameRequiredDescriptionDefault
nameNoSubscriber name.
tagsNoSubscriber tags.
emailYesThe subscriber's email address (required by Moosend).
preferencesNoPreference option values chosen by the subscriber (must match the list's preference options).
custom_fieldsNoCustom field values by field name, e.g. {"City":"Athens","Age":25}. Sent to Moosend as "Name=Value" pairs. WARNING: on an existing subscriber, any custom field NOT included is cleared — include every field you want to keep.
subscriber_idYesSubscriber ID (a GUID).
mailing_list_idYesMailing list ID (a GUID, from moosend_list_mailing_lists).
has_external_double_opt_inNoTrue if the subscriber already gave consent by other means.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the bar is lower, yet the description adds real value by warning that omitted custom fields are cleared and that the caller must include every field to keep. It also flags the operation as a WRITE and gives the underlying POST endpoint. It stops short of noting auth/permission needs or rate limits.

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?

Front-loaded with the 'WRITE:' mutation signal, then the scope, then the critical custom-field caveat. Efficient and well-ordered, though the raw endpoint path is arguably redundant padding that an agent does not need.

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 an eight-parameter mutation tool with no output schema and a destructiveHint annotation, the description covers the essential risk (custom-field clearing) and the write nature. It omits mention of the double-opt-in/consent parameter's implications and any return/error behavior, leaving minor gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all eight parameters, including the custom_fields clearing warning. The description largely restates the field list rather than adding syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (update) and resource (one subscriber, by ID, in a mailing list) and enumerates the mutable fields (email, name, custom fields, tags, preferences). The 'one subscriber (by ID)' framing cleanly separates it from the sibling moosend_add_subscriber and the bulk list tools.

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?

The 'WRITE:' prefix and the instruction 'Include every custom field you want to keep' give clear context on when and how to invoke it. However, it never explicitly names the alternative (moosend_add_subscriber) or states a when-not-to-use condition, so it falls short of 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. 20 tool updates
    • Changedmoosend_add_subscriber1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_create_draft_campaign1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_create_mailing_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_campaign1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_campaign_activity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_campaign_activity_by_location1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_campaign_link_activity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_campaign_summary1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_mailing_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_segment1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_subscriber1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_get_subscriber_by_email1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_campaigns1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_mailing_lists1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_segment_subscribers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_segments1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_senders1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_list_subscribers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_unsubscribe_subscriber1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmoosend_update_subscriber1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 20 tool updates
    • First observedmoosend_add_subscriber
    • First observedmoosend_create_draft_campaign
    • First observedmoosend_create_mailing_list
    • First observedmoosend_get_campaign
    • First observedmoosend_get_campaign_activity
    • First observedmoosend_get_campaign_activity_by_location
    • First observedmoosend_get_campaign_link_activity
    • First observedmoosend_get_campaign_summary
    • First observedmoosend_get_mailing_list
    • First observedmoosend_get_segment
    • First observedmoosend_get_subscriber
    • First observedmoosend_get_subscriber_by_email
    • First observedmoosend_list_campaigns
    • First observedmoosend_list_mailing_lists
    • First observedmoosend_list_segment_subscribers
    • First observedmoosend_list_segments
    • First observedmoosend_list_senders
    • First observedmoosend_list_subscribers
    • First observedmoosend_unsubscribe_subscriber
    • First observedmoosend_update_subscriber

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables management of email campaigns, subscribers, lists, segments, journeys, templates, transactional email, and client/account settings through the Campaign Monitor API via natural language.
    100
    1
    -
  • A
    license
    B
    quality
    D
    maintenance
    Exposes the full Campaign Monitor v3.3 API as 117 tools for managing campaigns, lists, subscribers, and more, with OAuth authentication.
    100
    18 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Manage Mailchimp audiences, campaigns, and members via the Mailchimp Marketing API through natural language queries.
    11 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables authenticated management of email, drafts, sending, domains, contacts, templates, campaigns, workflows, and webhooks through typed MCP tools backed by a REST API.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.