Mailrith Email Marketing
Server Details
Manage Subscribers, Broadcasts, Sequences, Automations, and reporting in Mailrith.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- anrawool/mailrith-agent-platform
- GitHub Stars
- 0
- Server Listing
- Mailrith MCP Server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 52 of 52 tools scored. Lowest: 3.3/5.
Each tool targets a distinct resource and action combination. While automations and sequences are similar, their descriptions clearly differentiate rule-based automations from scheduled sequences. No tools have overlapping purposes that would confuse an agent.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., analytics_create_report, broadcasts_send, subscribers_upsert). The naming is predictable and easy to parse for both agents and developers.
52 tools is high but appropriate for an email marketing server covering analytics, automations, broadcasts, templates, segments, senders, sequences, subscribers, tags, workspace, and discovery. The scope justifies the number, though it borders on overwhelming.
The tool surface covers core email marketing operations with CRUD for most resources and extras like preflights, previews, test sends, and status updates. However, there are notable gaps: no delete operations for subscribers, tags, segments, or templates, which could hinder full lifecycle management.
Available Tools
52 toolsanalytics_create_reportCreate or reuse an analytics reportAIdempotentInspect
Runs from compact rollups. Ranges through 31 days complete inline; longer ranges are queued. Results expire after 24 hours and never exceed 100 rows. Effect: workspace-change. Retry after reading the current resource state. Permission: analytics:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, idempotent, and non-destructive. The description adds valuable details: results expire in 24 hours, row limit of 100, workspace-change effect, retry advice, and permission requirement. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—five sentences—each providing critical behavioral or usage information. All content is front-loaded and non-redundant. Every sentence earns its place, avoiding any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the input schema (nested object, multiple optional fields) and the presence of an output schema, the description covers all essential behavioral aspects: data source, range limits, queuing, expiration, row limit, side effects, permission, and retry guidance. This is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description doesn't need to enumerate parameters. However, it adds meaning to date parameters by explaining behavior for ranges ≤31 days vs longer, which goes beyond the schema's format constraint. Other parameters (group_by, source_ids, etc.) are well-defined in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Create or reuse an analytics report' and description clearly state the tool's function. It specifies it creates reports with distinct behavior (rollups, date ranges, expiration, row limits), distinguishing it from the sibling analytics_get_report which retrieves existing reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context (30-day inline vs queued longer ranges, expiration, permission requirement) but does not explicitly contrast with alternatives like analytics_get_report or other analytics tools. The sibling list helps infer when to use this tool for creation vs retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_get_reportGet an analytics reportARead-onlyIdempotentInspect
Returns one unexpired bounded analytics report by identifier. Permission: analytics:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum aggregate row count, from 1 to 50. | |
| report_id | Yes | Stable analytics report identifier. | |
| starting_after | No | Opaque next_cursor returned by the previous report page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: reports are 'unexpired' and 'bounded', and pagination uses cursors. Annotations already indicate read-only and idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, permission, pagination hint, and reference URL. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers permission, pagination, expiration, and includes an API reference link. Output schema exists, so return value details are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description links parameters to pagination behavior ('bounded pages' and 'returned cursors'), adding practical context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with 'Returns one unexpired bounded analytics report by identifier', specifying a clear verb ('returns'), resource ('analytics report'), and unique qualifiers ('unexpired bounded'), distinguishing it from list or create tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required permission ('analytics:read') and pagination hints, but does not explicitly exclude scenarios or compare to siblings like analytics_create_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_createCreate an automationAInspect
Creates an automation in the authenticated workspace. Effect: workspace-change. Retry with the same idempotency_key. Permission: automations:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only readOnlyHint false), so the description carries the burden. It states 'Effect: workspace-change' and mentions idempotency key support, but does not detail other behavioral traits like side effects of repeated calls or state changes beyond workspace modification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence for the main purpose followed by labeled key points (Effect, Retry, Permission, API reference). Every element is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested objects, many parameters) and the presence of an output schema, the description covers the essential aspects: purpose, effect, idempotency, and permissions. It lacks examples or typical usage scenarios, but is adequate for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the idempotency_key parameter's purpose ('Retry with the same idempotency_key') and that the body is 'the exact JSON request body defined by the Mailrith public API contract', clarifying its nature beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates an automation in the authenticated workspace', providing a specific verb and resource. This distinguishes it from sibling tools like automations_get or automations_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Retry with the same idempotency_key' and 'Permission: automations:write', offering guidance on idempotency and required permissions. It does not explicitly list when not to use it or alternatives, but the purpose is straightforward enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_getGet an automationARead-onlyIdempotentInspect
Returns one automation from the authenticated workspace. Permission: automations:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The automation identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds value with permission requirement and API documentation link, enhancing transparency beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no superfluous words. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has output schema and simple input. Description covers purpose, permission, and reference; sufficient for a get operation. Could mention error handling but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described as 'The automation identifier.' Description does not add extra meaning beyond schema, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Returns one automation from the authenticated workspace,' specifying verb and resource. Distinguishes from sibling automations_list by indicating single-item retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required permission 'automations:read' and provides API reference, but does not explicitly guide when to use this tool versus alternatives like automations_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_listList automationsARead-onlyIdempotentInspect
Returns automations in the authenticated workspace. Permission: automations:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of automations to return. | |
| search | No | Filter Automations by name or status. | |
| starting_after | No | Use the opaque cursor from the previous page to request the next page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safety (readOnly, idempotent, non-destructive). The description adds operational context: the workspace scope and pagination method, complementing annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no fluff: purpose, permission, and pagination. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with full schema coverage and an output schema (inferred), the description covers scope, permissions, and pagination. No missing context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining pagination cursors and the permission context, going beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns automations in the authenticated workspace,' using a specific verb and resource. It distinguishes itself from siblings like automations_get by indicating a list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the required permission (automations:read) and pagination guidance. While it doesn't explicitly exclude other uses, the context is clear and sufficient for a list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_preflightCheck automation readinessARead-onlyIdempotentInspect
Checks the saved Automation definition and email delivery prerequisite without running any action. Permission: automations:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The Automation identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool 'checks ... without running any action', reinforcing safe behavior, and details what is checked (definition and email delivery). It also includes the permission requirement and an API reference, providing additional context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, a permission line, and an API reference. All information is front-loaded and relevant, with no redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with full schema descriptions, annotations, and an output schema, the description covers the tool's purpose, what it checks, its safety profile, and prerequisites. It is complete for an agent to correctly understand and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (automation_id) with 100% schema coverage that already describes it as 'The Automation identifier.' The description does not add further semantics or usage details for the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Checks', the resource 'Automation definition and email delivery prerequisite', and the constraint 'without running any action'. This distinguishes it from sibling tools like automations_send_test or broadcasts_send that execute actions. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that the tool checks readiness without running actions, implying its use for validation. It also specifies the required permission 'automations:read'. However, it does not explicitly contrast with siblings (e.g., when to use automations_send_test instead) or provide exclusions, leaving room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_preview_journeyPreview an automation journeyARead-onlyIdempotentInspect
Shows the bounded path a selected Subscriber would take through the current saved conditions without running actions or writing history. Permissions: subscribers:read, automations:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The Automation identifier. | |
| subscriber_id | Yes | The saved Subscriber whose current state should be evaluated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it 'does not run actions or write history', which reinforces the read-only nature. It also mentions required permissions and includes an API reference link for further details, adding useful behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: one explaining the tool's core functionality, and another listing permissions and an API reference link. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but noted), the description does not need to detail return values. It covers purpose, behavior, permissions, and a reference link. Could potentially mention error conditions or edge cases, but for a read-only preview tool, this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented (automation_id and subscriber_id). The description does not add additional meaning beyond what the schema provides. Baseline score of 3 is appropriate since the schema adequately describes the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'shows' and the resource 'bounded path a selected Subscriber would take through the current saved conditions'. It distinguishes from other automation tools by emphasizing it doesn't run actions or write history, and implies it's a preview/simulation tool, which is distinct from preflight or execution tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for previewing without side effects, but it does not explicitly state when to use this tool vs alternatives like automations_preflight or sequences_preview_journey. No 'when to use' or 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_send_testSend automation test messagesADestructiveInspect
Sends up to five selected saved Automation email steps to one explicit test address. This does not start the Automation or run other actions. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, subscribers:read, automations:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| automation_id | Yes | The Automation identifier. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context (external-email effect, permissions), but there is a contradiction with annotations: the description suggests idempotency via retry with key, while annotations set idempotentHint=false. This undermines trust.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no redundancy. Each sentence adds distinct information: action, exclusions, and metadata (effect, permissions, idempotency, API reference). Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations provide some info, the description is fairly complete—covering purpose, exclusions, permissions, and idempotency. It lacks details on error handling or rate limits, but is adequate for a test tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds limited value beyond the schema. It reinforces that recipient is a test address and subscriber_id is for personalization, but does not introduce new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends up to five automation email steps to a test address, and explicitly distinguishes from starting the automation. This differentiates it from sibling tools like automations_create or automations_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (testing automation steps without starting) and includes permissions and idempotency guidance. It could be more explicit about alternatives, but the purpose is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_updateUpdate an automationADestructiveIdempotentInspect
Updates an existing automation. Effect: workspace-change. Retry after reading the current resource state. Permission: automations:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| automation_id | Yes | The automation identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds useful context about workspace-change and retry-after-read, but does not elaborate on specific destructive effects or rate limits. It provides additional value without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with four short sentences that effectively front-load the purpose. Every sentence provides essential information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not clarify whether the update is a partial merge or full replacement. The presence of an output schema mitigates the need for return value details, but the update semantics are ambiguous for a complex body, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with minimal descriptions for both parameters. The description adds no additional parameter detail beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Updates an existing automation' with a verb and resource, distinguishing it from sibling tools like automations_create or automations_get. However, it does not explicitly differentiate from automations_update_status, which updates only the status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (workspace-change, retry pattern, permission) but lacks explicit guidance on when to use this tool versus alternatives like automations_create or automations_update_status. No when-not or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
automations_update_statusChange an automation statusADestructiveIdempotentInspect
Starts, pauses, or returns one Automation to draft without changing its definition. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, automations:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| automation_id | Yes | The Automation identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutability (readOnlyHint=false) and idempotency (idempotentHint=true). The description adds context about the external effect ('external-email') and suggests retrying after reading state, which goes beyond the annotations. No contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action. It uses structured snippets for effect, retry, permissions, and API reference without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action, effect, retry behavior, and permissions. With an output schema present, it does not need to explain return values. It could be slightly improved by distinguishing from similar sibling tools more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with clear descriptions for both parameters (automation_id and body). The description does not add further semantic meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool starts, pauses, or returns an automation to draft without changing its definition. This specific verb-resource combination distinguishes it from sibling tools like automations_update, which modifies the definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides retry guidance ('Retry after reading the current resource state') and required permissions ('live_actions:write, automations:write'). However, it does not explicitly state when to use this tool versus alternatives like automations_update or sequences_update_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_cancelCancel a broadcast sendADestructiveInspect
Requests cancellation for delivery work that has not reached the provider. Provider-accepted emails cannot be recalled. Repeat the same request with the same idempotency key when the response is lost. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | The broadcast identifier. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context: cancellation only works if not yet accepted by provider, effect 'external-email', and retry behavior. Annotations already flag destructive hint, but description provides useful nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences each add essential info: purpose, limitation, retry guidance, effects, permissions. No wasted words. Could be slightly restructured for even better front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema and annotations, description covers usage, limitations, retry, and permissions. Adequate for a cancellation tool. Minor gap: no explicit return value description (but output schema likely covers that).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters with descriptions (100% coverage). Description adds value by explaining idempotency_key usage for retries when response lost, enhancing practical understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title 'Cancel a broadcast send' and description 'Requests cancellation for delivery work that has not reached the provider' clearly state the action and resource. It distinguishes from siblings like broadcasts_unschedule by specifying the condition (not yet provider-accepted).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes that provider-accepted emails cannot be recalled (when not to use) and recommends retry with idempotency key. Also mentions required permissions. Lacks explicit comparison to alternatives like broadcasts_unschedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_createCreate a broadcastAInspect
Creates a broadcast draft in the authenticated workspace. Effect: workspace-change. Retry with the same idempotency_key. Permission: broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| idempotency_key | No | Optional idempotency key for safe retries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false, but the description adds 'Effect: workspace-change,' which provides behavioral context beyond the annotations. It also mentions idempotency key usage for retries, clarifying behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each conveying essential information: action, effect, retry guidance, permission, and API reference. No extraneous words; perfectly sized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested input schema and existence of output schema, the description covers core aspects (creation, workspace change, permissions). It lacks explicit details about prerequisites or post-creation steps, but these are implied by the tool name and sibling tools. Reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both parameters (body and idempotency_key). The tool description adds no additional parameter-level meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates a broadcast draft in the authenticated workspace,' using a specific verb and resource. This distinguishes it from sibling tools like broadcasts_schedule, broadcasts_send, and broadcasts_send_test, which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes guidance on retries with an idempotency key and specifies required permission (broadcasts:write). While it does not explicitly contrast with alternatives, the context of siblings implies this is for creating a draft, not sending or scheduling. Lacks explicit when-not-to-use advice but is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_getGet a broadcastARead-onlyIdempotentInspect
Returns a broadcast draft, scheduled send, active send, or completed send. Permission: broadcasts:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds that it can return multiple states and mentions the required permission, but these do not significantly expand beyond what annotations imply. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that cover purpose, states, permission, and a reference link. Every word adds value, with the main action front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, the presence of annotations, and an output schema, the description is largely complete. It could mention that the output varies by state, but the purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter broadcast_id, which is well-described in the schema. The description does not add additional meaning or usage context beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that it returns a broadcast in any state (draft, scheduled, active, completed). This distinguishes it from siblings like broadcasts_list (list) and broadcasts_get_send_progress (progress). The verb 'Returns' combined with the specific resource makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like broadcasts_get_send_progress or broadcasts_list. While it implies usage for retrieving a specific broadcast, there is no guidance on when not to use it or mention of prerequisites beyond the permission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_get_send_progressGet broadcast send progressARead-onlyIdempotentInspect
Returns bounded delivery progress, current rates, timing, outcome counts, and pause state. Poll until terminal is true; use 5 to 10 second intervals while progress changes and back off to 30 seconds when unchanged. Permission: broadcasts:read. Polling: wait at least 2 seconds, use exponential backoff up to 30 seconds, stop at a terminal state, and stop after 15 minutes. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant value beyond annotations: details on returned data fields, polling behavior, and permission requirements. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no redundant information. Every sentence serves a clear role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers usage instructions, polling behavior, and permissions. Complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full coverage for the single parameter 'broadcast_id'. Description does not add further meaning beyond what the schema already describes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns delivery progress, rates, timing, outcome counts, and pause state, and instructs to poll until terminal. It distinguishes from other broadcast tools by focusing on progress tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides polling intervals, permission requirement, and backoff/stop conditions. Lacks explicit mention of when not to use or alternative tools, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_listList broadcastsARead-onlyIdempotentInspect
Returns broadcast drafts, scheduled sends, active sends, and completed sends. Permission: broadcasts:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| search | No | Filter Broadcasts by subject, preview text, status, or sender. | |
| starting_after | No | Opaque cursor returned by the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description adds value by stating the required permission and pagination behavior. For a read-only list operation, this is sufficient. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose, and each sentence adds unique information (function, permission, pagination, link). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (list operation with 3 parameters, output schema present, annotations covering safety), the description covers purpose, permission, and pagination. It could mention result format briefly, but the output schema handles that. Fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema fully documents the three parameters (limit, search, starting_after). The description adds no additional parameter-level details, so it meets the baseline but provides no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Returns broadcast drafts, scheduled sends, active sends, and completed sends.' It uses a specific verb ('returns') and resource ('broadcasts'), and distinguishes from sibling tools like broadcasts_get or broadcasts_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission ('broadcasts:read') and pagination guidance ('use bounded pages and returned cursors'), which helps usage. However, it does not explicitly contrast with alternative tools (e.g., broadcasts_get for single item) or provide when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_preflightInspect broadcast readinessARead-onlyIdempotentInspect
Optionally checks the current Subscriber estimate, provider capacity, sender setup, event tracking, and blocking issues. This diagnostic is not required before starting a durable send. Permission: broadcasts:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by listing exactly what is checked (subscriber estimate, provider capacity, etc.) and mentions the required permission and API reference, providing helpful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences cover the tool's purpose and optionality, plus permission and API reference. Every sentence is essential and front-loaded with the core diagnostic function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description does not need to detail return values. It adequately covers the tool's scope, optional nature, and what is inspected, making it complete for a simple read-only diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (broadcast_id) with full schema coverage. The description does not add additional meaning beyond the schema's 'The broadcast identifier.' Since schema coverage is 100%, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly state that this tool inspects broadcast readiness by checking subscriber estimate, provider capacity, sender setup, event tracking, and blocking issues. It is distinct from sibling broadcast tools (e.g., broadcasts_send, broadcasts_schedule) and other preflight tools (e.g., automations_preflight).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the tool is optional ('not required before starting a durable send'), indicating when it's appropriate to use. However, it does not specify scenarios where it should be skipped or mention alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_scheduleSchedule or reschedule a broadcastADestructiveIdempotentInspect
Schedules a draft for future delivery, or changes the delivery time of an existing scheduled Broadcast. This uses Mailrith's durable scheduled-send path and does not start delivery immediately. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it specifies the durable scheduled-send path, no immediate delivery, external email effect, and a retry recommendation. Annotations already indicate destructive and idempotent hints, but the description provides meaningful operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loads the core action. Every sentence adds value, including effect, permissions, and API reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and output schema, the description covers purpose, behavior, permissions, and provides an API reference. It lacks details on return values, but the output schema exists. The retry note is helpful. Minor gap: rescheduling behavior not fully explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not elaborate on parameters beyond what the schema provides. The body description is generic ('exact JSON request body'), adding little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool schedules a draft or reschedules an existing broadcast, with the title reinforcing this. It distinguishes from sibling tools like broadcasts_cancel and broadcasts_unschedule by focusing on future delivery scheduling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool is for scheduling drafts or rescheduling existing broadcasts, and notes it does not start delivery immediately. It mentions permissions and effect, but does not explicitly contrast with alternatives like broadcasts_send for immediate sending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_sendSend a broadcast nowADestructiveInspect
Immediately creates durable preparation for a broadcast draft or scheduled send. Mailrith calculates the exact Subscriber total and checks provider readiness in the background before delivery. A 202 response means the durable send was accepted, not that provider delivery is complete. Reuse the same idempotency key if the response is lost. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The exact JSON request body defined by the Mailrith public API contract. | |
| broadcast_id | Yes | The broadcast identifier. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false. The description adds valuable context: the 202 response is not final delivery, background calculation occurs, and the 'Effect: external-email' signals external side effects. This goes beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at roughly 4 sentences, with the main action front-loaded. It includes key points (response meaning, idempotency, permissions, link) without unnecessary words. Some repetition (idempotency key mentioned twice) could be trimmed, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, nested objects, output schema present), the description covers the core behavior, retry guidance, permissions, and a reference link. It does not explain the output schema, but that's documented elsewhere. Missing details about error handling, but adequate for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no new meaning about parameters beyond what the schema provides. It mentions preflight_proof optionally seeding checks, but that is already in the schema description. No additional clarity is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('creates durable preparation') and clearly states the resource ('broadcast draft or scheduled send'). It distinguishes from sibling tools by mentioning idempotency key handling and that the response is just acceptance, not completion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it's for sending a broadcast immediately, handles retries with idempotency key, and lists required permissions. However, it does not explicitly contrast with alternatives like broadcasts_schedule or broadcasts_send_test, though the mention of 'draft or scheduled send' implies applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_send_testSend a broadcast test emailBDestructiveInspect
Sends a test message from an existing broadcast to one recipient. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, subscribers:read, broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| broadcast_id | Yes | The broadcast identifier. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false. The description adds context like 'Effect: external-email' and retry advice, which is helpful. However, it does not fully explain side effects (e.g., credit usage, logging) for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the action, and includes essential details (effect, retry, permissions, link) with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations are present, the description covers core purpose and permissions. However, it lacks details on success/failure responses or when to use, leaving some gaps for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description reinforces the schema (e.g., 'one recipient' for recipient, 'personalization' for subscriber_id) but adds no new information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('sends a test message') and resource ('from an existing broadcast to one recipient'). It differentiates from siblings by specifying 'broadcast' and 'one recipient', though it does not explicitly contrast with automations_send_test or sequences_send_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides permissions but no guidance on when to use this tool versus alternatives (e.g., broadcasts_preflight, broadcasts_send). It does not mention context or prerequisites, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_unscheduleUnschedule a broadcastADestructiveIdempotentInspect
Returns a scheduled Broadcast to draft state before delivery starts. Effect: workspace-change. Retry after reading the current resource state. Permissions: live_actions:write, broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits beyond annotations: it mentions workspace-change effect, retry advice, and permissions. Annotations already indicate destructiveHint=true and idempotentHint=true, which are consistent. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: purpose, behavioral guidelines, and permissions/reference. Every sentence adds value and is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers purpose, behavior, permissions, and retry policy. It could mention edge cases (e.g., if already draft) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter broadcast_id, so the description does not add further semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns a scheduled Broadcast to draft state' and the resource 'broadcast'. It distinguishes from siblings like broadcasts_cancel and broadcasts_schedule by specifying 'before delivery starts' and 'draft state'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidelines: 'Effect: workspace-change' indicates state mutation, and 'Retry after reading the current resource state' advises on error handling. It also lists required permissions. However, it doesn't explicitly contrast with alternative tools for unscheduling vs. canceling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcasts_updateUpdate a broadcastADestructiveIdempotentInspect
Updates a broadcast draft or scheduled send in place. Effect: workspace-change. Retry after reading the current resource state. Permission: broadcasts:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| broadcast_id | Yes | The broadcast identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=true (mutation). The description adds context: 'Effect: workspace-change' and the retry-after-read advice. It doesn't contradict annotations and provides useful behavioral hints beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences), front-loaded with the core purpose, and includes additional relevant facts (effect, retry, permission) without redundancy. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested schema and presence of an output schema, the description covers purpose, effect, retry guidance, and permission. It doesn't explicitly restrict to draft/scheduled sends, but that is implied. The tool feels adequately specified for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; all parameters have descriptions. The description for 'body' ('The exact JSON request body...') adds little beyond the schema, and 'broadcast_id' has a basic description. At high coverage, description provides no extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Updates' and the resource 'broadcast draft or scheduled send'. It distinguishes from sibling tools like broadcasts_create (create) and broadcasts_get (read) by specifying that it modifies existing drafts or scheduled sends in place.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance: 'Retry after reading the current resource state' and mentions required permission. However, it does not explicitly state when not to use this tool (e.g., for already sent broadcasts) or compare alternatives like broadcasts_schedule for scheduling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discovery_get_capabilitiesGet authenticated API capabilitiesARead-onlyIdempotentInspect
Returns the current workspace context, discovery URLs, shared request conventions, supported webhook events, and public resource operations available to the authenticated bearer credential. Permission: none. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context beyond annotations, such as 'Permission: none' and an API reference link, which provides additional transparency about authentication requirements and documentation. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that lists the returned resources, followed by two concise details (permission and reference). Every piece of information earns its place; there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema (not shown but indicated), the description does not need to explain return values. It adequately lists the categories of what is returned. The tool is simple and stateless, so the description is complete for an agent to understand its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. The description does not need to add parameter details because there are none. Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: workspace context, discovery URLs, shared request conventions, supported webhook events, and public resource operations. The verb 'Returns' specifies the action, and the resource is well-defined. It distinguishes itself from sibling tools (analytics, automations, etc.) by being a pure discovery endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by listing what is returned and includes 'Permission: none', which helps agents decide if authentication is needed. However, it does not explicitly state when to use this tool versus alternatives or when not to use it. The implied usage is for discovering available capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_templates_createCreate an email templateAInspect
Creates a reusable email template scoped to the authenticated workspace. Effect: workspace-change. Retry with the same idempotency_key. Permission: email_templates:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| idempotency_key | No | Optional idempotency key for safe retries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide limited info (readOnlyHint=false, destructiveHint=false). The description adds 'Effect: workspace-change' and permission requirement, offering some behavioral context beyond annotations, but the term 'workspace-change' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a list of effects, making it fairly concise. The inclusion of an API reference link adds utility without much bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of nested objects and the anyOf constraint between body_document and starting_point_id, the description does not explain these options or return values. The output schema exists but is not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description provides minimal additional meaning for parameters beyond the schema, only noting the idempotency_key usage and that body is 'the exact JSON request body.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly state the tool creates an email template scoped to the workspace. It is easily distinguished from sibling tools like email_templates_get, email_templates_list, and email_templates_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions effects and retry behavior but does not explicitly guide when to use create vs update or other alternatives. It provides some context but lacks explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_templates_getGet an email templateARead-onlyIdempotentInspect
Returns a reusable email template linked to the authenticated workspace. Permission: email_templates:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | The email template identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about workspace scoping ('linked to the authenticated workspace') and permission requirement, which provides additional behavioral insight well beyond the annotations. However, it does not detail error handling 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no unnecessary words. It front-loads the core functionality and includes permission and reference link, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context signals indicate output schema exists) and annotations that cover safety, the description is nearly complete for a simple GET operation. It includes workspace context, permission, and API reference. Minor omission: no mention of error cases or rate limits, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, with the single parameter template_id already described in the input schema. The description does not add any additional meaning or context for the parameter beyond what the schema provides, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a reusable email template, using a specific verb ('Returns') and resource ('email template'). It implicitly distinguishes from sibling tools like email_templates_list (listing) and email_templates_create (creating) by focusing on retrieval of a single template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission (email_templates:read) and links to API reference, providing some context. However, it does not explicitly state when to use this tool versus alternatives (e.g., email_templates_list) or exclude any scenarios. The usage guidance is implied but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_templates_listList email templatesARead-onlyIdempotentInspect
Returns reusable email templates linked to the authenticated workspace. Permission: email_templates:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| search | No | Filter email templates by name. | |
| starting_after | No | Opaque cursor returned by the previous page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read-only behavior. The description adds permission scope and pagination details, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences covering purpose, permissions, and pagination. No redundant information; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, the description sufficiently covers purpose, permissions, and pagination. Lacks a brief note on response structure but is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions; description does not add new parameter meaning beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns email templates for the authenticated workspace. It uses a specific verb ('Returns') and specifies the resource, but does not explicitly differentiate from sibling tools like 'email_templates_get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides pagination guidance and permission requirement, but lacks explicit guidance on when to use this tool versus alternatives (e.g., get a single template).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_templates_previewPreview an email template for a SubscriberARead-onlyIdempotentInspect
Renders one template using a saved Subscriber's name, email, and custom fields without sending or saving anything. Permissions: subscribers:read, email_templates:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| template_id | Yes | The email template identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by stating 'without sending or saving anything' and listing required permissions, reinforcing the read-only, preview nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a reference link. The purpose and behavior are front-loaded in the first sentence. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters and an output schema. The description covers purpose, effect (no save/send), and permissions. It is complete given the complexity and existing structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds minor context about using subscriber fields for personalization but doesn't provide new information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'renders' and the resource 'one template using a saved Subscriber', distinguishing it from sending or saving. Sibling tools include email_templates_get/list/create/update, so the preview function is unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (preview with subscriber data) and lists required permissions. It does not explicitly state when not to use or name alternatives, but the context of sibling tools implies it's for previewing, not sending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_templates_updateUpdate an email templateADestructiveIdempotentInspect
Updates the content or enabled state of an existing email template. Effect: workspace-change. Retry after reading the current resource state. Permission: email_templates:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| template_id | Yes | The email template identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by disclosing 'Effect: workspace-change' and the required permission 'email_templates:write'. It also advises to 'Retry after reading the current resource state', which aligns with the idempotentHint. The description does not contradict the annotations; it enriches understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: five short sentences covering purpose, effect, retry guidance, permission, and a reference link. No unnecessary words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested input schema) and the presence of an output schema, the description adequately covers key aspects: what is updated, safety advice (retry after read), and permission requirements. It does not explain partial update semantics, but this is partially covered by the schema's minProperties constraint. Overall, it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all parameters. The description adds minor context by stating that it updates 'content or enabled state', which maps to body_document and enabled fields. However, it does not significantly enhance understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Updates the content or enabled state of an existing email template', which clearly identifies the verb and resource. It distinguishes from sibling tools like create, get, list, and preview by specifying that it is an update operation, but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage guidance, such as 'Retry after reading the current resource state', which implies idempotent retry. However, it does not explicitly state when to use this tool versus alternatives like email_templates_create or email_templates_get, leaving the context implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
segments_getGet a segmentARead-onlyIdempotentInspect
Returns one saved segment from the authenticated workspace. Permission: segments:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| segment_id | Yes | The identifier of the segment to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds context by specifying the required permission, which is a behavioral requirement not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The purpose is front-loaded in the first sentence, and additional information (permission, reference) is in the second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with a complete output schema and full schema description coverage, the description is sufficient. It includes permission requirements and an API link, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter (segment_id) with a clear description. The description does not add additional parameter meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Returns' and resource 'saved segment' with clear scope 'from the authenticated workspace'. It distinguishes from siblings like 'segments_list' and 'segments_preview'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the required permission 'segments:read' and provides an API reference link. While it doesn't explicitly say when not to use this tool, the context is clear for retrieving a single segment by ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
segments_listList segmentsARead-onlyIdempotentInspect
Returns saved segments from the authenticated workspace. Permission: segments:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of segments to return. | |
| search | No | Filter Segments by name or description. | |
| starting_after | No | The opaque cursor from the previous page of saved segments. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations, such as the required permission ('segments:read') and pagination behavior ('use bounded pages and returned cursors'). Annotations already mark the tool as read-only and idempotent, so the description complements these nicely without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three sentences. It front-loads the purpose, then adds permission and pagination details, and ends with an API reference link. Every sentence serves a purpose with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three parameters and an output schema, the description covers the core aspects: what it returns, required permission, and pagination. It could mention that results are paginated with opaque cursors, but the schema already covers 'starting_after'. The presence of an output schema reduces the need to explain return values. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the description does not need to add much. The description mentions pagination but does not elaborate on individual parameters (e.g., 'search', 'starting_after'). The schema already provides adequate semantics, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns saved segments from the authenticated workspace. It uses a specific verb ('returns') and resource ('saved segments'), and distinguishes itself from sibling tools like segments_get (which retrieves a single segment) by implying a list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required permission ('segments:read') and provides pagination guidance. However, it does not explicitly state when to use this tool over alternatives (e.g., segments_get for a single segment) or when not to use it. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
segments_previewPreview a segment definitionARead-onlyIdempotentInspect
Returns subscriber counts for an unsaved segment definition. Include current_segment_id when previewing edits to an existing segment so circular segment references are rejected before saving. Permission: segments:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds specific return value (subscriber counts) and behavior (rejecting circular references). No contradiction, adds useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Includes permission and API reference efficiently. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with rich schema and output schema present, description covers all needed context: purpose, parameter usage, permissions, and API reference. Sibling tools are differentiated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (only body parameter fully defined). Description adds usage guidance for current_segment_id sub-field, clarifying its role in edits. Adds slight value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Returns subscriber counts for an unsaved segment definition' with specific verb+resource. Distinguishes from siblings like segments_get (saved segment) and segments_list by focusing on unsaved definition preview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on including current_segment_id for edits to avoid circular references. Mentions required permission (segments:read). Could be improved by stating when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sender_identities_getGet a sender identityARead-onlyIdempotentInspect
Returns one enabled sender name, address, and provider type by stable identifier. Provider credentials and configuration are never returned. Permission: workspace:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sender_identity_id | Yes | The sender identity identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the exact fields returned and explicitly stating that provider credentials and configuration are never returned. This complements the readOnlyHint, idempotentHint, and destructiveHint annotations by detailing the data exposure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, each providing distinct information: what the tool does, what it does not return, and permission/API reference. It is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description satisfactorily covers the tool's purpose, limitations, and permission. It omits potential error cases or prerequisites, but for a simple get operation, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the description adds minimal additional meaning beyond the schema. The phrase 'by stable identifier' is already implied in the parameter description. The baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns one enabled sender identity by stable identifier, listing the specific fields returned (name, address, provider type) and explicitly noting what is not returned (credentials and configuration). This distinguishes it from the sibling tool 'sender_identities_list', which presumably returns multiple identities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a specific sender identity is needed by identifier, but it does not explicitly state when not to use it or mention alternatives like 'sender_identities_list'. It provides clear context for its single-item retrieval purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sender_identities_listList sender identitiesARead-onlyIdempotentInspect
Returns a bounded page of enabled sender names, addresses, and provider types that can be selected for Broadcasts and Sequences. Provider credentials and configuration are never returned. Permission: workspace:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sender identities to return. | |
| starting_after | No | Opaque next_cursor returned by the previous sender identity page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds that provider credentials and configuration are never returned, and clarifies pagination uses bounded pages and cursors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, behavioral disclosure, and permission/reference link. No fluff, front-loaded with key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters, annotations, and presence of an output schema, the description covers pagination, safety, and field exclusions completely. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds 'bounded pages' context but does not significantly enhance parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a bounded page of sender identities with specific fields (names, addresses, provider types) that can be used for Broadcasts and Sequences, distinguishing it from the sibling get tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for selecting sender identities in Broadcasts/Sequences and mentions permission and pagination, but does not explicitly contrast with alternatives like sender_identities_get or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_createCreate a sequenceBInspect
Creates a sequence in the authenticated workspace. Effect: workspace-change. Retry with the same idempotency_key. Permission: sequences:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description suggests idempotency by stating 'Retry with the same idempotency_key,' but annotation idempotentHint=false contradicts this. No other behavioral details beyond effect and permission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief and front-loaded with purpose and key metadata. The API reference URL adds minimal value but does not hamper conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has high complexity (nested objects) and output schema, but description is minimal. Does not explain sequence concept or return values, though output schema mitigates this. Contradiction reduces trust.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). Description adds no parameter-specific meaning beyond what the schema already provides. The schema descriptions for body and idempotency_key are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Creates a sequence in the authenticated workspace,' specifying a concrete verb and resource. Among sibling tools (get, list, update, etc.), this uniquely identifies the creation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides effect ('workspace-change'), idempotency key retry guidance, and required permission ('sequences:write'). Lacks explicit when-to-use vs alternatives, but implicit from sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_getGet a sequenceBRead-onlyIdempotentInspect
Returns one sequence from the authenticated workspace. Permission: sequences:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | The sequence identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds permission info and confirms the read operation, but does not disclose further behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each serving a clear purpose: stating the function and providing permission/API reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and an output schema, the description is sufficient. It could mention that the authenticated workspace context is implied, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for sequence_id. The description adds no additional parameter semantics, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns one sequence from the authenticated workspace. It is specific enough but does not explicitly differentiate from siblings like sequences_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as sequences_list for multiple sequences or sequences_create for creation. The permission note helps but is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_listList sequencesARead-onlyIdempotentInspect
Returns sequences in the authenticated workspace. Permission: sequences:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sequences to return. | |
| search | No | Filter sequences by name, status, or sender details. Retrieve a known Sequence ID through the item endpoint. | |
| starting_after | No | Use the opaque cursor from the previous page to request the next page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds pagination behavior and permission requirement, enhancing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently cover purpose, permission, and pagination. No fluff, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With complete schema and output schema, description covers key aspects (permission, pagination). Could include note on filtering but schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for all parameters. Description does not add significant parameter semantics beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title 'List sequences' and description 'Returns sequences in the authenticated workspace' clearly state the verb and resource. Distinct from sibling tools like sequences_get or sequences_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions required permission 'sequences:read' and pagination usage. However, it doesn't explicitly state when not to use or compare with other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_preflightCheck sequence readinessARead-onlyIdempotentInspect
Checks the saved Sequence, its published emails, and its email delivery connection without changing data or sending email. Permission: sequences:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | The Sequence identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and destructiveHint=false. The description adds that it checks published emails and delivery connection without sending email or changing data, which aligns with and supplements the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey purpose, permission, and reference. The API reference line is slightly extraneous but not excessive. The key information is upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input and presence of an output schema, the description covers the tool's purpose, non-destructive nature, and scope. It lacks sibling differentiation but is otherwise adequate for a preflight check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'sequence_id' with a description. The tool description does not add additional meaning beyond implying the parameter is the target sequence. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it checks the saved Sequence, its published emails, and email delivery connection without changing data or sending email. The verb 'Checks' and resource 'saved Sequence' are specific, and the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is read-only and requires permission 'sequences:read', but it does not provide explicit guidance on when to use this tool versus other preflight tools (e.g., automations_preflight, broadcasts_preflight) or alternatives like sequences_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_preview_journeyPreview a sequence journeyARead-onlyIdempotentInspect
Returns the bounded saved email timeline and shows which messages a selected Subscriber is eligible to receive, without enrolling the Subscriber or sending email. Permissions: subscribers:read, sequences:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | The Sequence identifier. | |
| subscriber_id | Yes | The saved Subscriber whose personalization and targeting should be previewed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by detailing the non-destructive, idempotent nature ('without enrolling or sending email') and specifying permissions. It does not contradict annotations and provides behavioral context (returns timeline, eligibility).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: main action, permissions, API reference. It is front-loaded with essential information, no fluff, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, full schema description, and an output schema, the description provides sufficient context for a preview tool. It explains the read-only preview behavior and permissions, covering completeness without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description does not add extra parameter details beyond the schema, but it is not needed. Description mentions 'selected Subscriber' and 'personalization and targeting' which adds minimal extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the bounded saved email timeline and shows eligible messages without enrolling, using specific verbs ('returns', 'shows') and resource ('timeline', 'messages'). This distinguishes it from siblings like sequences_preflight or sequences_send_test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for previewing without enrollment, but does not explicitly compare to sibling tools like sequences_preflight or sequences_send_test. No when-not-to-use or alternative names are provided, leaving guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_send_testSend sequence test messagesADestructiveInspect
Sends up to five selected saved Sequence emails to one explicit test address. This does not enroll a Subscriber, start the Sequence, or write delivery activity. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, subscribers:read, sequences:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| sequence_id | Yes | The Sequence identifier. | |
| idempotency_key | No | Optional idempotency key to make retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, and the description adds context about external email effects, permissions, and idempotency, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the main action, and includes necessary caveats without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations provided, the description covers purpose, limitations, permissions, and API reference, making it complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minor clarification about 'up to five' and 'explicit test address' but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool sends up to five saved Sequence emails to a test address, clearly distinguishing it from siblings like automations_send_test and other sequence actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies what the tool does not do (enroll, start, write delivery) and advises retrying with idempotency_key, but does not explicitly compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_updateUpdate a sequenceADestructiveIdempotentInspect
Updates an existing sequence. Effect: workspace-change. Retry after reading the current resource state. Permission: sequences:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| sequence_id | Yes | The sequence identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds useful behavioral context: 'Effect: workspace-change,' the retry guidance, and the permission requirement. However, it does not elaborate on what exactly is destroyed or how updates affect existing data, relying partly on annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: two sentences plus a few additional nuggets (effect, retry, permission, API reference). Every element serves a purpose, and the core action is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a rich input schema and output schema present, the description covers purpose, effect, retry guidance, permission, and reference. It could mention prerequisite actions (e.g., fetching the current sequence first) but the retry hint implies that. Overall, it is fairly complete for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema already documenting both parameters. The description does not add extra meaning beyond what the schema provides (e.g., 'The sequence identifier' and 'The exact JSON request body'). With high coverage, the baseline is 3, and the description does not compensate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Updates an existing sequence,' specifying both the action and resource. It distinguishes from sibling tools like sequences_create (creation) and sequences_update_status (status change) by focusing on general update. The addition of 'Effect: workspace-change' further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for usage: 'Retry after reading the current resource state' suggests a read-before-update pattern. It also lists required permission ('sequences:write') and an API reference link. While it doesn't explicitly contrast with alternatives (e.g., when to use create vs update), the purpose statement implies the tool is for modifying existing sequences, which is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequences_update_statusActivate or pause a sequenceADestructiveIdempotentInspect
Starts or pauses one Sequence without changing its content or delivery settings. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, sequences:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| sequence_id | Yes | The Sequence identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds key behavioral traits: effect on external email, required permissions, and retry advice. Annotations already declare destructive and idempotent hints, and the description complements them without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four concise sentences, each adding unique value: purpose, effect, retry advice, and permissions. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description sufficiently covers purpose, effect, permissions, and a usage hint. It does not mention prerequisites beyond permissions but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the schema. The description does not add new meaning beyond what the schema provides, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Starts or pauses one Sequence without changing its content or delivery settings', providing a specific verb and resource and differentiating from sibling tools that modify content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'without changing its content or delivery settings', implying alternative tools for content changes, and advises to 'Retry after reading the current resource state' for safe usage. However, it does not name alternative tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_add_tagAdd a Tag to a SubscriberADestructiveIdempotentInspect
Adds the selected Tag to a Subscriber. If the Subscriber already has the Tag, the API returns the Subscriber unchanged. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | The Tag identifier. | |
| subscriber_id | Yes | The Subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=true), the description adds the effect 'external-email', retry guidance, and required permissions. This provides actionable behavioral context not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, covering purpose, idempotency, effect, retry guidance, permissions, and a link. It is efficient but could be slightly more concise by omitting the API link or combining sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but flagged), the description covers idempotency, effect, retry guidance, and permissions. It is complete enough for a simple two-parameter tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters well. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and resource ('Tag to a Subscriber'), clearly distinguishing this from sibling tools like 'subscribers_remove_tag'. The idempotency note further clarifies the exact behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description states what the tool does and its idempotent nature, it does not explicitly state when to use it over alternatives (e.g., when not to use it or prerequisites). The sibling tool 'subscribers_remove_tag' provides contrast, but usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_add_to_sequenceAdd a subscriber to a sequenceADestructiveIdempotentInspect
Adds the selected subscriber to the selected sequence. If the subscriber is already in the sequence, the API returns the subscriber unchanged. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | The sequence identifier. | |
| subscriber_id | Yes | The subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: idempotency, 'Effect: external-email', retry advice, and permissions. Annotations already indicate idempotentHint=true, so this adds value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded with the main action. Includes extra context but without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-param tool with good annotations and an output schema, the description covers idempotency, effect, retry, and permissions. A reference to API docs further enhances completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description restates parameters without adding new semantic information, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Adds' and the resources 'subscriber' and 'sequence', and indicates idempotent behavior, distinguishing it from sibling tools like 'subscribers_remove_from_sequence'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides retry guidance and permissions, but lacks explicit when-to-use or when-not-to-use instructions beyond the idempotency hint. It is clear in context of siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_getGet a subscriberARead-onlyIdempotentInspect
Returns one Subscriber by its stable identifier from the authenticated workspace. Permission: subscribers:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| subscriber_id | Yes | The Subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds permission requirement ('subscribers:read') which is useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, all essential information included. No fluff. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool (single parameter, no nested objects, output schema present), description covers purpose, permission, and reference. Fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter with description 'The Subscriber identifier.' Description does not add additional semantics like format or example. Baseline score due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns one subscriber by stable identifier from authenticated workspace. Use of 'one' and 'stable identifier' distinguishes from list or update tools. Permission and API reference add specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for fetching a single known subscriber, but does not explicitly state when not to use or mention alternatives like subscribers_list. Still provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_listList subscribersARead-onlyIdempotentInspect
Returns subscribers in the authenticated workspace, sorted from newest to oldest. Permission: subscribers:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Filter subscribers by an exact subscriber email address. | ||
| limit | No | Maximum number of subscribers to return. Defaults to 25 and is capped at 100. | |
| search | No | Filter subscribers by name, email, or status. | |
| status | No | Filter subscribers by subscriber status. | |
| tag_id | No | Return subscribers that currently have this tag ID. Repeat `tag_id` or use `tag_ids` to match any of several tags. | |
| tag_ids | No | Comma-separated tag IDs. By default, the API returns subscribers who have any listed tag. | |
| cold_only | No | When `true`, return only cold subscribers. | |
| sequence_id | No | Return subscribers that match this sequence ID. Repeat `sequence_id` or use `sequence_ids` to match any of several sequences. | |
| sequence_ids | No | Comma-separated sequence IDs. By default, the API returns only subscribers who are active in any listed sequence. | |
| tag_operator | No | Controls how tag filters are applied. Defaults to `has_any_of`. | has_any_of |
| starting_after | No | Use the opaque cursor from the previous page to request the next page. | |
| sequence_operator | No | Controls how sequence filters are applied. Defaults to `is_active_in_any_of`. | is_active_in_any_of |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent behavior. The description adds valuable behavioral context: sorting order (newest to oldest), pagination via cursors, and permission requirement. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three sentences covering purpose, permission, and pagination. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. It covers purpose, scope, sorting, pagination, and permissions. Could mention that it returns a list, but the output schema likely handles that. Adequate completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any parameter-specific guidance beyond the schema, but also does not detract. It passes the burden to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns subscribers in the authenticated workspace, sorted from newest to oldest. It uses a specific verb 'Returns' and specifies the resource 'subscribers', distinguishing it from single-subscriber retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required permission ('subscribers:read') and pagination instructions, but does not explicitly guide when to use this tool versus alternatives like subscribers_get or other filter tools. Guidance is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_remove_from_sequenceRemove a subscriber from a sequenceADestructiveIdempotentInspect
Removes the selected subscriber from the selected sequence. If the subscriber is not in the sequence, the API returns the subscriber unchanged. Effect: subscriber-change. Retry after reading the current resource state. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | The sequence identifier. | |
| subscriber_id | Yes | The subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=true, idempotentHint=true. Description adds useful context: 'Effect: subscriber-change', permissions (live_actions:write, subscribers:write), and an API reference link. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four sentences, front-loaded with the primary action. Additional info (effect, retry, permissions, link) is relevant and non-redundant. Could be slightly more concise but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown but flagged), so return value details are not required in description. Behavioral aspects (idempotency, effect, retry) are covered. No mention of error handling or rate limits, but sufficient for a focused mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with clear descriptions for both parameters (sequence_id, subscriber_id). The description adds no new information about their meaning or format beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Removes the selected subscriber from the selected sequence', using specific verb and resource. It distinguishes from sibling tools like subscribers_add_to_sequence by focusing on removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (to remove a subscriber from a sequence) and what happens if the subscriber is absent (idempotent return). Provides retry guidance: 'Retry after reading the current resource state.' Does not explicitly list alternatives, but sibling context implies them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_remove_tagRemove a tag from a subscriberADestructiveIdempotentInspect
Removes the selected tag from a subscriber. If the subscriber does not have the tag, the API returns the subscriber unchanged. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | The tag identifier. | |
| subscriber_id | Yes | The subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations: idempotency (no change if tag missing), effect (external-email), retry guidance, permissions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences: core action, edge case, effect+retry, permissions+reference. Front-loaded, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple removal operation. Edge case, idempotency, effect, permissions, and output schema present. All necessary details provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions for both parameters. Description does not add further semantic detail beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title and description clearly state the action (remove tag from subscriber). Description covers edge case (subscriber without tag) and distinguishes from sibling 'subscribers_add_tag'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from sibling tools and description mentions retry advice and permissions. Does not explicitly state when not to use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_updateUpdate a subscriberADestructiveIdempotentInspect
Updates profile fields, status, custom fields, tags, or sequence assignments for one subscriber. Fields omitted from the request stay unchanged. Blank optional custom field values also leave saved values unchanged, and filled-in invalid values are rejected. Effect: subscriber-change. Retry after reading the current resource state. Permission: subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| subscriber_id | Yes | The subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds behavior on omitted fields, blank values, and rejection of invalid values, which is helpful. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with the main action first. However, it contains seven sentences, some of which are redundant (e.g., effect and retry advice). Could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While annotations and output schema exist, the description covers permissions, effects, and idempotency. However, the inaccurate claim about tags/sequences creates a completeness gap. It adequately describes behavior but lacks clarity on those unsupported parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the description claims the tool updates tags and sequence assignments, which are not present in the input schema. This is misleading. The description does add meaning for custom field behavior, but the inaccuracy reduces usefulness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates profile fields, status, custom fields, tags, or sequence assignments for a single subscriber. This distinguishes it from sibling tools that focus on one specific action (e.g., subscribers_add_tag, subscribers_update_status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that omitted fields remain unchanged and blank optional custom field values are kept, which guides usage. It also mentions retrying after reading current resource state. However, it does not explicitly contrast with dedicated tag/sequence tools, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_update_statusChange Subscriber sending eligibilityADestructiveIdempotentInspect
Changes the delivery status for one Subscriber without changing profile, targeting, or Sequence enrollment fields. Effect: external-email. Retry after reading the current resource state. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| subscriber_id | Yes | The Subscriber identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds value by detailing that profile, targeting, and sequence fields are unchanged, mentions the 'external-email' effect, and provides retry guidance. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only four sentences, each serving a distinct purpose: action scope, effect, retry guidance, and permissions/reference. Front-loaded with the most important information, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks explanation of the consent_evidence parameter's role when setting status to 'Active', and 'Effect: external-email' is vague. However, the output schema exists and annotations provide openWorldHint, partially mitigating the gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds meaningful context by contrasting what this tool does not change, which indirectly clarifies the status parameter's role. It does not replicate schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Changes the delivery status for one Subscriber' using a specific verb and resource. It distinguishes from sibling tools like subscribers_update by specifying that it does not change profile, targeting, or Sequence enrollment fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this only for delivery status changes, not for other updates. It also gives retry guidance and required permissions. However, it does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribers_upsertCreate or upsert a subscriberADestructiveInspect
Creates a new subscriber when the email does not exist in the workspace. If the email already exists, the API updates the existing subscriber unless create_only is true. Effect: external-email. Retry with the same idempotency_key. Permissions: live_actions:write, subscribers:write. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The exact JSON request body defined by the Mailrith public API contract. | |
| idempotency_key | No | Optional idempotency key to retry the request safely. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructivity (destructiveHint=true) and non-read-only. The description adds valuable behavioral context: effect 'external-email', required permissions, idempotency retry guidance, and upsert logic. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (4 sentences) and front-loaded with core purpose. Each sentence contributes unique info: create vs update logic, create_only exception, effect, idempotency, permissions, and reference link. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested object, consent evidence), the description covers essential behavioral aspects (upsert logic, permissions, idempotency). It does not discuss return values or error scenarios, but output schema exists to clarify that. Slight omission of conflict status codes is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions, so baseline is 3. The description adds meaning by contextualizing the create_only parameter and mentioning idempotency_key, but does not significantly enhance understanding of other parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool creates a new subscriber or updates an existing one based on email existence. It distinguishes from sibling tools (e.g., subscribers_update only updates, subscribers_get lists) by covering both create and update in one action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (email missing or present) and mentions the create_only flag to prevent updates. It also covers idempotency key usage for safe retries. However, it does not explicitly state when not to use or direct to alternatives like subscribers_update for pure updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_getGet a tagARead-onlyIdempotentInspect
Returns one Tag from the authenticated workspace. Permission: tags:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | The Tag identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful permission context ('Permission: tags:read') and an API reference link, adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, permission, and reference. Front-loaded with the core purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, output schema present), the description sufficiently covers purpose, permission, and reference without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the single parameter 'tag_id'. The description does not add additional parameter-specific meaning, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns', the resource 'Tag', and the scope 'from the authenticated workspace'. It differentiates from the sibling 'tags_list' which lists tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a specific tag by ID is needed, but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_listList tagsARead-onlyIdempotentInspect
Returns tags in the authenticated workspace. Permission: tags:read. Pagination: use bounded pages and returned cursors. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tags to return. | |
| search | No | Filter Tags by name or description. Retrieve a known Tag ID through the item endpoint. | |
| starting_after | No | Use the opaque cursor from the previous page to request the next page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. Description adds valuable behavioral details: pagination method (bounded pages and cursors) and permission requirement, which are not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, permissions/pagination, API reference. No fluff, front-loaded with core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers purpose, auth, and pagination adequately. Could mention search behavior but still sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage describing all three parameters (limit, search, starting_after). Description adds no new meaning beyond what schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns tags in the authenticated workspace', which is a specific verb and resource, and distinguishes from sibling tool 'tags_get' for single tag retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description includes required permission (tags:read) and pagination instructions, but does not explicitly state when to use versus alternatives like tags_get. However, the context of listing vs single retrieval is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_getGet the current workspaceARead-onlyIdempotentInspect
Returns the authenticated workspace profile and mailing context used by broadcasts, sequences, automations, forms, and magic links. Permission: workspace:read. API reference: https://mailrith.com/developers/api-reference.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| response | No | |
| request_id | Yes | The stable correlation ID for this MCP tool invocation. |
| operation_id | Yes | The stable Mailrith public API operation ID. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating safe, idempotent read operation. The description adds value by explaining what the returned data includes (workspace profile and mailing context used by various features) and the required permission, which goes beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence states the core functionality, and the second adds permission and reference. Every sentence serves a purpose with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered. The description provides additional context by explaining what the workspace profile is used for (broadcasts, sequences, etc.), making the purpose clear. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description adds no parameter information because none is needed. For a tool with zero parameters, the baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns the authenticated workspace profile and mailing context, using a specific verb ('Returns') and resource ('workspace profile'). It distinguishes from sibling tools by specifying the scope (current workspace) and the types of features that use this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for use: retrieving workspace profile and mailing context. It mentions the required permission ('workspace:read') and an API reference link. While it does not explicitly state when not to use it, the tool's simple nature and lack of parameters make the usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
AlicenseAqualityCmaintenanceEnables management of AI-powered email marketing automation, including subscriber segments, campaigns, and templates. It allows users to generate email sequences with AI and track detailed analytics through natural language commands.Last updated1002,2972MIT- Alicense-qualityBmaintenanceFull email marketing platform for AI assistants — 32 MCP tools for campaigns, contacts, automations, A/B testing, AI content, multi-channel messaging, deliverability monitoring, and analytics.Last updated387MIT
- Alicense-qualityCmaintenanceAI-native email marketing platform built for agents. Control campaigns, automations, contacts, templates, and analytics via MCP with OAuth authentication.Last updated512MIT
- Alicense-qualityCmaintenanceEnables AI agents to manage email newsletters and contacts via Resend, including sending broadcasts to segments, managing subscribers in bulk, scheduling campaigns, and tracking delivery status using human-friendly identifiers.Last updated10,3315MIT
Your Connectors
Sign in to create a connector for this server.