Skip to main content
Glama

Slander MCP

An MCP server that finds humorous roasts, jokes, and memes about any character (real or fictional) by searching Twitter/X. Uses social proof (engagement metrics) to rank content, with targeted LLM involvement for query generation, batch quality assessment, and nickname extraction.

Installation

npm install
npm run build

Related MCP server: twitter-voice-mcp

Configuration

Create a .env file with:

# Twitter/X API credentials (required)
TWITTER_BEARER_TOKEN=your_twitter_bearer_token_here

# LLM API key (at least one required)
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# or
OPENAI_API_KEY=your_openai_api_key_here

Usage with Claude Desktop

Add to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "slander": {
      "command": "node",
      "args": ["/path/to/slander_mcp/dist/index.js"],
      "env": {
        "TWITTER_BEARER_TOKEN": "your_token",
        "ANTHROPIC_API_KEY": "your_key"
      }
    }
  }
}

Tools

generate_search_query

Generate effective Twitter search queries for finding slander about a target.

Input:

  • target (string, required): Name of character to search for

Output:

  • queries: Array of search query strings

Example:

Input:  { "target": "LeBron James" }
Output: { "queries": ["LeBron James ratio", "LeChoke", "LeBron hairline", ...] }

fetch_posts

Fetch posts from Twitter for a given query, looping until quality threshold is met.

Input:

  • query (string, required): Search query

  • loop_limit (number, optional): Max fetch iterations (default: 5)

  • count (number, optional): Posts per fetch (default: 10)

  • target (string, optional): Target name for quality evaluation

Output:

  • posts: Array of post objects with engagement metrics

  • iterations: Number of fetch loops

  • stopped_reason: "quality_threshold" or "loop_limit"

rank_posts

Rank fetched posts by engagement, separate text from media, extract nicknames.

Input:

  • posts (array, required): Posts from fetch_posts

  • top_n (number, optional): Results per category (default: 3)

  • target (string, optional): Target name for nickname extraction

Output:

  • text_posts: Top text posts ranked by engagement

  • media_posts: Top media posts ranked by engagement

  • nicknames: Extracted nicknames/slang for the target

Engagement Score Formula:

score = (likes * 1.0) + (retweets * 2.0) + (replies * 0.5)

Example Workflow

  1. Generate search queries:

    generate_search_query({ target: "LeBron James" })
  2. Fetch posts for each query:

    fetch_posts({ query: "LeChoke", target: "LeBron James" })
  3. Combine and rank results:

    rank_posts({ posts: [...all_posts], top_n: 5, target: "LeBron James" })

License

MIT

Available Tools

3 tools
fetch_postsA

Fetch posts from Twitter for a given query, looping until quality threshold is met. Uses AI to evaluate batch quality and stops early when sufficient roast content is found. Returns posts with engagement metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSingle search query to find posts
loop_limitNoMax fetch iterations (default: 5, max: 10)
countNoPosts per fetch (default: 10, max: 100)
targetNoTarget name for quality evaluation (optional, improves quality checking)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it involves looping until a quality threshold is met, uses AI for batch quality evaluation, stops early when sufficient content is found, and returns posts with engagement metrics. This covers iterative fetching, quality assessment, and output format, though it lacks details on rate limits or error handling.

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 front-loaded with the core purpose and efficiently details the iterative process, AI evaluation, and return values in three concise sentences. Every sentence earns its place by adding critical behavioral context without redundancy or fluff.

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?

Given the tool's complexity (iterative fetching with AI evaluation), no annotations, and no output schema, the description is largely complete: it explains the purpose, behavior, and output. However, it could improve by detailing error cases or the exact format of 'engagement metrics', leaving minor gaps for a tool with such dynamic behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond the schema, such as explaining how 'target' relates to 'quality evaluation' or the interplay between 'loop_limit' and 'count'. Baseline 3 is appropriate as the schema does the heavy lifting without extra value from the description.

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 specific action ('fetch posts from Twitter'), identifies the resource ('posts'), and distinguishes from siblings by mentioning AI evaluation for quality threshold and roast content, which neither 'generate_search_query' nor 'rank_posts' imply. It goes beyond a basic fetch operation with its iterative quality-checking behavior.

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 provides clear context for when to use this tool: for fetching Twitter posts with iterative quality evaluation until a threshold is met, specifically for finding 'roast content.' However, it does not explicitly state when not to use it or name alternatives like 'rank_posts' for post-processing or 'generate_search_query' for query creation, missing explicit exclusions.

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

generate_search_queryC

Generate effective Twitter search queries for finding slander, roasts, jokes, and memes about a target character (real or fictional). Uses AI to produce creative, context-aware queries that capture character-specific slander.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesName of character to search for (e.g., 'LeBron James', 'Darth Vader')

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'Uses AI to produce creative, context-aware queries,' which adds some context about the method. However, it doesn't disclose other behavioral traits such as rate limits, error handling, or what the output looks like (e.g., format, examples). For a tool with zero annotation coverage, this leaves significant gaps in understanding its operation.

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

Conciseness4/5

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

The description is appropriately sized with two sentences that efficiently convey the tool's purpose and method. It's front-loaded with the main function and avoids unnecessary details. However, it could be slightly more structured by explicitly separating usage guidelines or output expectations, but overall, it's concise with minimal waste.

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 tool's moderate complexity (AI-driven query generation) and lack of annotations and output schema, the description is somewhat complete but has gaps. It explains what the tool does and how it works (using AI), but doesn't cover output format or behavioral aspects like limitations. For a tool with no structured output information, more detail on expected results would improve completeness.

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?

The input schema has 100% description coverage, with the 'target' parameter well-documented as 'Name of character to search for (e.g., 'LeBron James', 'Darth Vader').' The description adds minimal value beyond this, mentioning 'target character' but not providing additional syntax or format details. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Generate effective Twitter search queries for finding slander, roasts, jokes, and memes about a target character.' It specifies the verb ('generate'), resource ('Twitter search queries'), and scope ('slander, roasts, jokes, and memes about a target character'). However, it doesn't explicitly differentiate from sibling tools like 'fetch_posts' or 'rank_posts', which likely handle different aspects of content retrieval or ranking.

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 mentions the tool's function but doesn't specify prerequisites, exclusions, or compare it to sibling tools like 'fetch_posts' or 'rank_posts'. There's implied usage for creating search queries, but no explicit when/when-not instructions or alternatives are stated.

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

rank_postsA

Rank fetched posts by engagement, separate text from media posts, and extract nicknames. Uses engagement formula: (likes * 1.0) + (retweets * 2.0) + (replies * 0.5). Retweets weighted highest because sharing is strong signal for humor.

ParametersJSON Schema
NameRequiredDescriptionDefault
postsYesPosts from fetch_posts (can combine multiple fetches)
top_nNoResults per category (default: 3, max: 20)
targetNoTarget name for nickname extraction (required for nicknames)

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: the specific engagement formula with weighted components (likes*1.0 + retweets*2.0 + replies*0.5), the rationale for weighting ('retweets weighted highest because sharing is strong signal for humor'), and the separation logic (text vs media posts). However, it doesn't mention output format or potential limitations.

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 efficiently structured in two sentences: the first states the core functions, the second explains the engagement formula with rationale. Every element serves a purpose with zero wasted words, making it easy to parse and understand quickly.

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 no annotations and no output schema, the description provides substantial context about the ranking algorithm and processing logic. It covers the core transformation behavior well but doesn't describe the output format or structure, leaving some ambiguity about what the tool returns. Given the complexity, it's mostly complete but has one notable gap.

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%, providing good parameter documentation. The description adds some value by mentioning 'posts from fetch_posts' and implying the target parameter is for nickname extraction, but doesn't significantly enhance parameter understanding beyond what the schema already provides. Baseline 3 is appropriate 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?

The description clearly states the tool's purpose with specific verbs: 'rank fetched posts by engagement', 'separate text from media posts', and 'extract nicknames'. It distinguishes from sibling tools by specifying it operates on posts from fetch_posts rather than fetching or generating queries itself.

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 usage context by mentioning 'posts from fetch_posts' and 'required for nicknames' in the schema, but doesn't explicitly state when to use this tool versus alternatives. It suggests a workflow (use after fetch_posts) but lacks explicit guidance on when-not scenarios or comparisons with sibling tools.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose in the slander-finding workflow: generate_search_query creates queries, fetch_posts retrieves posts based on those queries, and rank_posts processes and ranks the fetched posts. There is no overlap or ambiguity between their functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (fetch_posts, generate_search_query, rank_posts) with clear, descriptive verbs that align with their actions. No deviations or mixed conventions are present.

Tool Count4/5

Three tools is a minimal but reasonable count for this server's purpose of finding and ranking slander content. It covers the core workflow (query generation, fetching, ranking) without being overly sparse, though a few additional tools (e.g., for filtering or exporting) could enhance completeness.

Completeness4/5

The tool set covers the essential steps for slander discovery: generating queries, fetching posts, and ranking them. Minor gaps exist, such as lacking tools for saving results or refining searches, but agents can work around these with the provided tools to achieve the server's goal.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that analyzes your unique Twitter voice to generate, manage, and post AI-powered tweets and quote tweet drafts. It supports multiple AI providers and provides tools for draft management, voice profiling, and automated content creation from images.
  • F
    license
    A
    quality
    Not graded
    maintenance
    An MCP server that integrates X (Twitter) API access with Grok-powered intelligence for real-time social media analysis and account management. It provides tools for reading and writing tweets, managing direct messages, and generating AI-powered topic summaries or daily briefings.
    23
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for interacting with the Twitter/X API v2, enabling AI assistants to retrieve tweets, post content, reply, quote, and more programmatically.
    2,013
    13
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ebop14/slander_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server