# Spook SEO (com.tryspook/spook): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/com.tryspook%2Fspook/versions/latest)
- Connected to: https://www.tryspook.com/api/mcp
- Homepage: https://www.tryspook.com/
- Scoring rules: v2
- Tools: 63
- Average: 34.2 / 100 (Rain)
- Near-identical pairs: 0

This page shows how Spook SEO (com.tryspook/spook)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 63 tools. Above 40, models choose less accurately.

## Tools

- `canonical-tag-generator`: 16 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: url.
  - Minor: String arguments with no constraint or example: url.
  - Minor: Says nothing about what it returns.
- `headline-generator`: 19 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `content-coverage-checker`: 24 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: keyword, language.
  - Minor: String arguments with no constraint or example: keyword, language.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `meta-robots-generator`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: index, follow, noarchive, nosnippet, noimageindex, maxSnippet, maxImagePreview, maxVideoPreview.
  - Minor: String arguments with no constraint or example: maxSnippet, maxVideoPreview.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument index is unclear.
  - Minor: The meaning of the boolean argument follow is unclear.
  - Minor: The meaning of the boolean argument noarchive is unclear.
  - Minor: The meaning of the boolean argument nosnippet is unclear.
  - Minor: The meaning of the boolean argument noimageindex is unclear.
  - Minor: Says nothing about what it returns.
- `robots-txt-generator`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: mode, disallow, sitemap, crawlDelay, blockedBots.
  - Minor: String arguments with no constraint or example: sitemap.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `slug-generator`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text, separator, removeStopwords.
  - Minor: String arguments with no constraint or example: text.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument removeStopwords is unclear.
  - Minor: Says nothing about what it returns.
- `aeo-checker`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `article-summarizer`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `blog-keyword-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `blog-outline-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `character-counter`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `content-idea-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `faq-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `grammar-checker`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `headline-analyzer`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: headline.
  - Minor: String arguments with no constraint or example: headline.
  - Minor: Says nothing about what it returns.
- `hreflang-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: rows, rows[].lang, rows[].url, xDefault.
  - Minor: String arguments with no constraint or example: rows[].lang, rows[].url, xDefault.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `llms-txt-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: siteName, summary, details, sections, sections[].title, sections[].links, sections[].links[].title, sections[].links[].url, sections[].links[].notes.
  - Minor: String arguments with no constraint or example: siteName, summary, details, sections[].title, sections[].links[].title, sections[].links[].url, sections[].links[].notes.
  - Minor: Says nothing about what it returns.
- `readability-checker`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `seo-title-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: keyword, topic.
  - Minor: String arguments with no constraint or example: keyword, topic.
  - Minor: Says nothing about what it returns.
- `sitemap-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: urls, lastmod.
  - Minor: String arguments with no constraint or example: lastmod.
  - Minor: Says nothing about what it returns.
- `subject-line-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `utm-builder`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: url, source, medium, campaign, term, content.
  - Minor: String arguments with no constraint or example: url, source, medium, campaign, term, content.
  - Minor: Says nothing about what it returns.
- `word-counter`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text.
  - Minor: Says nothing about what it returns.
- `youtube-title-generator`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `keyword-density-checker`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: text, removeStopwords, limit.
  - Minor: String arguments with no constraint or example: text.
  - Minor: The meaning of the boolean argument removeStopwords is unclear.
  - Minor: Says nothing about what it returns.
- `cta-generator`: 29 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: product, topic.
  - Minor: String arguments with no constraint or example: product, topic.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_articles`: 29 / 100
  - Major: Arguments without a description: siteId, limit.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `robots-txt-tester`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: robotsTxt, url, userAgent.
  - Minor: String arguments with no constraint or example: robotsTxt, url.
  - Minor: Says nothing about what it returns.
- `schema-generator`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: type, faqs, faqs[].q, faqs[].a, article, organization, product.
  - Minor: String arguments with no constraint or example: faqs[].q, faqs[].a.
  - Minor: Says nothing about what it returns.
- `meta-tag-generator`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: title, description, siteName, ogType.
  - Minor: String arguments with no constraint or example: title, description, url, siteName, twitter.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `product-description-generator`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: product.
  - Minor: String arguments with no constraint or example: product, features.
  - Minor: Says nothing about what it returns.
- `get_site`: 32 / 100
  - Major: Arguments without a description: siteId.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `ad-copy-generator`: 33 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: product, topic.
  - Minor: String arguments with no constraint or example: product, topic.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `set_autopilot`: 34 / 100
  - Major: Arguments without a description: siteId, enabled.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `ai-prompt-generator`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: brand, audience.
  - Minor: String arguments with no constraint or example: brand, audience.
  - Minor: Says nothing about what it returns.
- `article-rewriter`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: text.
  - Minor: String arguments with no constraint or example: text, tone.
  - Minor: Says nothing about what it returns.
- `content-brief-generator`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: keyword.
  - Minor: String arguments with no constraint or example: keyword, audience.
  - Minor: Says nothing about what it returns.
- `list_opportunities`: 35 / 100
  - Major: Arguments without a description: siteId, questionsOnly, limit.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: The meaning of the boolean argument questionsOnly is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `paragraph-generator`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic, tone.
  - Minor: Says nothing about what it returns.
- `update_site_writing`: 35 / 100
  - Major: Arguments without a description: siteId, globalArticleInstructions, brandVoice, description.
  - Minor: String arguments with no constraint or example: siteId, globalArticleInstructions, brandVoice, description.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `conversion-rate-calculator`: 36 / 100
  - Major: The description only restates the name (3 words).
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `roas-calculator`: 36 / 100
  - Major: The description only restates the name (4 words).
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `serp-preview`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: device.
  - Minor: String arguments with no constraint or example: url, description.
  - Minor: Says nothing about what it returns.
- `meta-description-generator`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: keyword, topic.
  - Minor: String arguments with no constraint or example: keyword, topic.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `business-name-generator`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: style.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `cpc-calculator`: 39 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `cpm-calculator`: 39 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_article`: 40 / 100
  - Major: Arguments without a description: articleId.
  - Minor: String arguments with no constraint or example: articleId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: articleId. Name the tool or the place that returns it, or models look it up first.
- `hashtag-generator`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `social-post-generator`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: topic.
  - Minor: String arguments with no constraint or example: topic.
  - Minor: Says nothing about what it returns.
- `ai-crawler-checker`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `ctr-calculator`: 43 / 100
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_site_metrics`: 43 / 100
  - Major: Arguments without a description: siteId, days.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `schedule_query`: 44 / 100
  - Minor: Arguments without a description: siteId, replaceExisting.
  - Minor: String arguments with no constraint or example: siteId, date.
  - Minor: The meaning of the boolean argument replaceExisting is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `list_calendar`: 45 / 100
  - Minor: Arguments without a description: siteId.
  - Minor: String arguments with no constraint or example: siteId, from.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `update_article`: 45 / 100
  - Major: Arguments without a description: articleId, title, teaser, featuredSnippet, faqs[].question, faqs[].answer, metaTitle, metaDescription, featuredImageAlt.
  - Minor: String arguments with no constraint or example: articleId, title, teaser, featuredSnippet, faqs[].question, faqs[].answer, metaTitle, metaDescription, featuredImageAlt.
  - Minor: Says nothing about what it returns.
- `publish_article`: 47 / 100
  - Major: Arguments without a description: articleId.
  - Minor: String arguments with no constraint or example: articleId.
  - Minor: Required identifiers whose description does not say where the value comes from: articleId. Name the tool or the place that returns it, or models look it up first.
- `update_publishing`: 49 / 100
  - Major: Arguments without a description: siteId, publishIntegration, publishMode, publishWebhookUrl, publishWebhookSecret.
  - Minor: String arguments with no constraint or example: siteId, publishWebhookUrl, publishWebhookSecret.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `analyze_domain`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `create_site`: 50 / 100
  - Major: Arguments without a description: name, description, brandVoice, niche, publishIntegration, publishWebhookUrl.
  - Minor: String arguments with no constraint or example: name, description, brandVoice, niche, publishWebhookUrl.
  - Minor: The description mentions none of its 3 or more arguments.
- `generate_article`: 55 / 100
  - Minor: Arguments without a description: siteId.
  - Minor: String arguments with no constraint or example: siteId.
  - Minor: Required identifiers whose description does not say where the value comes from: siteId. Name the tool or the place that returns it, or models look it up first.
- `list_sites`: 57 / 100
  - Minor: Says nothing about what it returns.
- `create_checkout`: 64 / 100

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
