BlogSEO
Server Details
SEO that executes: keywords, calendar, articles written, scored and published to your CMS, backlinks
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 74.2% over 43 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- BlogSEO-io/blogseo-agent-plugin
- GitHub Stars
- 0
- Server Listing
- BlogSEO MCP server
TDQS
Scored across 52 tools
The descriptions go to great lengths to differentiate closely related tools (e.g., add_keywords vs. research_keywords, check_seo_score vs. check_article_seo_score), but the 52-tool surface still includes several overlapping families—keyword research, SEO checks, article editing—that require careful reading. Most boundaries are clear, but a few adjacent tools could be misselected by name alone.
All tool names are snake_case and consistently begin with a verb (add_, check_, get_, update_, delete_, etc.). Modifiers like with_ai and for_content are used consistently, so the pattern is predictable.
52 tools is far beyond the typical 3–15 range and pushes into overload territory; even for a broad blog SEO platform, this many operations makes discovery and selection cumbersome. Several tools could likely be consolidated or grouped.
The surface covers account/website setup, keyword research, scheduling, article editing, SEO analysis, publishing, CMS sync, backlinks, webhooks, and image handling—a very broad lifecycle. The main gap is a direct delete/archive operation for generated articles, though most workflows have workarounds.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_account2 fields changed- removed
Output schema / properties / emailRemoved value: -{ - "type": [ - "string", - "null" - ] -} - changed
Output schema / requiredPrevious value: -[ - "email", - "websites", - "member_only_organizations", - "buy_credits_url" -]New value: +[ + "websites", + "member_only_organizations", + "buy_credits_url" +]
2 tool updates
- Changed
list_integrations1 field changed- added
Output schema / properties / bing_webmaster_toolsAdded value: +{ + "additionalProperties": false, + "description": "Bing Webmaster Tools connection of the website; absent when it has none.", + "properties": { + "auto_indexing_enabled": { + "description": "Whether the sitemap and each newly published article URL are sent to Bing.", + "type": "boolean" + }, + "auto_indexing_last_submitted_at": { + "description": "Last time the sitemap was submitted to Bing.", + "type": [ + "string", + "null" + ] + }, + "connection_status": { + "type": "string" + }, + "last_synced_at": { + "description": "Last successful read of the site's Bing data.", + "type": [ + "string", + "null" + ] + }, + "property": { + "description": "Bing Webmaster Tools site URL.", + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_name": { + "type": "string" + } + }, + "required": [ + "provider", + "provider_name", + "property", + "connection_status", + "last_synced_at", + "auto_indexing_enabled", + "auto_indexing_last_submitted_at" + ], + "type": "object" +}
- Changed
query_search_console9 fields changed- changed
Input schema / properties / end_date / descriptionPrevious value: -"Last day, YYYY-MM-DD. Defaults to 3 days ago, the latest day with complete data."New value: +"Last day, YYYY-MM-DD. Defaults to 3 days ago, the latest day with complete data; for Bing, to the newest day Bing has data for." - added
Input schema / properties / search_engineAdded value: +{ + "default": "google", + "description": "google (default): Google Search Console. bing: Bing Webmaster Tools, which needs a plan, groups by query, page or date (not query with page), filters on query or page without regex, takes no search_type and ignores data_state.", + "enum": [ + "google", + "bing" + ], + "type": "string" +} - added
Output schema / properties / bucket_datesAdded value: +{ + "description": "Bing query or page rows only: dates (YYYY-MM-DD) of the weekly buckets in the period that the rows sum.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / rows / items / properties / date / descriptionPrevious value: -"YYYY-MM-DD, in Pacific time like Search Console."New value: +"YYYY-MM-DD, in Pacific time like Search Console. Bing query and page rows: date of the weekly bucket." - changed
Output schema / properties / rows / items / properties / position / descriptionPrevious value: -"Average position; 1 is the top result."New value: +"Average position; 1 is the top result. Null only on Bing rows without one, such as daily totals." - changed
Output schema / properties / rows / items / properties / position / typePrevious value: -"number"New value: +[ + "number", + "null" +] - added
Output schema / properties / search_engineAdded value: +{ + "const": "bing", + "description": "Present only when the rows come from Bing Webmaster Tools; absent means Google Search Console.", + "type": "string" +} - added
Output schema / properties / search_type / descriptionAdded value: +"Google search type; all for Bing, which reports every Bing result together." - changed
Output schema / properties / site_url / descriptionPrevious value: -"Search Console property the rows come from."New value: +"Search Console property, or Bing Webmaster Tools site, the rows come from."
2 tool updates
- Changed
get_website_settings2 fields changed- added
Output schema / properties / content / properties / competitor_listicles_enabledAdded value: +{ + "description": "SaaS websites with competitor roundups available: may planned articles compare competing software, own product first. null when not available.", + "type": [ + "boolean", + "null" + ] +} - changed
Output schema / properties / content / requiredPrevious value: -[ - "default_locale", - "target_audiences", - "offer_summary", - "custom_instructions" -]New value: +[ + "default_locale", + "target_audiences", + "offer_summary", + "custom_instructions", + "competitor_listicles_enabled" +]
- Changed
update_website_settings3 fields changed- added
Input schema / properties / competitor_listicles_enabledAdded value: +{ + "description": "SaaS websites only: allow competitor roundup articles (own product first).", + "type": "boolean" +} - added
Output schema / properties / content / properties / competitor_listicles_enabledAdded value: +{ + "description": "SaaS websites with competitor roundups available: may planned articles compare competing software, own product first. null when not available.", + "type": [ + "boolean", + "null" + ] +} - changed
Output schema / properties / content / requiredPrevious value: -[ - "default_locale", - "target_audiences", - "offer_summary", - "custom_instructions" -]New value: +[ + "default_locale", + "target_audiences", + "offer_summary", + "custom_instructions", + "competitor_listicles_enabled" +]
2 tool updates
- Changed
get_advanced_seo_report2 fields changed- added
Output schema / properties / serp_checked_atAdded value: +{ + "description": "When the Google results behind the report were fetched; null for reports made before this field existed.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "website_id", - "status", - "advanced_score", - "checked_at", - "is_stale", - "error", - "summary", - "target_word_count", - "coverage_gaps", - "strengths", - "recommendations", - "recommended_keywords", - "competitors" -]New value: +[ + "article_id", + "website_id", + "status", + "advanced_score", + "checked_at", + "is_stale", + "error", + "summary", + "target_word_count", + "coverage_gaps", + "strengths", + "recommendations", + "recommended_keywords", + "competitors", + "serp_checked_at" +]
- Changed
run_advanced_seo_check_for_content1 field changed- added
Output schema / properties / serp_checked_atAdded value: +{ + "description": "When the Google results used as the benchmark were fetched.", + "type": "string" +}
13 tool updates
- Changed
schedule_article8 fields changed- changed
Input schema / properties / headline / descriptionPrevious value: -"Article headline (title). Use suggest_headline afterwards to improve it."New value: +"Headline of a custom article, with scheduled_date. Use suggest_headline afterwards to improve it." - added
Input schema / properties / keyword_idsAdded value: +{ + "description": "Instead of a custom article: one article per keyword (1 to 50), headline and date picked for you. Pass no other field with it.", + "items": { + "description": "Keyword id from the keywords tools. One scheduled article per keyword.", + "format": "uuid", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / scheduled_date / descriptionPrevious value: -"Generation date, YYYY-MM-DD. Today or later."New value: +"Generation date of the custom article, YYYY-MM-DD. Today or later." - removed
Input schema / requiredRemoved value: -[ - "headline", - "scheduled_date" -] - added
Output schema / properties / asyncAdded value: +{ + "description": "true with keyword_ids: the articles appear in the calendar about a minute later.", + "type": "boolean" +} - added
Output schema / properties / queued_keyword_idsAdded value: +{ + "description": "With keyword_ids: keywords whose article was queued.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / skipped_over_limit_countAdded value: +{ + "description": "With keyword_ids: keywords dropped because the calendar is full.", + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "scheduled_article_id", - "headline", - "scheduled_at", - "is_custom", - "target_keyword", - "target_keyword_id", - "brief", - "product_ids", - "is_generated", - "generated_article_id", - "created_at" -]New value: +[ + "async" +]
- Removed
schedule_articles_for_keywords - Added
update_article - Removed
update_article_content - Removed
update_article_cover_alt_text - Removed
update_article_headline - Removed
update_article_meta_description - Removed
update_article_slug - Removed
update_competitors - Removed
update_content_settings - Removed
update_general_settings - Removed
update_image_settings - Added
update_website_settings
7 tool updates
- Changed
check_backlinks5 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true to acknowledge the AI brain credit charge. Omit it to only get the cost and your balance.", + "type": "boolean" +} - added
Output schema / properties / credits_balanceAdded value: +{ + "description": "Current AI brain credits balance; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / credits_requiredAdded value: +{ + "description": "AI brain credits the call would charge; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "website_id", - "domain", - "domain_rating", - "backlinks", - "referring_domains", - "referring_main_domains", - "referring_ips", - "broken_backlinks", - "broken_pages", - "nofollow_backlinks", - "nofollow_referring_domains", - "top_tlds", - "top_backlinks", - "checked_at", - "cached" -]
- Removed
get_website_setup_guide - Changed
improve_content_seo5 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true to acknowledge the AI brain credit charge. Omit it to only get the cost and your balance.", + "type": "boolean" +} - added
Output schema / properties / credits_balanceAdded value: +{ + "description": "Current AI brain credits balance; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / credits_requiredAdded value: +{ + "description": "AI brain credits the call would charge; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "website_id", - "improved_markdown", - "previous_score", - "new_score", - "credits_charged" -]
- Changed
publish_article4 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true once the user approved this publication. Omit it to only see where the content would be published and whether it goes live.", + "type": "boolean" +} - added
Output schema / properties / publish_targetsAdded value: +{ + "description": "Where the call would publish; only with requires_confirmation.", + "items": { + "additionalProperties": false, + "properties": { + "lands_as": { + "description": "live: public as soon as it lands; draft: saved as a draft in the CMS; webhook: sent to the user's endpoint, whose code decides.", + "enum": [ + "live", + "draft", + "webhook" + ], + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_name": { + "type": "string" + } + }, + "required": [ + "provider_id", + "provider_name", + "lands_as" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "status", - "article_id", - "provider" -]
- Changed
run_advanced_seo_check5 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true to acknowledge the AI brain credit charge. Omit it to only get the cost and your balance.", + "type": "boolean" +} - added
Output schema / properties / credits_balanceAdded value: +{ + "description": "Current AI brain credits balance; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / credits_requiredAdded value: +{ + "description": "AI brain credits the call would charge; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "website_id", - "article_id", - "status", - "async" -]
- Changed
run_advanced_seo_check_for_content5 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true to acknowledge the AI brain credit charge. Omit it to only get the cost and your balance.", + "type": "boolean" +} - added
Output schema / properties / credits_balanceAdded value: +{ + "description": "Current AI brain credits balance; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / credits_requiredAdded value: +{ + "description": "AI brain credits the call would charge; only with requires_confirmation.", + "type": "number" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "website_id", - "advanced_score", - "summary", - "coverage_gaps", - "strengths", - "recommendations", - "recommended_keywords", - "target_word_count", - "competitors", - "on_page_score", - "credits_charged" -]
- Changed
sync_article_to_cms4 fields changed- added
Input schema / properties / confirmAdded value: +{ + "const": true, + "description": "Set to true once the user approved this publication. Omit it to only see where the content would be published and whether it goes live.", + "type": "boolean" +} - added
Output schema / properties / publish_targetsAdded value: +{ + "description": "Where the call would publish; only with requires_confirmation.", + "items": { + "additionalProperties": false, + "properties": { + "lands_as": { + "description": "live: public as soon as it lands; draft: saved as a draft in the CMS; webhook: sent to the user's endpoint, whose code decides.", + "enum": [ + "live", + "draft", + "webhook" + ], + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_name": { + "type": "string" + } + }, + "required": [ + "provider_id", + "provider_name", + "lands_as" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / requires_confirmationAdded value: +{ + "const": true, + "description": "Present when the tool did not run: it needs confirm=true. The other fields are then absent.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword", - "message", - "locale" -]
8 tool updates
- Changed
create_hosted_blog3 fields changed- added
Output schema / properties / next_stepAdded value: +{ + "description": "What to do next for the current status: records to add, DNS and SSL wait times, or the article URL pattern once connected.", + "type": "string" +} - added
Output schema / properties / registrar_warningAdded value: +{ + "description": "Instruction specific to the detected DNS provider to follow when adding the records; null when none applies.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "config_id", - "website_id", - "hostname", - "blog_url", - "status", - "status_label", - "is_connected", - "dns_records", - "last_error", - "registrar", - "dns_verified_at", - "ssl_provisioned_at", - "created_at", - "updated_at", - "dashboard_url" -]New value: +[ + "config_id", + "website_id", + "hostname", + "blog_url", + "status", + "status_label", + "is_connected", + "dns_records", + "last_error", + "registrar", + "dns_verified_at", + "ssl_provisioned_at", + "created_at", + "updated_at", + "dashboard_url", + "registrar_warning", + "next_step" +]
- Changed
get_article3 fields changed- changed
Output schema / properties / includes_content / descriptionPrevious value: -"true when the markdown body is in the text content."New value: +"true when markdown_content holds the body." - added
Output schema / properties / markdown_contentAdded value: +{ + "description": "The article body in markdown when include_content=true, null otherwise.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword", - "website_id", - "dashboard_url", - "last_updated_at", - "is_on_cms", - "excerpt", - "main_image_description", - "main_image_alt", - "target_keyword_id", - "default_locale", - "locale", - "translations", - "includes_content" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "website_id", + "dashboard_url", + "last_updated_at", + "is_on_cms", + "excerpt", + "main_image_description", + "main_image_alt", + "target_keyword_id", + "default_locale", + "locale", + "translations", + "includes_content", + "markdown_content" +]
- Changed
get_hosted_blog_status3 fields changed- added
Output schema / properties / next_stepAdded value: +{ + "description": "What to do next for the current status: records to add, DNS and SSL wait times, or the article URL pattern once connected.", + "type": "string" +} - added
Output schema / properties / registrar_warningAdded value: +{ + "description": "Instruction specific to the detected DNS provider to follow when adding the records; null when none applies.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "config_id", - "website_id", - "hostname", - "blog_url", - "status", - "status_label", - "is_connected", - "dns_records", - "last_error", - "registrar", - "dns_verified_at", - "ssl_provisioned_at", - "created_at", - "updated_at", - "dashboard_url" -]New value: +[ + "config_id", + "website_id", + "hostname", + "blog_url", + "status", + "status_label", + "is_connected", + "dns_records", + "last_error", + "registrar", + "dns_verified_at", + "ssl_provisioned_at", + "created_at", + "updated_at", + "dashboard_url", + "registrar_warning", + "next_step" +]
- Changed
sync_article_to_cms3 fields changed- added
Output schema / properties / localeAdded value: +{ + "description": "Translation locale the change applied to; null for the default-language article or a field shared by every locale. The other fields always describe the default-language article.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / messageAdded value: +{ + "description": "What changed, e.g. \"Headline updated for the fr version.\"", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "message", + "locale" +]
- Changed
update_article_cover_alt_text3 fields changed- added
Output schema / properties / localeAdded value: +{ + "description": "Translation locale the change applied to; null for the default-language article or a field shared by every locale. The other fields always describe the default-language article.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / messageAdded value: +{ + "description": "What changed, e.g. \"Headline updated for the fr version.\"", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "message", + "locale" +]
- Changed
update_article_headline3 fields changed- added
Output schema / properties / localeAdded value: +{ + "description": "Translation locale the change applied to; null for the default-language article or a field shared by every locale. The other fields always describe the default-language article.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / messageAdded value: +{ + "description": "What changed, e.g. \"Headline updated for the fr version.\"", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "message", + "locale" +]
- Changed
update_article_meta_description3 fields changed- added
Output schema / properties / localeAdded value: +{ + "description": "Translation locale the change applied to; null for the default-language article or a field shared by every locale. The other fields always describe the default-language article.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / messageAdded value: +{ + "description": "What changed, e.g. \"Headline updated for the fr version.\"", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "message", + "locale" +]
- Changed
update_article_slug3 fields changed- added
Output schema / properties / localeAdded value: +{ + "description": "Translation locale the change applied to; null for the default-language article or a field shared by every locale. The other fields always describe the default-language article.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / messageAdded value: +{ + "description": "What changed, e.g. \"Headline updated for the fr version.\"", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "article_id", - "headline", - "slug", - "status", - "status_label", - "created_at", - "published_at", - "is_out_of_sync", - "meta_description", - "preview_text", - "main_image_url", - "target_keyword" -]New value: +[ + "article_id", + "headline", + "slug", + "status", + "status_label", + "created_at", + "published_at", + "is_out_of_sync", + "meta_description", + "preview_text", + "main_image_url", + "target_keyword", + "message", + "locale" +]
1 tool update
- Added
query_search_console
60 tool updates
- First observed
add_keywords - First observed
batch_edit_articles_with_ai - First observed
check_article_seo_score - First observed
check_backlinks - First observed
check_domain_rating - First observed
check_keyword_density - First observed
check_seo_score - First observed
connect_custom_webhook - First observed
convert_credits_to_backlink_credits - First observed
create_hosted_blog - First observed
create_image_upload - First observed
delete_keywords - First observed
delete_scheduled_article - First observed
edit_article_with_ai - First observed
expand_keyword_cluster - First observed
find_keyword_cannibalization - First observed
get_account - First observed
get_advanced_seo_report - First observed
get_ai_visibility - First observed
get_article - First observed
get_backlinks_overview - First observed
get_credit_balance - First observed
get_hosted_blog_status - First observed
get_keyword - First observed
get_keyword_rankings - First observed
get_keyword_trends - First observed
get_webhook_contract - First observed
get_website_settings - First observed
get_website_setup_guide - First observed
improve_article_seo - First observed
improve_content_seo - First observed
list_articles - First observed
list_integrations - First observed
list_keywords - First observed
list_scheduled_articles - First observed
publish_article - First observed
refresh_keyword_metrics - First observed
regenerate_headlines - First observed
reschedule_article - First observed
research_keywords - First observed
run_advanced_seo_check - First observed
run_advanced_seo_check_for_content - First observed
schedule_article - First observed
schedule_articles_for_keywords - First observed
set_article_cover_image - First observed
set_keyword_favorite - First observed
suggest_headline - First observed
sync_article_to_cms - First observed
test_custom_webhook - First observed
update_article_content - First observed
update_article_cover_alt_text - First observed
update_article_headline - First observed
update_article_meta_description - First observed
update_article_slug - First observed
update_competitors - First observed
update_content_settings - First observed
update_general_settings - First observed
update_image_settings - First observed
update_scheduled_article - First observed
upload_article_image
Related MCP Connectors
- OutrankOAuthso.outrank
Plan SEO keywords, write and publish articles to your site, read Search Console and backlink data
Turns SEO insight into page changes: keyword research, SERP and rank data, rewrites you approve.
Full-cycle SEO automation for AI agents: technical audits, SEO articles, machine-readable pricing.
Autonomous SEO + GEO growth: keyword research, audits, content, AI answer-engine visibility.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRun the full agency SEO loop from your AI assistant: Search Console insights, prioritized actions, article generation, CMS publishing, indexing, and performance measurement.MIT
- AlicenseNot gradedqualityAmaintenanceRuns AI readiness audits, Google Search Console reporting, keyword research and SEO article drafting, putting every draft into a human review queue instead of publishing it.4AGPL 3.0

TopicForgeofficial
AlicenseNot gradedqualityDmaintenanceSEO articles that sound like your brand — not generic AI output. TopicForge runs a four-stage pipeline — outline, draft, voice, and CTA — to turn topics into publish-ready articles with FAQ schema, meta, and editorial guardrails.730 npmMIT- AlicenseNot gradedqualityBmaintenanceTurn Claude Code into your SEO manager with keyword research, content pipeline that ships pull requests, rank tracking, and a dashboard.2 npm91AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.