Skip to main content
Glama
WYRE-AI

spamtitan-mcp

by WYRE-AI

SpamTitan MCP Server

License Node.js

A Model Context Protocol (MCP) server for SpamTitan email security. Enables AI assistants to manage quarantine, maintain allowlists and blocklists, and view email filtering statistics.

This is a Model Context Protocol (MCP) server that connects Claude (or any MCP-compatible AI) to your SpamTitan environment.

Part of the MSP Claude Plugins ecosystem — a growing suite of AI integrations for the MSP stack. Built by MSPs, for MSPs.

Installation

npm install @wyre-ai/spamtitan-mcp

Related MCP server: knowbe4-mcp

Configuration

Set the following environment variables:

Variable

Required

Description

SPAMTITAN_API_KEY

Yes

Your SpamTitan API key

SPAMTITAN_BASE_URL

No

Your SpamTitan instance URL, including any path prefix (e.g. https://mail.example.com/spamtitan/). Defaults to https://api-spamtitan.titanhq.com.

MCP_TRANSPORT

No

Transport mode: stdio (default) or http

Usage

Running with Claude Desktop

Add to your Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "spamtitan-mcp": {
      "command": "npx",
      "args": ["@wyre-ai/spamtitan-mcp"],
      "env": {
        "SPAMTITAN_API_KEY": "your-spamtitan-api-key"
      }
    }
  }
}

Running with Claude Code (CLI)

claude mcp add spamtitan-mcp \
  -e SPAMTITAN_API_KEY=your-value \
  -- npx -y @wyre-ai/spamtitan-mcp

Docker

docker build -t spamtitan-mcp .
docker run \
  -e SPAMTITAN_API_KEY=your-value \
  -p 8080:8080 spamtitan-mcp

Available Domains

Lists

Manage allowlists and blocklists

Quarantine

Email quarantine review and management

Stats

Email filtering statistics and reports

Features

  • Interactive quarantined-message card (MCP Apps, SEP-1865)spamtitan_get_message renders as a read-only interactive card in MCP Apps hosts (Claude Desktop/web); plain-JSON behavior is unchanged in other hosts. The card is neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL, MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG, MCP_BRAND_TEXT) — no rebuild needed. Rebuild the card bundle with npm run build:ui after editing ui/.

Development

# Clone the repository
git clone https://github.com/WYRE-AI/spamtitan-mcp.git
cd spamtitan-mcp

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Contributing

Contributions are welcome! Please see CONTRIBUTING.md if present, or open an issue to discuss changes.

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

Available Tools

9 tools
spamtitan_delete_messageA
Destructive

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently delete a quarantined message by ID. This action cannot be undone and will remove the message from quarantine storage. Confirm with the user before invoking.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesThe quarantined message ID to delete

TDQS

A4.3/5.0
Behavior4/5

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

Description adds value beyond annotations: explicitly labels action as 'DESTRUCTIVE — IRREVERSIBLE', states permanence, and confirms removal from quarantine storage. Annotations already have destructiveHint=true, so the description reinforces and adds confirmation requirement 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.

Conciseness5/5

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

Extremely concise: two short sentences plus an emoji warning. Critical information (destructiveness, permanence, confirmation requirement) front-loaded. No unnecessary words.

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

Completeness5/5

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

For a simple destructive tool with one parameter and no output schema, the description covers all necessary context: action, resource, irreversibility, and user confirmation. Sibling tools provide alternative actions, but the description is sufficient for this tool.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'message_id', so the description does not need to explain parameters. The description does not repeat or enhance parameter meaning, which is adequate given high schema coverage.

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

Purpose5/5

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

Tool name 'spamtitan_delete_message' combined with description 'Permanently delete a quarantined message by ID' clearly specifies verb (delete) and resource (quarantined message). Distinguishes from siblings like 'spamtitan_release_message' which implies a different action.

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

Usage Guidelines4/5

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

Description includes explicit instruction to 'Confirm with the user before invoking', providing usage context. However, it does not explicitly state when not to use or mention alternative tools, but the warning implies cautious invocation.

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

spamtitan_get_messageA

Get a single quarantined message by ID. Returns sender, recipient, subject, quarantine reason, spam score, and status. Renders as an interactive card in MCP Apps hosts.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesThe quarantined message ID to fetch

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the disclosure burden. It communicates the return payload (sender, recipient, subject, reason, spam score, status) and adds an unexpected behavioral detail about rendering as an interactive card in MCP Apps hosts. It stops short of stating read-only nature explicitly or handling for invalid/not-found IDs, but the 'Get' verb and output-focused language make the behavior reasonably clear.

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

Conciseness5/5

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

The description is compact and well-structured: the action is front-loaded, the return fields are listed in a natural sequence, and the rendering note is appended without redundancy. Every sentence adds distinct information and no filler is present.

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

Completeness4/5

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

For a single-parameter read tool with no output schema, the description adequately covers what the tool does and what it returns. It does not mention error cases or how to obtain a message_id, but these are minor gaps given the simplicity of the operation and the strong parameter coverage.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter 'message_id' is already documented as 'The quarantined message ID to fetch'. The tool description reiterates 'by ID' but adds no additional semantic detail such as ID format, source, or validation constraints, so the schema already carries the necessary meaning.

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

Purpose5/5

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

The description uses a specific verb ('Get') with a clear resource ('a single quarantined message by ID') and enumerates the returned fields. This explicitly distinguishes it from sibling tools like spamtitan_get_queue (list) and mutation tools like spamtitan_release_message or spamtitan_delete_message.

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

Usage Guidelines3/5

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

The description implies the tool should be used when a specific quarantined message ID is known and its details are needed, but it does not explicitly state when to prefer this over alternatives such as spamtitan_get_queue. There is no exclusion guidance or when-not-to-use condition.

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

spamtitan_get_queueA

List the email quarantine queue. Returns quarantined messages with sender, recipient, subject, and reason for quarantine.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1)
reasonNoFilter by quarantine reason (e.g. spam, virus, policy)
senderNoFilter by sender email address
subjectNoFilter by subject (partial match)
per_pageNoNumber of results per page (default: 50, max: 200)
recipientNoFilter by recipient email address

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It does state what is returned (quarantined messages with sender, recipient, subject, and reason) and implies a non-mutating list operation, but it does not mention permissions, rate limits, or any side effects beyond listing.

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

Conciseness5/5

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

Two sentences with no filler. The action and resource are front-loaded, and the return-value summary is concise but informative. The description earns its place without redundancy.

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

Completeness4/5

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

For a simple list tool with zero required parameters and fully documented schema, the description plus schema covers what the agent needs: return fields, optional filters, and pagination defaults. The only notable gap is the absence of explicit guidance about preferring sibling tools for message-level actions, keeping it just below top-tier.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented with their defaults, filters, and constraints. The description adds only marginal context about the output including 'reason for quarantine,' which maps to the reason filter, but it does not need to compensate for schema gaps.

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

Purpose5/5

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

The description opens with the action verb 'List' and a specific resource, 'the email quarantine queue,' then names the returned fields: sender, recipient, subject, and reason. This clearly distinguishes it from siblings like spamtitan_get_message, spamtitan_release_message, and spamtitan_delete_message.

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

Usage Guidelines3/5

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

The verb 'List' implies this is the browsing/listing tool, so the basic usage context is clear. However, the description does not explicitly say when not to use it or point to spamtitan_get_message for individual message details and release/delete for actions, so alternative routing is left to inference.

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

spamtitan_get_statsA

Get email flow statistics from SpamTitan including messages received, blocked, quarantined, and delivered. Supports filtering by time period.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoFilter statistics for a specific domain (optional)
periodNoTime period for statistics (default: today)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It does not state whether the operation is read-only, any authentication or authorization requirements, rate limits, or error handling for invalid domains. The description covers statistics categories and filtering but omits important behavioral context.

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

Conciseness5/5

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

The description is two sentences, front-loading the main purpose and key details in the first sentence, with additional filtering context in the second. Every phrase adds value without redundancy.

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

Completeness4/5

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

For a tool with two parameters and no output schema, the description covers the essential purpose, statistics categories, and filtering options. It could mention the return format (e.g., aggregated counts) to enhance completeness, but overall it provides adequate context.

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

Parameters4/5

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

The input schema already describes both parameters with 100% coverage. The description adds value by listing the types of statistics returned (received, blocked, quarantined, delivered) and reinforcing the filtering capability, which goes beyond the schema's basic parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool retrieves email flow statistics from SpamTitan, listing specific metrics (received, blocked, quarantined, delivered) and indicating time period filtering. This distinguishes it from sibling tools, which handle deletion, queue, allow/block lists, etc.

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

Usage Guidelines3/5

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

The description implies use for fetching statistics but does not explicitly state when to use it over alternatives or provide exclusions. It lacks guidance on scenarios where other tools might be more appropriate.

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

spamtitan_manage_allowlistA

Add or remove sender allowlist entries in SpamTitan. Allowlisted senders always bypass spam filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note explaining why this entry was added (for add action)
actionYesAction to perform: 'add' to allowlist a sender, 'remove' to remove one, 'list' to view all entries
senderNoSender email address or domain to add/remove (e.g. user@example.com or @example.com). Required for add/remove actions.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only states basic function and effect, but omits details like idempotency, duplicate handling, removal matching, permissions, or output format on 'list'.

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

Conciseness5/5

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

Two sentences with clear structure: first states action and resource, second explains consequence. No unnecessary words.

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

Completeness4/5

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

Tool is simple with 3 params, 1 required, enum for action. Description covers purpose and effect. Lacks info on 'list' output format but overall adequate for a straightforward management tool.

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

Parameters3/5

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

Schema coverage is 100%, so schema fully describes parameters. Description adds context about the overall effect (bypass filtering) but no additional parameter-specific meaning.

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

Purpose5/5

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

Description clearly states the tool manages allowlist entries (add/remove) in SpamTitan and explains the effect (bypass spam filtering). It distinguishes from sibling spamtitan_manage_blocklist by specifying allowlist.

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

Usage Guidelines3/5

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

Implied usage from name and sibling tools, but no explicit guidance on when to use vs blocklist, no prerequisites or exclusions. Schema enum covers actions but description lacks context.

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

spamtitan_manage_blocklistA
DestructiveIdempotent

⚠ HIGH-IMPACT. Add or remove sender blocklist entries in SpamTitan. Modifies email delivery policy and affects deliverability for users. Blocklisted senders are always rejected or quarantined. Reversible by removing entries. Confirm with the user before invoking.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note explaining why this entry was added (for add action)
actionYesAction to perform: 'add' to blocklist a sender, 'remove' to remove one, 'list' to view all entries
senderNoSender email address or domain to add/remove (e.g. spammer@evil.com or @evil.com). Required for add/remove actions.

TDQS

A4.4/5.0
Behavior5/5

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

Description adds behavioral context beyond annotations, such as 'modifies email delivery policy', 'affects deliverability', and 'reversible by removing entries'. Consistent with destructiveHint=true and idempotentHint=true.

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

Conciseness5/5

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

Very concise: three sentences with front-loaded warning symbol. Every sentence adds essential context without redundancy.

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

Completeness4/5

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

Covers impact, reversibility, and confirmation need. However, lacks description of output for 'list' action, which could be inferred but not explicit.

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

Parameters3/5

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

Schema coverage is 100%, and main description adds no new parameter-specific details beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool modifies SpamTitan blocklist entries, distinguishing it from the sibling 'manage_allowlist'. The verb 'manage' with 'blocklist' is specific.

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

Usage Guidelines4/5

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

Provides explicit warning about high impact and necessity for user confirmation. Describes consequences (rejection/quarantine) and reversibility. Lacks explicit 'when not to use' or direct alternative mention, 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.

spamtitan_navigateA

Discover available SpamTitan tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to explore: - quarantine: Email quarantine management - list queue, release and delete quarantined messages - lists: Allowlist/blocklist management - manage email filtering rules - stats: Email statistics - view email flow and filtering statistics

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains that this is a read-only discovery aid, states what it returns, and clarifies that it does not gate access to other tools. This is meaningful transparency for a simple navigation tool, though it could mention error handling or output format.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the core purpose and return value; the second adds the crucial 'not a prerequisite' behavioral note. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a simple, single-parameter discovery tool with no output schema and no annotations, this description is complete. It explains what the tool does, what it returns, how the domain parameter selects content, and that it has no operational side effects or prerequisites. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the enum values already provide detailed explanations for each domain. The description adds no new parameter meaning beyond the phrase 'by domain', so the schema is doing the heavy lifting. Baseline 3 is appropriate.

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

Purpose5/5

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

Description states a clear verb ('Discover') and resource ('available SpamTitan tools by domain'), and explains the return value: tool names and descriptions. It also explicitly distinguishes itself from tools that perform actual operations by calling itself a 'help/discovery aid' rather than a prerequisite, separating it from the sibling operation tools.

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

Usage Guidelines4/5

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

The description makes clear when to use it: to explore tools available for a domain. It also provides an important exclusion: it is not a prerequisite and all tools are callable at any time. However, it does not explicitly name alternative tools or provide more detailed guidance on when to prefer this over the actual operation tools.

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

spamtitan_release_messageB

Release a quarantined message by ID, delivering it to the intended recipient.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesThe quarantined message ID to release

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, description must disclose all behavioral traits. It only states the basic action without mentioning side effects (e.g., does it remove the quarantine entry?), failure modes, idempotency, or permissions required.

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

Conciseness5/5

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

Extremely concise single sentence with no unnecessary words. Action verb is front-loaded, making it efficient for quick consumption.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description covers the core functionality but omits important context such as success response, error handling, and prerequisites (e.g., message must be quarantined).

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

Parameters3/5

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

Schema has 100% parameter description coverage, so the description adds no new information about the single parameter beyond what the schema already provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action (release) and the resource (quarantined message) with the outcome (delivery to recipient). It distinguishes itself from sibling tools like delete_message and navigation tools.

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

Usage Guidelines2/5

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

No explicit guidance on when to use release vs. delete or other actions. Sibling tool 'spamtitan_delete_message' is an alternative, but description does not clarify when to choose one over the other.

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

spamtitan_statusB

Show credentials status and available domains

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Show' implies a non-mutating read, but the description does not disclose whether the tool performs authentication, refreshes tokens, queries a live server, or has side effects. Failure modes and permission requirements are also absent.

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

Conciseness5/5

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

The description is a single sentence with no filler. Both key outputs, 'credentials status' and 'available domains', are front-loaded and easy to scan.

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

Completeness3/5

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

Given the empty schema, no annotations, and no output schema, the description is the only contextual source. It names the two outputs but does not define what credentials refer to, what the domain list represents, or how this tool fits into the workflow with siblings. It is minimally usable but leaves meaningful gaps.

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

Parameters4/5

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

The tool has zero parameters, so the empty schema already captures all parameter semantics. The description does not need to explain parameters. This meets the baseline for a parameterless tool.

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

Purpose4/5

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

The description uses the verb 'Show' with a clear resource: 'credentials status and available domains'. This is specific enough to distinguish it from siblings like spamtitan_release_message or spamtitan_manage_allowlist, which clearly perform different actions. However, it does not explicitly differentiate itself from spamtitan_get_stats, which could also be a status-like tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is a pre-flight credential check, whether it should be used before other SpamTitan operations, or when a user would need the domain list. No exclusions or alternative tool routing are provided.

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

Tool Schema Changelog

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

  1. 4 tool updatesv1.3.3
    • Addedspamtitan_get_message
    • Addedspamtitan_get_queue
    • Addedspamtitan_navigate
    • Addedspamtitan_status
  2. 3 tool updatesv1.3.1
    • Removedspamtitan_get_queue
    • Removedspamtitan_navigate
    • Removedspamtitan_status
  3. 8 tool updatesv1.1.2
    • First observedspamtitan_delete_message
    • First observedspamtitan_get_queue
    • First observedspamtitan_get_stats
    • First observedspamtitan_manage_allowlist
    • First observedspamtitan_manage_blocklist
    • First observedspamtitan_navigate
    • First observedspamtitan_release_message
    • First observedspamtitan_status

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource/action: status, discovery, queue listing, message retrieval, release, delete, allowlist management, blocklist management, and stats. The destructive and high-impact tools are clearly separated from safe read operations.

Naming Consistency4/5

The spamtitan_ prefix creates a consistent namespace, and most tools follow verb_noun naming (get_queue, get_message, release_message, delete_message, manage_allowlist, get_stats). spamtitan_status and spamtitan_navigate are minor deviations from that pattern.

Tool Count5/5

Nine tools is well-scoped for a SpamTitan server: quarantine lifecycle, list management, status, stats, and a discovery helper. Each tool earns its place without redundancy or bloat.

Completeness4/5

The quarantine workflow is fully covered with list, get, release, and delete, and allow/block list modifications plus stats are present. Minor gaps include no direct way to view current allowlist/blocklist entries and no search/filter for the queue, but these are workable.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Checkpoint Harmony Email & Collaboration (Avanan). Enables AI assistants to manage email security, anti-phishing, anti-malware, and threat detection via the Avanan API.
    13
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for ThreatLocker — zero-trust application allowlisting, approval requests, audit logs
    1
    -
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for Proofpoint Email Protection - email security, threat intelligence, TAP (Targeted Attack Protection), and email filtering API integration
    40
    3
    Apache 2.0