Skip to content

Spook SEO

by tryspook.com · remote · no sign-in to list tools · v1.0.0 · published by com.tryspook

Free SEO tools + the Spook SEO autopilot: analyze domains, generate and publish SEO articles.

Final · 1Changes · 47

59 tools: 1 do something that can't be undone, 47 change things and 11 only read.

Scanned Oct 21, 2026

8 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http spook https://www.tryspook.com/api/mcp

Findings

Matches of fixed checks, with the text they matched.

7 warn1 info
  • The server marks "meta-tag-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "hreflang-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "canonical-tag-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "llms-txt-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "ai-prompt-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "ad-copy-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "ad-copy-generator" says "copy": a word for a change.

    What this check looks for
Show 2 more findings
  • The server marks "social-post-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "social-post-generator" says "post": a word for a change.

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...et publishIntegration to 'nextjs' for a credential-free Spook-hosted blog (returns a blog..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

59 tools

Can't be undone 1Claude Code: ask
  • publish_articlePublish a generated article to the site's connected CMS.No findings

    Why it is in this group

    • The name "publish_article" says "publish": a word for a change that another call does not undo.
    Description, as the server wrote it
    Publish a generated article to the site's connected CMS. Enforces Spook's SEO-score floor - a draft below it is refused (returns published:false with a reason). (requires an agent API key)

    Annotations the server declares

    • title: Publish Article
    • readOnlyHint: false
    • destructiveHint: false
Changes things 47Claude Code: ask
  • ad-copy-generatorAd Copy Generator: Generate ad headlines and descriptions.1 finding

    Why it is in this group

    • The name "ad-copy-generator" says "copy": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "ad-copy-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "ad-copy-generator" says "copy": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Ad Copy Generator: Generate ad headlines and descriptions. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Ad Copy Generator
    • readOnlyHint: true
  • aeo-checkerScore content (0-100) for how easily AI answer engines (ChatGPT, Perplexity, AI Overviews) can quote it, with specific fixes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score content (0-100) for how easily AI answer engines (ChatGPT, Perplexity, AI Overviews) can quote it, with specific fixes.

    Annotations the server declares

    • title: AEO Content Checker (Answer Engine Optimization)
    • readOnlyHint: true
  • ai-crawler-checkerCheck a robots.txt to see which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, ...) it currently allows or blocks.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check a robots.txt to see which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, ...) it currently allows or blocks.

    Annotations the server declares

    • title: AI Crawler Access Checker
    • readOnlyHint: true
  • ai-prompt-generatorGenerate prompts to test whether ChatGPT/Perplexity/Gemini/Claude recommend a brand, and where it's invisible.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "ai-prompt-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate prompts to test whether ChatGPT/Perplexity/Gemini/Claude recommend a brand, and where it's invisible.

    Annotations the server declares

    • title: AI Brand Visibility Prompt Generator
    • readOnlyHint: true
  • article-rewriterAI Article Rewriter: Rephrase text to be clearer, unique, and engaging.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AI Article Rewriter: Rephrase text to be clearer, unique, and engaging. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: AI Article Rewriter
    • readOnlyHint: true
  • article-summarizerAI Article Summarizer: Condense an article into a TL;DR, key points, and summary.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AI Article Summarizer: Condense an article into a TL;DR, key points, and summary. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: AI Article Summarizer
    • readOnlyHint: true
  • blog-keyword-generatorBlog Keyword Generator: Generate SEO keyword ideas for a topic, with search intent and difficulty.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Blog Keyword Generator: Generate SEO keyword ideas for a topic, with search intent and difficulty. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Blog Keyword Generator
    • readOnlyHint: true
  • blog-outline-generatorBlog Outline Generator: Produce a structured, SEO-friendly blog post outline.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Blog Outline Generator: Produce a structured, SEO-friendly blog post outline. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Blog Outline Generator
    • readOnlyHint: true
  • business-name-generatorBusiness Name Generator: Generate brandable business name ideas.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Business Name Generator: Generate brandable business name ideas. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Business Name Generator
    • readOnlyHint: true
  • canonical-tag-generatorGenerate a rel=canonical link tag for a URL.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "canonical-tag-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a rel=canonical link tag for a URL.

    Annotations the server declares

    • title: Canonical Tag Generator
    • readOnlyHint: true
  • content-brief-generatorContent Brief Generator: Create a detailed SEO content brief for a target keyword.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Content Brief Generator: Create a detailed SEO content brief for a target keyword. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Content Brief Generator
    • readOnlyHint: true
  • content-coverage-checkerContent Coverage Checker: List the terms and entities an article targeting a keyword is expected to cover.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Content Coverage Checker: List the terms and entities an article targeting a keyword is expected to cover. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Content Coverage Checker
    • readOnlyHint: true
  • content-idea-generatorContent Idea Generator: Generate content ideas with formats and angles for a niche.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Content Idea Generator: Generate content ideas with formats and angles for a niche. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Content Idea Generator
    • readOnlyHint: true
  • conversion-rate-calculatorCalculate Conversion rate.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate Conversion rate.

    Annotations the server declares

    • title: Conversion Rate Calculator
    • readOnlyHint: true
  • cpc-calculatorCalculate Cost per click (CPC).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate Cost per click (CPC).

    Annotations the server declares

    • title: CPC Calculator
    • readOnlyHint: true
  • cpm-calculatorCalculate Cost per 1,000 impressions (CPM).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate Cost per 1,000 impressions (CPM).

    Annotations the server declares

    • title: CPM Calculator
    • readOnlyHint: true
  • create_checkoutGet a Stripe Checkout URL to add the first paid site to the account.No findings

    Why it is in this group

    • The name "create_checkout" says "create": a word for a change.
    Description, as the server wrote it
    Get a Stripe Checkout URL to add the first paid site to the account. Return the URL to the user to approve payment. Needed before create_site if the account has no available slot. (requires an agent API key)

    Annotations the server declares

    • title: Create Checkout
    • readOnlyHint: false
    • destructiveHint: false
  • create_siteAdd a new site to the account.No findings

    Why it is in this group

    • The name "create_site" says "create": a word for a change.
    Description, as the server wrote it
    Add a new site to the account. Language/market is auto-detected from the homepage. Requires an available paid site slot (use create_checkout first if none). Returns the new siteId. (requires an agent API key)

    Annotations the server declares

    • title: Create Site
    • readOnlyHint: false
    • destructiveHint: false
  • cta-generatorCTA Generator: Write effective call-to-action phrases.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    CTA Generator: Write effective call-to-action phrases. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: CTA Generator
    • readOnlyHint: true
  • ctr-calculatorCalculate Click-through rate.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate Click-through rate.

    Annotations the server declares

    • title: CTR Calculator
    • readOnlyHint: true
  • faq-generatorFAQ Generator: Generate a set of frequently asked questions and answers for a topic.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    FAQ Generator: Generate a set of frequently asked questions and answers for a topic. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: FAQ Generator
    • readOnlyHint: true
  • generate_articleGenerate a new SEO article draft for a site targeting a search query.No findings

    Why it is in this group

    • The name "generate_article" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a new SEO article draft for a site targeting a search query. Returns an articleId immediately; generation runs in the background - poll get_article/list_articles, or pass callbackUrl to be notified. Idempotent per query (a repeat returns the existing article). Requires an active subscription. (requires an agent API key)

    Annotations the server declares

    • title: Generate Article
    • readOnlyHint: false
    • destructiveHint: false
  • grammar-checkerAI Grammar Checker: Fix grammar, spelling, and punctuation, and list the corrections.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    AI Grammar Checker: Fix grammar, spelling, and punctuation, and list the corrections. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: AI Grammar Checker
    • readOnlyHint: true
  • hashtag-generatorHashtag Generator: Generate relevant hashtags for a topic and platform.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Hashtag Generator: Generate relevant hashtags for a topic and platform. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Hashtag Generator
    • readOnlyHint: true
  • headline-analyzerScore a headline (0-100) on length, word balance, power/emotional words, numbers, and brackets.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score a headline (0-100) on length, word balance, power/emotional words, numbers, and brackets.

    Annotations the server declares

    • title: Blog Headline Analyzer
    • readOnlyHint: true
  • headline-generatorHeadline Generator: Generate catchy, click-worthy headlines.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Headline Generator: Generate catchy, click-worthy headlines. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Headline Generator
    • readOnlyHint: true
  • hreflang-generatorGenerate hreflang link tags for international/multilingual pages, plus an optional x-default.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "hreflang-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate hreflang link tags for international/multilingual pages, plus an optional x-default.

    Annotations the server declares

    • title: Hreflang Tag Generator
    • readOnlyHint: true
  • llms-txt-generatorGenerate an llms.txt file from a site name, one-line summary, optional details, and sections of links.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "llms-txt-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate an llms.txt file from a site name, one-line summary, optional details, and sections of links.

    Annotations the server declares

    • title: llms.txt Generator
    • readOnlyHint: true
  • meta-description-generatorMeta Description Generator: Write SEO meta descriptions that maximize click-through rate.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Meta Description Generator: Write SEO meta descriptions that maximize click-through rate. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Meta Description Generator
    • readOnlyHint: true
  • meta-robots-generatorBuild a meta robots tag (and X-Robots-Tag header) from index/follow and snippet directives.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Build a meta robots tag (and X-Robots-Tag header) from index/follow and snippet directives.

    Annotations the server declares

    • title: Meta Robots Tag Generator
    • readOnlyHint: true
  • meta-tag-generatorGenerate a complete set of HTML meta tags: title, description, canonical, Open Graph, and Twitter Cards.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "meta-tag-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a complete set of HTML meta tags: title, description, canonical, Open Graph, and Twitter Cards.

    Annotations the server declares

    • title: Meta Tag Generator
    • readOnlyHint: true
  • paragraph-generatorParagraph Generator: Expand a topic or sentence into a well-written paragraph.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Paragraph Generator: Expand a topic or sentence into a well-written paragraph. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Paragraph Generator
    • readOnlyHint: true
  • product-description-generatorProduct Description Generator: Write persuasive product descriptions.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Product Description Generator: Write persuasive product descriptions. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Product Description Generator
    • readOnlyHint: true
  • readability-checkerScore text readability with Flesch Reading Ease and Flesch-Kincaid Grade, plus a reading level.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score text readability with Flesch Reading Ease and Flesch-Kincaid Grade, plus a reading level.

    Annotations the server declares

    • title: Readability Score Checker
    • readOnlyHint: true
  • roas-calculatorCalculate ROAS, ROAS (percentage).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate ROAS, ROAS (percentage).

    Annotations the server declares

    • title: ROAS Calculator
    • readOnlyHint: true
  • robots-txt-generatorBuild a valid robots.txt: allow or block crawlers, disallow paths, block specific bots, and link a sitemap.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Build a valid robots.txt: allow or block crawlers, disallow paths, block specific bots, and link a sitemap.

    Annotations the server declares

    • title: Robots.txt Generator
    • readOnlyHint: true
  • robots-txt-testerTest whether a robots.txt allows or blocks a given URL path for a given user-agent.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Test whether a robots.txt allows or blocks a given URL path for a given user-agent.

    Annotations the server declares

    • title: Robots.txt Tester
    • readOnlyHint: true
  • schema-generatorBuild valid JSON-LD structured data (FAQ, Article, Organization, or Product) for rich results.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Build valid JSON-LD structured data (FAQ, Article, Organization, or Product) for rich results.

    Annotations the server declares

    • title: Schema Markup Generator (JSON-LD)
    • readOnlyHint: true
  • seo-title-generatorSEO Title Generator: Write catchy, SEO-friendly title tags for a topic.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    SEO Title Generator: Write catchy, SEO-friendly title tags for a topic. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: SEO Title Generator
    • readOnlyHint: true
  • set_autopilotTurn a site's autopilot on or off.No findings

    Why it is in this group

    • The name "set_autopilot" says "set": a word for a change.
    Description, as the server wrote it
    Turn a site's autopilot on or off. When on, Spook plans, writes, and publishes articles automatically. (requires an agent API key)

    Annotations the server declares

    • title: Set Autopilot
    • readOnlyHint: false
    • destructiveHint: false
  • sitemap-generatorBuild an XML sitemap from a list of URLs, with an optional lastmod date.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Build an XML sitemap from a list of URLs, with an optional lastmod date.

    Annotations the server declares

    • title: XML Sitemap Generator
    • readOnlyHint: true
  • slug-generatorTurn a title into a clean, SEO-friendly URL slug: lowercase, hyphenated, accent-safe, optional stopword removal.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Turn a title into a clean, SEO-friendly URL slug: lowercase, hyphenated, accent-safe, optional stopword removal.

    Annotations the server declares

    • title: URL Slug Generator
    • readOnlyHint: true
  • social-post-generatorSocial Media Post Generator: Write platform-specific social media posts.1 finding

    Why it is in this group

    • The name "social-post-generator" says "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "social-post-generator" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "social-post-generator" says "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Social Media Post Generator: Write platform-specific social media posts. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Social Media Post Generator
    • readOnlyHint: true
  • subject-line-generatorEmail Subject Line Generator: Write high-converting email subject lines.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Email Subject Line Generator: Write high-converting email subject lines. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: Email Subject Line Generator
    • readOnlyHint: true
  • update_publishingConfigure where a site publishes.1 finding

    Why it is in this group

    • The name "update_publishing" says "update": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...et publishIntegration to 'nextjs' for a credential-free Spook-hosted blog (returns a blog..."

      What this check looks for
    Description, as the server wrote it
    Configure where a site publishes. Set publishIntegration to 'nextjs' for a credential-free Spook-hosted blog (returns a blog API key), or 'webhook' with publishWebhookUrl. publishMode 'draft' or 'live'. (requires an agent API key)

    Annotations the server declares

    • title: Update Publishing
    • readOnlyHint: false
    • destructiveHint: false
  • utm-builderAppend UTM tracking parameters (source, medium, campaign, term, content) to a destination URL.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Append UTM tracking parameters (source, medium, campaign, term, content) to a destination URL.

    Annotations the server declares

    • title: UTM Campaign URL Builder
    • readOnlyHint: true
  • youtube-title-generatorYouTube Title & Description Generator: Write a YouTube title, description, and tags for a video topic.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    YouTube Title & Description Generator: Write a YouTube title, description, and tags for a video topic. (free, AI-generated, rate-limited).

    Annotations the server declares

    • title: YouTube Title & Description Generator
    • readOnlyHint: true
Only reads 11Claude Code: allow
  • analyze_domainFree, no-signup SEO snapshot for any domain: the queries it already ranks on page 1-2 for (its quick-win opportunities), with search volume and estimated traffic.No findings

    Why it is in this group

    • The name "analyze_domain" says "analyze": a word for reading.
    Description, as the server wrote it
    Free, no-signup SEO snapshot for any domain: the queries it already ranks on page 1-2 for (its quick-win opportunities), with search volume and estimated traffic. Great first look before signing up.

    Annotations the server declares

    • title: Analyze Domain
    • readOnlyHint: true
  • character-counterCount characters (with and without spaces), words, sentences, and paragraphs in text.No findings

    Why it is in this group

    • The description's first verb is "count": a word for reading.
    Description, as the server wrote it
    Count characters (with and without spaces), words, sentences, and paragraphs in text.

    Annotations the server declares

    • title: Character Counter
    • readOnlyHint: true
  • get_articleFetch one article by id: full markdown body, meta, FAQs, SEO score, status, and published URL.No findings

    Why it is in this group

    • The name "get_article" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one article by id: full markdown body, meta, FAQs, SEO score, status, and published URL. Use to review a draft before publishing. (requires an agent API key)

    Annotations the server declares

    • title: Get Article
    • readOnlyHint: true
  • get_siteGet one site's details and status by its id.No findings

    Why it is in this group

    • The name "get_site" says "get": a word for reading.
    Description, as the server wrote it
    Get one site's details and status by its id. (requires an agent API key)

    Annotations the server declares

    • title: Get Site
    • readOnlyHint: true
  • get_site_metricsRead a site's performance: daily Search Console clicks/impressions trend plus cached SEO metrics (domain rating, organic traffic estimate, top keywords).No findings

    Why it is in this group

    • The name "get_site_metrics" says "get": a word for reading.
    Description, as the server wrote it
    Read a site's performance: daily Search Console clicks/impressions trend plus cached SEO metrics (domain rating, organic traffic estimate, top keywords). No cost. Use to check whether Spook is working. (requires an agent API key)

    Annotations the server declares

    • title: Get Site Metrics
    • readOnlyHint: true
  • keyword-density-checkerAnalyze text for the most frequent words and phrases with their density, to spot keyword stuffing or thin coverage.No findings

    Why it is in this group

    • The description's first verb is "analyze": a word for reading.
    Description, as the server wrote it
    Analyze text for the most frequent words and phrases with their density, to spot keyword stuffing or thin coverage.

    Annotations the server declares

    • title: Keyword Density Checker
    • readOnlyHint: true
  • list_articlesRecent articles for a site with their status (draft/review/published) and generation status.No findings

    Why it is in this group

    • The name "list_articles" says "list": a word for reading.
    Description, as the server wrote it
    Recent articles for a site with their status (draft/review/published) and generation status. (requires an agent API key)

    Annotations the server declares

    • title: List Articles
    • readOnlyHint: true
  • list_opportunitiesThe winnable search queries Spook has found for a site (scored, ranked).No findings

    Why it is in this group

    • The name "list_opportunities" says "list": a word for reading.
    Description, as the server wrote it
    The winnable search queries Spook has found for a site (scored, ranked). No cost. Pass questionsOnly to get only question-shaped queries. (requires an agent API key)

    Annotations the server declares

    • title: List Opportunities
    • readOnlyHint: true
  • list_sitesList the Spook sites on the account this API key belongs to, with each site's id, domain, autopilot state, and publishing setup.No findings

    Why it is in this group

    • The name "list_sites" says "list": a word for reading.
    Description, as the server wrote it
    List the Spook sites on the account this API key belongs to, with each site's id, domain, autopilot state, and publishing setup. (requires an agent API key)

    Annotations the server declares

    • title: List Sites
    • readOnlyHint: true
  • serp-previewPreview how a page's title and meta description render in Google search, with pixel-width truncation for desktop and mobile.No findings

    Why it is in this group

    • The name "serp-preview" says "preview": a word for reading.
    Description, as the server wrote it
    Preview how a page's title and meta description render in Google search, with pixel-width truncation for desktop and mobile.

    Annotations the server declares

    • title: Google SERP Snippet Preview
    • readOnlyHint: true
  • word-counterCount words, characters, sentences, and paragraphs in text, plus reading and speaking time.No findings

    Why it is in this group

    • The description's first verb is "count": a word for reading.
    Description, as the server wrote it
    Count words, characters, sentences, and paragraphs in text, plus reading and speaking time.

    Annotations the server declares

    • title: Word & Character Counter
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http spook https://www.tryspook.com/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__spook__serp-preview",
      "mcp__spook__word-counter",
      "mcp__spook__character-counter",
      "mcp__spook__keyword-density-checker",
      "mcp__spook__analyze_domain",
      "mcp__spook__list_sites",
      "mcp__spook__get_site",
      "mcp__spook__list_opportunities",
      "mcp__spook__list_articles",
      "mcp__spook__get_article",
      "mcp__spook__get_site_metrics"
    ],
    "ask": [
      "mcp__spook__meta-tag-generator",
      "mcp__spook__schema-generator",
      "mcp__spook__robots-txt-generator",
      "mcp__spook__readability-checker",
      "mcp__spook__hreflang-generator",
      "mcp__spook__canonical-tag-generator",
      "mcp__spook__meta-robots-generator",
      "mcp__spook__sitemap-generator",
      "mcp__spook__robots-txt-tester",
      "mcp__spook__headline-analyzer",
      "mcp__spook__slug-generator",
      "mcp__spook__utm-builder",
      "mcp__spook__ctr-calculator",
      "mcp__spook__conversion-rate-calculator",
      "mcp__spook__roas-calculator",
      "mcp__spook__cpm-calculator",
      "mcp__spook__cpc-calculator",
      "mcp__spook__ai-crawler-checker",
      "mcp__spook__aeo-checker",
      "mcp__spook__llms-txt-generator",
      "mcp__spook__ai-prompt-generator",
      "mcp__spook__generate_article",
      "mcp__spook__create_site",
      "mcp__spook__update_publishing",
      "mcp__spook__create_checkout",
      "mcp__spook__publish_article",
      "mcp__spook__set_autopilot",
      "mcp__spook__blog-keyword-generator",
      "mcp__spook__content-brief-generator",
      "mcp__spook__blog-outline-generator",
      "mcp__spook__content-idea-generator",
      "mcp__spook__seo-title-generator",
      "mcp__spook__meta-description-generator",
      "mcp__spook__headline-generator",
      "mcp__spook__subject-line-generator",
      "mcp__spook__cta-generator",
      "mcp__spook__ad-copy-generator",
      "mcp__spook__social-post-generator",
      "mcp__spook__article-summarizer",
      "mcp__spook__article-rewriter",
      "mcp__spook__grammar-checker",
      "mcp__spook__faq-generator",
      "mcp__spook__product-description-generator",
      "mcp__spook__business-name-generator",
      "mcp__spook__youtube-title-generator",
      "mcp__spook__paragraph-generator",
      "mcp__spook__content-coverage-checker",
      "mcp__spook__hashtag-generator"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as spook. Review it before you use it.