VisiblyAI MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VISIBLYAI_API_KEY | No | API key from https://antonioblago.com. Required for paid tools, but free tools work without it. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_content_queryC | Read query context and optionally a bounded, paginated saved draft. |
| create_content_queryC | Run paid SERP/content analysis and create a query. Requires content:write and spending:execute. |
| save_content_query_draftB | Save an editor draft with revision CAS. The content is sanitized and nothing is published. |
| generate_article_from_queryB | Queue AI article generation from a ready query; requires spending:execute. |
| optimize_content_draftC | Return a measured, paid optimization proposal. Does not save; requires spending:execute. |
| change_article_statusB | Review an article. Approval requires content:approve and triggers the normal CMS webhook. Queueing additionally requires spending:execute, content plan access, member budget and owner credits. |
| edit_content_articleC | Full editor update for editable statuses. Creates a backup and checks the revision. |
| regenerate_content_articleB | Queue paid regeneration for an eligible article; requires spending:execute. |
| list_cms_connectionsA | List project CMS connections without returning credentials or webhook secrets; requires cms:manage. |
| create_cms_connectionB | Create a CMS connection (cms:manage). A generated webhook secret is returned once and must be placed in the host secret store. |
| test_cms_connectionA | Test CMS credentials and signed webhook delivery. Requires cms:manage. |
| delete_cms_connectionC | Delete a CMS connection. Requires cms:manage. |
| create_contentpilot_keyA | Create/rotate a project-scoped Pull API key. Plaintext is returned once; requires cms:manage. |
| get_contentpilot_key_statusA | Read masked project Pull API key status. Requires cms:manage. |
| revoke_contentpilot_keyB | Revoke the project's Pull API key. Requires cms:manage. |
| publish_articleA | Publish an approved article to a push CMS. Requires content:publish; webhook pull CMS runs on approval instead. |
| update_cms_articleA | Update the website from the saved Visibly article. Requires content:publish. Check get_article_workflow first: another published article may own this URL. A webhook receipt is not completion. Verify delivery and live content with get_article_workflow. |
| get_article_workflowA | Read editor links, published article conflicts and the last CMS transfer status (0 credits). With compare_live, compare the saved revision's text, links, images, structure and metadata against the website. Missing metadata is unknown. Writes nothing; accepted is not completed. |
| pull_live_articleC | Read website content and its comparison with Visibly as a proposal; nothing is saved or published. |
| set_article_live_urlC | Connect or disconnect the public page URL for editor pull and CMS writeback. |
| list_article_backupsB | List saved editor and CMS versions without their content. |
| get_article_backupB | Read one saved version in bounded content chunks. |
| restore_article_backupC | Restore a saved version only if the current article revision still matches. |
| get_optimizer_settingsC | Read optimizer/autolink settings, limits, and latest run. |
| update_optimizer_settingsC | Change scheduled optimizer or approval-time autolink settings. Requires content:write. |
| run_content_optimizerB | Start a paid content optimizer run. Requires content:write and spending:execute. |
| list_optimizer_suggestionsC | List optimizer suggestions for review. |
| approve_optimizer_suggestionA | Apply an optimizer suggestion; requires content:approve. Snippet and link changes additionally require content:publish for automatic CMS writeback. Topic suggestions only create a query and do not require publishing rights. |
| reject_optimizer_suggestionB | Reject an optimizer suggestion; requires content:write. |
| undo_optimizer_suggestionB | Undo a snippet/link suggestion including CMS writeback; requires content:approve and content:publish. |
| classify_keywords_simpleA | Classify keywords using local regex patterns (fast, free, offline). Returns intent (transactional/commercial/informational/navigational/local), funnel stage (TOFU/MOFU/BOFU), brand type, conversion score (0-100), topic. Supports German and English. For DataForSEO-enhanced intent detection use classify_keywords_advanced (paid). Free tool - no API key or credits required. |
| seo_checklistB | Get an SEO checklist. Types: general, blog, ecommerce, discover, backlink, all. Returns actionable checklists with specific items to verify. Available in English (en) and German (de). Free tool - no API key or credits required. |
| seo_guidanceA | Get SEO best practices on a topic. Use topic='list' to see all topics. Topics: title_tags, meta_descriptions, heading_structure, internal_linking, core_web_vitals, eeat, keyword_research, schema_markup, image_optimization, local_seo. Free tool - no API key or credits required. |
| get_google_guidelinesA | Get official Google Search developer guidelines (scraped weekly from developers.google.com). Use category='list' to see all available categories. Available categories: fundamentals, content, crawling, sitemaps, structured_data, performance, ranking, updates, monitoring, snippets, guidelines. Free tool - no API key or credits required. |
| analyze_url_structureB | Analyze a URL for SEO-friendliness. Checks length, structure, and common issues. Free tool - no API key or credits required. |
| get_account_infoA | Check VisiblyAI account status, credit balance, and subscription tier. Shows available free tools if no API key is set. |
| list_locationsA | List available countries/locations for SEO data queries. Free tool - no API key or credits required. |
| get_skillA | Get an SEO workflow skill with step-by-step methodology and CTR models. Skills: seo-audit, keyword-research, competitor-analysis, traffic-analysis, gsc-report, site-health-check, content-nss-optimize. content-nss-optimize: write with your own model and iteratively use free Visibly scoring toward NSS 70/80, then save and return the editor link. Use name='list' to see all available skills. Free tool - no API key or credits required. |
| classify_keywords_advancedA | Classify keywords using DataForSEO Search Intent API + regex classifier (paid). Combines DataForSEO search intent (main_intent, secondary_intents) with local regex classification (brand type, funnel stage, topic, conversion score). More accurate than classify_keywords_simple for intent detection. Credits: dynamic (based on keyword count). Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_traffic_snapshotB | Get current organic and paid traffic for a domain. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_historical_trafficC | Get historical traffic trends (up to 5 years). Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_keywordsA | Get top ranking keywords for a domain with volume, position, URL. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_competitorsC | Get competitor domains based on keyword overlap. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_backlinksC | Get backlink profile: Domain Rating, total backlinks, referring domains. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| get_referring_domainsC | Get referring domains with authority scores. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| validate_keywordsA | Validate keywords: get search volume, competition, CPC. Credits: varies. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| crawl_websiteC | Crawl a website + optional 24-point OnPage SEO analysis. Credits: 15-60. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| onpage_analysisA | Run 24-point OnPage SEO analysis: keyword, content, technical checks. Credits: 15. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| check_serpA | Check live Google SERP for a keyword. See who ranks, what content types dominate, and SERP features present. Use for: competitive analysis, content gap detection, SERP intent analysis. Credits: 15. |
| query_fanoutA | Run Query Fan-Out AI Coverage Analysis for a URL + seed keyword. Gemini Grounding generates fan-out sub-queries; page content is crawled and topic-extracted; semantic matching (embeddings) scores coverage and surfaces gaps. GSC or DataForSEO ranking keywords feed into the coverage calculation. Use for: content gap analysis, AI-search coverage, sub-topic coverage for a page. Credits: dynamic (~3-5 depending on data_source). |
| check_pagespeedB | Check PageSpeed and Core Web Vitals for a URL. Returns performance, accessibility, SEO scores, LCP, CLS, TBT, and optimization opportunities. Credits: 5. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| audit_sitemapB | Audit a site's XML sitemap: total URLs, duplicates, broken links, lastmod coverage. Credits: 20. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| check_structured_dataB | Validate JSON-LD and microdata on a URL: schema types, required fields, errors. Credits: 5. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| check_hreflangA | Validate hreflang annotations: x-default, language codes, broken targets, bidirectional linking. Credits: 10. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| check_linksB | Check all links on a page for broken/redirect status. Credits: 20. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| seo_agentB | Run a specialized SEO agent. Agents: crawling, seo_analyst, strategist, copywriter, chief_editor, consultant. Auto-detects from task if omitted. Credits: varies. Pass project_id to enrich with project context (business type, target group, skill profile). Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| seo_workflowA | Run a multi-step SEO workflow with report generation. Workflows: seo_performance_audit (~150 credits), indexing_diagnosis (~200 credits), quick_win_analysis (~60 credits, DR-weighted keyword opportunities pos 10-100). Credits: 60-200 depending on workflow. Requires VISIBLYAI_API_KEY. Use get_account_info to check your balance. |
| list_projectsA | List your EEAT projects with scores, domains, and analysis status. Credits: 0. Requires VISIBLYAI_API_KEY. |
| get_projectB | Get project details including competitors and Google connections. Credits: 0. Requires VISIBLYAI_API_KEY. |
| get_google_connectionsA | Show connected Google Search Console and Analytics 4 properties. Credits: 0. Requires VISIBLYAI_API_KEY. |
| query_search_consoleB | Query Google Search Console: clicks, impressions, CTR, position. Credits: 0. Dimensions: query, page, country, device, date. Auto-selects property if empty. Requires VISIBLYAI_API_KEY. |
| query_analyticsB | Query Google Analytics 4: traffic, pages, sources, revenue. Credits: 0. Report types: overview, top_pages, traffic_sources, revenue. Auto-selects property if empty. Requires VISIBLYAI_API_KEY. |
| query_knowledge_baseB | Search the SEO knowledge base (blogs, docs, Google guidelines). Credits: 2. Semantic search over all indexed content ranked by relevance + recency. Sources: blog articles, SEO documentation, best practices, Google Search guidelines. Requires VISIBLYAI_API_KEY. |
| get_gsc_clustersA | Topic clusters from Search Console with quick wins and alerts. Credits: 0, read-only. Returns the top_n clusters by impressions (each with a stable cluster_key for
get_cluster_keywords), quick wins, alerts, totals and |
| get_cluster_keywordsA | Keywords of one cluster (clicks, impressions, CTR, position), paginated. Credits: 0, read-only. Use cluster_key from get_gsc_clusters. Response carries page.has_more/next_offset. |
| get_analytics_insightsC | GA4 flow (channels → page types → outcomes), funnel, channels, AI-referrer signals. Credits: 0, read-only. |
| get_revenue_insightsA | Organic revenue attribution: totals, top keywords/landing pages, Pareto, cluster revenue. Credits: 0, read-only. has_data=false means no revenue analysis exists yet (nothing is estimated). |
| get_scorecardB | KPI scorecard (leading + lagging indicators) over 28 or 90 days. Credits: 0, read-only. |
| get_eeat_summaryB | Latest E-E-A-T scores, trend, open todos and competitor comparison. Credits: 0, read-only. |
| list_pagesB | Page inventory from the sitemap with GSC metrics and index state, paginated. Credits: 0, read-only. |
| get_internal_linksB | Internal link graph. Without url: summary + orphan pages. With url: inbound links and anchors. Credits: 0, read-only. |
| recallA | Recall facts the account remembered in the visibly chat (account facts, plus project facts if project_id). Credits: 0, read-only. Empty query lists recent facts. Requires tier Pro and CUSTOMER_MEMORY_ENABLED on the platform. |
| list_articlesA | Content articles of a project (metadata only), newest first, paginated. Credits: 0, read-only. status: all|draft|queued|generating|approved|rejected|published|failed|archived. |
| get_articleB | One article. Text only with include_content=true, delivered in chunks of up to 20000 characters. Credits: 0, read-only. Use next_content_offset to continue; content_hash changes when the article was edited. |
| list_content_queriesB | Content queries (keyword analyses) with status and scores, paginated. Credits: 0, read-only. |
| get_content_briefingA | Editorial briefing of a finished content analysis: terms, entities, questions, outline. Credits: 0, read-only. 409 query_not_ready while the analysis is still pending. |
| get_content_statusB | Analysis status of a content query plus article generation state, no texts. Credits: 0, read-only. |
| score_textB | Score a text against the project's brand rules and AI-slop patterns; with a ready query_id also the NSS. Credits: 0. Deterministic, nothing is stored. format: html|markdown (max 100000 chars). nss is null with a reason when no finished analysis is referenced. |
| submit_article_draftA | Hand your text over to visibly as an article draft (status draft, never queued). Credits: 0. Needs an API key with the right content:write. Pass a stable idempotency_key when retrying; the response echoes the key used. format: html|markdown. Without query_id a new content query is created; with query_id keyword/country/language/persona and expected_query_revision must match. |
| update_articleA | Edit a draft or rejected article. Credits: 0. Needs content:write. expected_revision comes from get_article; a mismatch returns revision_conflict with the current revision. With content, format (html|markdown) is required. Approved or published articles cannot be edited here; hand over a new draft instead. |
| get_mcp_operationB | Status and result of one of your write operations. Credits: 0, read-only. |
| rememberA | Store a fact in YOUR visibly brain (the key holder's memory graph, read back by recall and the chat). Credits: 0. User data, not a permission: the fact only shapes your own chat context, never project content and never another member's graph. scope=project needs project_id; scope=account applies across all projects. Needs the key right memory:write. Pass a stable idempotency_key when retrying; the response echoes the key used. |
| import_meeting_previewA | Turn a meeting or call transcript into a reviewable proposal for one project. Credits: 15 per run, charged to the key holder. Returns four lists, nothing is written: brain facts (each with a category and typed entities), brand rules (not_allowed, preferred, tone, hard_rule, excluded_topic), personas and brand profile fields. Show them to the user, let them strike or edit items, then call import_meeting_apply with the selection. text: 200 to 60000 characters, plain text; source: a short name for the transcript. Needs the key right memory:write and access to the project. |
| import_meeting_applyA | Write the reviewed selection from import_meeting_preview. Credits: 0, idempotent. Pass the items the user approved, in the shape the preview returned (facts with content, category, entities; rules with rule_type plus term or note; personas; brand_profile fields). Facts go into YOUR brain (key right memory:write), rules, personas and profile into the project (key right content:write plus a content write role). Retries with the same idempotency_key replay instead of duplicating; the response echoes the key used. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 84 tools
Many tools have overlapping purposes: score_text, optimize_content_draft, and run_content_optimizer all evaluate/improve content; classify_keywords_simple and classify_keywords_advanced do nearly the same thing; get_content_query, list_content_queries, and get_content_status all read query state; seo_agent and seo_workflow both run multi-step SEO tasks. An agent would struggle to pick the right one without deep inspection.
Naming mixes verb_noun (list_articles, create_content_query), noun-only (recall, remember, seo_checklist), and noun_verb (score_text, check_serp, query_search_console) patterns. Similar functions get different styles, e.g. optimize_content_draft vs run_content_optimizer, and get_gsc_clusters vs get_content_query, making the surface hard to predict.
84 tools is far beyond a reasonable scoped surface for an SEO/content platform. The set feels like several products bolted together (scoring, CMS, optimizer, GSC, analytics, SERP data, agents, memory, meeting import) with many redundant variants, guaranteeing confusion and high selection cost.
The surface covers most lifecycle operations: content queries (create/read/save/generate/optimize), articles (create/edit/status/publish/backup/restore), CMS connections (CRUD/test), optimizer suggestions (list/approve/reject/undo), and analytics. Minor gaps exist, such as no delete_article or bulk operations, but core workflows are well supported.