Content Distribution… vs Email Spam Tester | AllMCPs
Side-by-Side Model Context Protocol Comparison
Content Distribution MCP vs Email Spam Tester
In-depth architectural comparison of the Content Distribution MCP and Email Spam Tester MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Content Distribution MCP
Communication · Local stdio
Quality: 60/100 (Good) | Auth: API Key required
Email Spam Tester
Communication · Remote HTTP/SSE
Quality: 82/100 (Excellent) | Auth: No auth required
Verdict Summary: Choose Content Distribution MCP if you need specialized Communication tools running via a local process. Choose Email Spam Tester if your workspace requires Communication integration with remote web transport. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Content Distribution MCP when:
You need dedicated capabilities in the Communication domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: API Key required (Free / Open Source).
Publish one piece of content to DEV.to, Hashnode, GitHub Discussions, Reddit, Bluesky, LinkedIn, Medium and Twitter with idempotent state and per-platform adaptation.
Email deliverability testing for agents. Four tools: get a disposable test address, wait for the report once the message arrives, read it, and fetch the raw source. The report has 42 checks (SPF, DKIM, DMARC, 21 blocklists, two spam engines, Gmail and Yahoo bulk sender rules), each linked to its RFC, plus a fix plan. Remote endpoint, no API key.
Tools & Capabilities Breakdown
Content Distribution MCP Tools (8)
post_publish
Publish one or more channel variants immediately. Side effects: makes external HTTP requests to each channel platform; writes publish state to the local YAML backend; requires valid credentials in the named profile. Idempotent on (content.id, channel) — re-running with the same IDs returns cached state without re-posting. Use post_publish for immediate-only delivery; use post_schedule when any variant needs a future schedule_at; use post_drain to flush a previously built queue.
post_schedule
Enqueue channel variants with schedule_at for future publishing; variants without schedule_at are published immediately. Side effects: writes entries to the local YAML schedule store; makes external HTTP requests for any immediately-published variants; requires credentials in the named profile. Idempotent on (content.id, channel). Use post_schedule when any variant needs a future publish time; use post_publish for all-immediate delivery; use post_drain to process the scheduled queue later.
post_drain
Fire all scheduled posts due at or before the given time boundary. Side effects: makes external HTTP requests for each due entry; writes results to the YAML backend. Idempotent — already-published (content.id, channel) pairs are skipped; no-op when no entries are due. Safe to call from cron. Use post_drain on a recurring schedule to flush the queue; use post_publish or post_schedule to add new content; use post_status to inspect results after drain runs.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Content Distribution MCP is categorized under Communication and uses a local stdio subprocess. In contrast, Email Spam Tester belongs to Communication using remote streaming HTTP/SSE transport. Select Content Distribution MCP when you need capabilities focused on communication and Email Spam Tester when you require tools for communication.
Return publish state for content pieces. Filters by content_id, channel, or both; returns all entries when neither is given. Side effects: read-only; no external HTTP calls; no auth needed. Deterministic given unchanged backend state. Use post_status to inspect what has been published, what is queued, or what errored; use post_publish, post_schedule, or post_drain to change state.
post_unpublish
Best-effort delete of a published post on the target platform. Side effects: makes an external HTTP DELETE or update request; DEV.to sets published=false (soft delete); platforms without a delete API return success=false without error. Non-idempotent — calling on an already-deleted URL may return a platform 404. Use post_unpublish to retract a live post; use post_status first to obtain the live_url; use post_publish to re-publish after an unpublish.
channel_hints
Return static per-channel metadata: character limits, Markdown support flags, tag vocabulary, and CTA placement rules. Side effects: read-only; no external HTTP calls; no auth needed. Fully deterministic — returns compile-time adapter constants. Use channel_hints before composing a variant body to understand channel constraints; use post_publish or post_schedule once you have a valid variant.
profile_list
Return all distribution profile names configured in the YAML backend. Side effects: read-only; no external HTTP calls. Deterministic given backend state. Use profile_list to discover available profiles before calling post_publish, post_schedule, or subreddit_list; then pass the chosen name as profile_name.
subreddit_list
Return all subreddits in the Subreddit Catalog with cooldown windows, flair vocabulary, and last-posted metadata. Optionally filtered to subreddits allowed by the named profile. Side effects: read-only; no external HTTP calls. Deterministic given backend state. Use subreddit_list to select a subreddit and obtain flair IDs before composing a reddit: channel variant; pass flair in variant.extras.flair.
Email Spam Tester Tools (4)
get_test_address
Reserve a single-use address to send a draft email to, for a full check.
Returns the address and the URL its report will appear at. The address
accepts exactly one message and expires after an hour. The email has to be
sent by the person, from the platform or mailbox they really send from:
half the checks read what that platform adds. The report covers 42 checks
(SPF, DKIM, DMARC, reverse DNS, TLS, blocklists, content, links, the
Gmail and Yahoo bulk-sender rules) and a plan of what to fix.
lang is decided now because the message arrives minutes later over SMTP,
which carries no hint of who is waiting for it. What wait_for_report
returns quotes check lines in English whatever it is set to; the person
following report_url sees their own language.
wait_for_report
Wait until the message arrives and has been analysed, then summarise it.
Call it after the email has been sent to the address from
get_test_address. Blocks rather than returning "not ready yet": an agent
told to poll writes a sleep loop and usually gives up before the analysis
finishes. Provider placement keeps filling in for up to 30 minutes after
the report; get_report reads the latest.
get_report
Read a report by its slug without waiting, with provider placement so far.
Works for one-hour tests and for letters in the person's series mailboxes.
get_message_source
The message exactly as it was received: headers, both bodies, source.
Useful when a finding points at a header and the agent needs to see what it
actually sent rather than what it believes it sent, or to find the
confirmation link in a welcome letter.