Spook SEO
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Free SEO tools + the Spook SEO autopilot: analyze domains, generate and publish SEO articles.
| Author | com.tryspook |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 1712 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Spook SEO": {
"url": "https://www.tryspook.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (59)
serp-previewread-onlyPreview how a page's title and meta description render in Google search, with pixel-width truncation for desktop and mobile.
Parameters:
title(required) — string — The page title tag.url— string — The page URL.device— stringdescription— string — The meta description.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
meta-tag-generatorread-onlyGenerate a complete set of HTML meta tags: title, description, canonical, Open Graph, and Twitter Cards.
Parameters:
url— string — Canonical URL.image— string — Social share image URL.title— stringogType— stringtwitter— string — Twitter handle.siteName— stringdescription— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
schema-generatorread-onlyBuild valid JSON-LD structured data (FAQ, Article, Organization, or Product) for rich results.
Parameters:
type(required) — stringfaqs— arrayarticle— objectproduct— objectorganization— object
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
robots-txt-generatorread-onlyBuild a valid robots.txt: allow or block crawlers, disallow paths, block specific bots, and link a sitemap.
Parameters:
mode— stringsitemap— stringdisallow— arraycrawlDelay— numberblockedBots— array
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
word-counterread-onlyCount words, characters, sentences, and paragraphs in text, plus reading and speaking time.
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
character-counterread-onlyCount characters (with and without spaces), words, sentences, and paragraphs in text.
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
readability-checkerread-onlyScore text readability with Flesch Reading Ease and Flesch-Kincaid Grade, plus a reading level.
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
hreflang-generatorread-onlyGenerate hreflang link tags for international/multilingual pages, plus an optional x-default.
Parameters:
rows(required) — arrayxDefault— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
canonical-tag-generatorread-onlyGenerate a rel=canonical link tag for a URL.
Parameters:
url(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
meta-robots-generatorread-onlyBuild a meta robots tag (and X-Robots-Tag header) from index/follow and snippet directives.
Parameters:
index— booleanfollow— booleannoarchive— booleannosnippet— booleanmaxSnippet— stringnoimageindex— booleanmaxImagePreview— stringmaxVideoPreview— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
sitemap-generatorread-onlyBuild an XML sitemap from a list of URLs, with an optional lastmod date.
Parameters:
urls(required) — arraylastmod— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
robots-txt-testerread-onlyTest whether a robots.txt allows or blocks a given URL path for a given user-agent.
Parameters:
robotsTxt(required) — stringurl(required) — stringuserAgent— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
keyword-density-checkerread-onlyAnalyze text for the most frequent words and phrases with their density, to spot keyword stuffing or thin coverage.
Parameters:
text(required) — stringn— integer — Phrase length (n-gram).limit— integerremoveStopwords— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
headline-analyzerread-onlyScore a headline (0-100) on length, word balance, power/emotional words, numbers, and brackets.
Parameters:
headline(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
slug-generatorread-onlyTurn a title into a clean, SEO-friendly URL slug: lowercase, hyphenated, accent-safe, optional stopword removal.
Parameters:
text(required) — stringseparator— stringremoveStopwords— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
utm-builderread-onlyAppend UTM tracking parameters (source, medium, campaign, term, content) to a destination URL.
Parameters:
url(required) — stringsource(required) — stringmedium(required) — stringcampaign(required) — stringterm— stringcontent— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
ctr-calculatorread-onlyCalculate Click-through rate.
Parameters:
clicks(required) — number — Clicksimpressions(required) — number — Impressions
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
conversion-rate-calculatorread-onlyCalculate Conversion rate.
Parameters:
conversions(required) — number — Conversionsvisitors(required) — number — Visitors
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
roas-calculatorread-onlyCalculate ROAS, ROAS (percentage).
Parameters:
revenue(required) — number — Revenue from adsadSpend(required) — number — Ad spend
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
cpm-calculatorread-onlyCalculate Cost per 1,000 impressions (CPM).
Parameters:
cost(required) — number — Total costimpressions(required) — number — Impressions
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
cpc-calculatorread-onlyCalculate Cost per click (CPC).
Parameters:
cost(required) — number — Total costclicks(required) — number — Clicks
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
ai-crawler-checkerread-onlyCheck a robots.txt to see which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, ...) it currently allows or blocks.
Parameters:
robotsTxt(required) — string — The contents of a robots.txt file.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aeo-checkerread-onlyScore content (0-100) for how easily AI answer engines (ChatGPT, Perplexity, AI Overviews) can quote it, with specific fixes.
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
llms-txt-generatorread-onlyGenerate an llms.txt file from a site name, one-line summary, optional details, and sections of links.
Parameters:
siteName(required) — stringdetails— stringsummary— stringsections— array
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
ai-prompt-generatorread-onlyGenerate prompts to test whether ChatGPT/Perplexity/Gemini/Claude recommend a brand, and where it's invisible.
Parameters:
brand(required) — stringcategory(required) — string — What the brand does / its category.audience— stringcompetitors— array — Competitor names (array, or a comma-separated string).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
analyze_domainread-onlyFree, 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.
Parameters:
domain(required) — string — A domain, e.g. example.com
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
list_sitesread-onlyList 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)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_siteread-onlyGet one site's details and status by its id. (requires an agent API key)
Parameters:
siteId(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
list_opportunitiesread-onlyThe 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)
Parameters:
siteId(required) — stringlimit— integerquestionsOnly— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
list_articlesread-onlyRecent articles for a site with their status (draft/review/published) and generation status. (requires an agent API key)
Parameters:
siteId(required) — stringlimit— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
generate_articleGenerate 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)
Parameters:
siteId(required) — stringquery(required) — string — The search query the article should target.callbackUrl— string — Optional https URL to POST { articleId, status, ... } to when generation finishes.
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
get_articleread-onlyFetch 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)
Parameters:
articleId(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_site_metricsread-onlyRead 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)
Parameters:
siteId(required) — stringdays— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
create_siteAdd 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)
Parameters:
name(required) — stringdomain(required) — string — Bare domain, e.g. example.comniche— stringbrandVoice— stringdescription— stringpublishWebhookUrl— stringpublishIntegration— string
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
update_publishingConfigure 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)
Parameters:
siteId(required) — stringpublishMode— stringpublishWebhookUrl— stringpublishIntegration— stringpublishWebhookSecret— string
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
create_checkoutGet 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)
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
publish_articlePublish 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)
Parameters:
articleId(required) — string
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
set_autopilotTurn a site's autopilot on or off. When on, Spook plans, writes, and publishes articles automatically. (requires an agent API key)
Parameters:
siteId(required) — stringenabled(required) — boolean
Hints: read-only no · destructive no · idempotent not declared · open-world not declared
blog-keyword-generatorread-onlyBlog Keyword Generator: Generate SEO keyword ideas for a topic, with search intent and difficulty. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
content-brief-generatorread-onlyContent Brief Generator: Create a detailed SEO content brief for a target keyword. (free, AI-generated, rate-limited).
Parameters:
keyword(required) — stringaudience— string — Optional target audience.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
blog-outline-generatorread-onlyBlog Outline Generator: Produce a structured, SEO-friendly blog post outline. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
content-idea-generatorread-onlyContent Idea Generator: Generate content ideas with formats and angles for a niche. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
seo-title-generatorread-onlySEO Title Generator: Write catchy, SEO-friendly title tags for a topic. (free, AI-generated, rate-limited).
Parameters:
keyword(required) — stringtopic— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
meta-description-generatorread-onlyMeta Description Generator: Write SEO meta descriptions that maximize click-through rate. (free, AI-generated, rate-limited).
Parameters:
keyword(required) — stringtone— string — Optional tone, e.g. professional, playful.topic— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
headline-generatorread-onlyHeadline Generator: Generate catchy, click-worthy headlines. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
subject-line-generatorread-onlyEmail Subject Line Generator: Write high-converting email subject lines. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
cta-generatorread-onlyCTA Generator: Write effective call-to-action phrases. (free, AI-generated, rate-limited).
Parameters:
product(required) — stringgoal— string — Optional CTA goal, e.g. sign up, buy.topic— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
ad-copy-generatorread-onlyAd Copy Generator: Generate ad headlines and descriptions. (free, AI-generated, rate-limited).
Parameters:
product(required) — stringtopic— stringplatform— string — Optional ad platform, e.g. Google, Meta.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
social-post-generatorread-onlySocial Media Post Generator: Write platform-specific social media posts. (free, AI-generated, rate-limited).
Parameters:
topic(required) — stringplatform— string — Optional network, e.g. LinkedIn, X.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
article-summarizerread-onlyAI Article Summarizer: Condense an article into a TL;DR, key points, and summary. (free, AI-generated, rate-limited).
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
article-rewriterread-onlyAI Article Rewriter: Rephrase text to be clearer, unique, and engaging. (free, AI-generated, rate-limited).
Parameters:
text(required) — stringtone— string — Optional target tone.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
grammar-checkerread-onlyAI Grammar Checker: Fix grammar, spelling, and punctuation, and list the corrections. (free, AI-generated, rate-limited).
Parameters:
text(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
faq-generatorread-onlyFAQ Generator: Generate a set of frequently asked questions and answers for a topic. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
product-description-generatorread-onlyProduct Description Generator: Write persuasive product descriptions. (free, AI-generated, rate-limited).
Parameters:
product(required) — stringfeatures— string — Optional key features.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
business-name-generatorread-onlyBusiness Name Generator: Generate brandable business name ideas. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string — What the business is about.style— string — Optional naming style.keywords— string — Optional words to work in.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
youtube-title-generatorread-onlyYouTube Title & Description Generator: Write a YouTube title, description, and tags for a video topic. (free, AI-generated, rate-limited).
Parameters:
topic(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
paragraph-generatorread-onlyParagraph Generator: Expand a topic or sentence into a well-written paragraph. (free, AI-generated, rate-limited).
Parameters:
topic(required) — stringtone— string — Optional tone.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
content-coverage-checkerread-onlyContent Coverage Checker: List the terms and entities an article targeting a keyword is expected to cover. (free, AI-generated, rate-limited).
Parameters:
keyword— stringlanguage— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
hashtag-generatorread-onlyHashtag Generator: Generate relevant hashtags for a topic and platform. (free, AI-generated, rate-limited).
Parameters:
topic(required) — stringplatform— string — Optional network, e.g. Instagram, TikTok.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.