MA

misar-ai/misarseo-mcp

Developer tools
0 stars 0 forks Quality 73 Trend 20

MisarSEO MCP server — keyword research, rank tracking, site audits, Search Console, backlinks and AI search visibility from any MCP client.

Overview

Research keywords, track rankings, audit sites, monitor backlinks and AI-search visibility — from any AI assistant. Works with Claude (Desktop, Code, and web), Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI, ChatGPT, and any other MCP-compatible client — over stdio or Streamable HTTP. Ready-made configs for every client live in connectors/. Create an API key at https://seo.misar.io/ai (AI & MCP → create an API key) — it starts with mseo_ — and give it to the server in one of three ways: the MISARSEO_API_KEY environment variable, your MCP client's env block, or { "api_key": "mseo_…" } in ~/.misarseo/config.json. Self-hosted instances: set MISARSEO_BASE_URL. Reusable workflows your client exposes as slash-commands. Read-only context an agent can attach without spending a tool call. Bundled in skills/ — guidance an agent loads when a task matches.

README

MisarSEO MCP Server

Research keywords, track rankings, audit sites, monitor backlinks and AI-search visibility — from any AI assistant.

180 tools · 6 prompts · 3 resources · 6 agent skills

Works with Claude (Desktop, Code, and web), Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI, ChatGPT, and any other MCP-compatible client — over stdio or Streamable HTTP.


Install

npx -y @smithery/cli install misar/misarseo-mcp --client claude

Claude Code

claude mcp add misarseo -- npx -y @misarseo/mcp@latest

Manual (any client)

{
  "mcpServers": {
    "misarseo": {
      "command": "npx",
      "args": ["-y", "@misarseo/mcp@latest"],
      "env": { "MISARSEO_API_KEY": "mseo_your_key_here" }
    }
  }
}

Ready-made configs for every client live in connectors/.

Remote (no install)

{
  "mcpServers": {
    "misarseo": {
      "type": "streamable-http",
      "url": "https://api.misar.io/seo/mcp",
      "headers": { "Authorization": "Bearer mseo_your_key_here" }
    }
  }
}

Authentication

Create an API key at https://seo.misar.io/ai (AI & MCP → create an API key) — it starts with mseo_ — and give it to the server in one of three ways: the MISARSEO_API_KEY environment variable, your MCP client’s env block, or { "api_key": "mseo_…" } in ~/.misarseo/config.json.

Self-hosted instances: set MISARSEO_BASE_URL.


Tools

Tool Description
list_projects Lists the active projects in the user’s organization.
get_dashboard One card per active project in the caller’s organization: latest audit health, rank-tracker status, and trailing-7-day web-analytics sessions.
research_keywords Research keyword data (search volume, difficulty, CPC, related ideas) for 1-5 seed keywords in one call — one research run per seed.
save_keywords Save keywords to a project’s saved-keywords list.
list_saved_keywords Lists keywords saved to a project, with whatever metrics have been cached for them (search volume, difficulty, CPC) and their tags.
classify_keyword_intent Classify 1-200 keywords’ search intent from their wording: informational, navigational, commercial, transactional, or unknown.
get_keyword_potential Parent Topic and Traffic Potential for one keyword, built from real SERP overlap across a BOUNDED set (up to 5) of related keywords — not a full keyword-to-URL reverse index, which this codebase’s free stack does not have.
get_keyword_serp_overview Per-keyword SERP overview: a fresh live SERP snapshot for the keyword, PLUS — when this exact keyword happens to already be tracked in this project’s rank tracking — its historical position trend and SERP volatility, read straight from the SAME rank-tracking services (get_rank_keyword_history/get_rank_volatility_index) already use.
get_keyword_strategy Keyword Strategy Builder: a volume -> cluster -> page -> brief pipeline over 1-500 pasted keywords, composed entirely from existing pieces — the same bulk keyword lookup, the same shared-phrase clustering engine the saved-keyword Topic Clusters feature and get_topic_research both already use, a text-match against the project’s own crawled pages, and a BOUNDED number of AI-gateway content-brief calls (one per cluster among the top few by measured volume, gated by the shared AI-gateway budget).
get_topic_research Content ideas for a seed keyword, composed from three sources this codebase already fetches for other features: the SERP for the seed (titles of pages already ranking for it), PAA-style questions (real autocomplete completions reframed as questions), and autocomplete keyword suggestions.
get_keyword_list_share_of_voice Share of Voice across a saved keyword list: the project’s own domain plus up to 3 competitor domains, scored over a saved-keyword tag (“a saved keyword list” in this codebase IS a saved-keyword tag — omit tagId/tagName to mean every saved keyword in the project).
get_domain_overview Returns a high-level view of a domain’s organic footprint: estimated organic traffic, organic keyword count, and a 0-100 domain authority score.
get_domain_batch Domain batch analysis: one authority row per domain, up to 100 at once.
get_domain_authority_history Domain-authority history: the stored trend of dated authority snapshots for one project+domain, oldest first.
capture_domain_authority_snapshot Capture a domain-authority snapshot now: calls the same free resolver get_domain_overview already uses and records today’s reading, so get_domain_authority_history has a trend to read back.
find_serp_competitors Compares domains competing in search results for a supplied keyword set.
get_keyword_gap Compares the project’s own domain against up to 3 competitor domains and classifies every keyword a competitor ranks for as missing / behind / tied / ahead / unknown.
list_competitor_monitors Competitor page change detection: the specific competitor URLs monitored for a project, with lastCheckedAt (null until the first scheduled check reaches it).
add_competitor_monitor Start monitoring one competitor page for changes: title/meta, a real line-level content diff (added/removed/unchanged line counts — never a fabricated similarity score), outbound links, and structured-data types.
remove_competitor_monitor Stops monitoring one competitor URL.
get_competitor_monitor_changes Timeline of DETECTED changes for one monitored competitor URL, newest first — a check that found nothing does not appear here.
get_rank_tracker Read-only access to rank tracker configs and their latest results.
add_rank_tracking_keywords Adds keywords to an existing rank tracker config.
get_rank_config_trend Per-run keyword-position-distribution buckets for a tracker, oldest first — how many tracked keywords sit in the top 3, 4-10, 11-20, or outside the top 20, per check run.
get_rank_movers Newcomers and fast climbers for a tracker’s OWN domain, over a window.
get_rank_keyword_history Per-keyword position series over time, oldest first — the same series the app’s SERP-history chart draws for one tracked keyword.
get_rank_volatility_index SERP volatility index across recent runs — how much this tracker’s own positions churned run over run, derived entirely from already-stored history (no new SERP calls).
get_rank_ai_overview_trend AI Overview presence trend across a tracker’s keywords, oldest first — what share of tracked keywords showed Google’s AI Overview in the SERP, per check run, and how that has moved over time.
list_rank_annotations Chart notes on a rank tracker’s own timeline — ‘deployed new title tags’, ‘algorithm update’ — oldest first.
add_rank_annotation Adds a chart note to a rank tracker’s own timeline.
remove_rank_annotation Removes a chart note from a rank tracker’s own timeline.
list_rank_cannibalisation Tracked keywords whose latest ranking URL is not the target URL you declared for them (see set_rank_keyword_target_url).
set_rank_keyword_target_url Sets or clears the URL you intend to rank for a tracked keyword.
list_rank_keyword_tags Lists the tags in use on one rank tracker, plus the project’s whole tag vocabulary.
update_rank_keyword_tag Attaches or detaches ONE tag across a selection of tracked keywords (up to 500 keyword IDs per call).
get_brave_search_rank_check Checks where a project’s domain (or an explicit targetDomain) ranks in REAL Brave Search results for one keyword.
create_rank_tracker Creates a rank tracker config (domain + market + devices + schedule) for a project and returns its configId.
list_rank_tracking_keywords Lists the keywords tracked by ONE rank tracker: { keywords, totalCount, page, pageSize }, each row { id, configId, keyword, searchVolume, keywordDifficulty, cpc, metricsFetchedAt, createdAt }.
remove_rank_tracking_keywords Removes keywords from a rank tracker by their tracking-keyword IDs (from list_rank_tracking_keywords).
start_site_audit Starts a MisarSEO site crawl/audit from startUrl.
get_site_audit_status Progress of a site audit started by start_site_audit: { status, pagesCrawled, pagesTotal, lighthouseTotal, lighthouseCompleted, lighthouseFailed, currentPhase, startedAt, completedAt }.
get_audit_comparison Compare a site audit against an earlier one: which issues are new, which were fixed, how many persist, and the health-score delta.
get_audit_core_web_vitals Core Web Vitals report: LCP/INP/CLS per page/strategy this audit already ran Lighthouse against, classified against Google’s own published thresholds.
get_audit_https_report HTTPS Report: percentage of pages secure, mixed-content and insecure-link counts, homepage HTTPS-path status, and HTTP URLs in an HTTPS site’s sitemap — for a project’s latest completed crawl (or a named earlier one).
get_audit_internal_links Internal Link Report: outbound/inbound internal link counts per page, orphan pages, dead ends, and click-depth distribution for a project’s latest completed crawl (or a named earlier one).
get_audit_structured_data Structured Data Report: pages grouped by schema.org @type, which pages have none, and which pages carry an unparseable JSON-LD block — for a project’s latest completed crawl (or a named earlier one).
get_search_console_performance Query the connected Search Console property’s Search Analytics: clicks, impressions, CTR, and average position by query/page/country/device/date.
inspect_urls Run Google Search Console’s URL Inspection on up to 10 URLs of the connected property: index/coverage state, last crawl time, Google-selected vs declared canonical, and mobile/rich-results verdicts.
get_search_console_coverage MisarSEO’s own index-coverage report for the connected property: which URLs are indexed, excluded, or errored, and why.
get_search_console_hourly_performance MisarSEO’s own retained HOURLY Search Console totals for the connected property — the hourly counterpart to get_search_console_performance’s daily archive.
get_search_console_sitemaps Search Console sitemaps.list/sitemaps.get: every sitemap submitted for the connected property and its processing status (pending, last downloaded, warning/error counts, per-content-type submitted counts), or one named sitemap.
get_gsc_ctr_by_position CTR by ranking position: the site’s own historical Search Console clicks/impressions bucketed by position (1-3, 4-10, 11-20, 21+ — mirroring this codebase’s existing rank-tracking position-distribution buckets), with the REAL clicks-weighted CTR this project achieved at each bucket.
get_gsc_anonymous_queries Anonymized-query estimate: Search Console omits some rare queries entirely from a query-dimensioned response to protect searcher privacy (Google’s own documented behaviour, not this codebase’s assumption).
get_cannibalisation_report Finds the queries where the project’s connected Search Console property competes with itself: two or more of its own pages drawing impressions for the same query, splitting that query’s clicks, click signals and ranking history across URLs.
get_content_decay_report Finds pages whose clicks declined by a meaningful amount between two adjacent windows, read entirely from MisarSEO’s own archived Search Console history (the top-200-per-day per-page archive the nightly sync fills in).
get_backlinks_overview Returns a backlinks profile summary (total backlinks, referring domains, referring pages, rank) plus the top referring domains by backlink count.
get_link_intersect Finds the domains that link to 2–4 of the project’s competitors but NOT to the project itself.
list_disavow_entries Disavow file management: every disavow entry for a project, oldest first.
add_disavow_entry Disavow file management: mark one URL or domain for disavowal.
remove_disavow_entry Disavow file management: remove one disavow entry by id (from list_disavow_entries).
export_disavow_file Disavow file management: export a project’s disavow entries as the exact .txt content Google’s disavow tool accepts (support.google.com/webmasters/answer/2648487) — one bare URL per line to disavow that exact page, or domain: to disavow an entire domain and its subdomains.
get_backlink_anchors Anchor-text distribution for a domain or URL, one page at a time: which anchor texts link to it, with backlinks, referring domains, referring pages and dofollow links per anchor.
get_content_optimizer_report On-page recommendations and an AI content grade for one page, benchmarked against the pages currently ranking for its target keyword, built together — one AI-gateway call produces both the grade and the recommendations).
get_content_page_metrics Lightweight on-page metrics for one arbitrary URL — the content optimizer’s keyword-free, AI-free sibling.
run_brand_radar_scan Scans real AI-answer engines and search citations for brand mentions, Share of Voice against named competitors, and cited sources.
get_brand_radar_scan_status Status of a Brand Radar scan started by run_brand_radar_scan, by its jobId.
explore_ai_prompt Runs one prompt through up to 4 model personas and returns each answer verbatim, with real citations when webSearch is on.
research_ai_prompts Turns a seed topic into candidate prompts worth tracking (real Google/Bing autocomplete completions reframed as questions) plus observed mention-rate signals from this project’s own already-tracked prompts.
compare_ai_competitor_positioning Runs ONE prompt through the explore_ai_prompt pipeline and checks a brand plus its named competitors against the SAME real per-model answers for mentions and citations.
get_direct_vendor_answers Runs a prompt against up to 5 REAL, directly-verified vendor models — you_com (You.com Answer API), deepseek, grok (xAI), meta_ai (Meta’s Model API) and minimax — each called through that vendor’s own public API.
get_brand_scan_trend The recorded AI-visibility history for one brand or domain: mentions, cited sources and competitors seen at each past Brand Radar scan, oldest first.
list_brand_monitors Lists a project’s brand monitors — targets re-scanned by Brand Radar on a schedule rather than only when run_brand_radar_scan is called.
upsert_brand_monitor Creates or replaces a brand monitor — the whole schedule and competitor list, not single fields.
delete_brand_monitor Deletes a brand monitor, stopping its scheduled scans.
list_tracked_prompts Lists a project’s tracked prompts — prompts re-run through explore_ai_prompt’s real answer pipeline on a schedule and diffed against the previous check for mention/citation drops.
upsert_tracked_prompt Creates or replaces a tracked prompt — the whole model list and schedule, not single fields.
delete_tracked_prompt Deletes a tracked prompt, stopping its scheduled checks.
get_tracked_prompt_trend Observed history for one tracked prompt — one point per real scheduled check (mentionedByCount/citedByCount out of successfulModelCount), oldest first.
get_unlinked_mentions_report Unlinked brand mentions: searches the free SERP backend for brand as a QUERY, then checks whether each result page already links to trackedDomain.
get_media_monitoring_report Media Monitoring: get_unlinked_mentions_report’s candidates filtered to known social/forum/news platform domains, optionally merged with the citation-platform breakdown from a Prompt Explorer scan you already ran for the same brand.
search_local_businesses Searches local business listings near a coordinate.
get_google_business_questions Fetches question-and-answer rows for one business keyword.
run_local_nap_audit Compare a claimed business Name/Address/Phone against listings the free OpenStreetMap business search finds near the claimed location.
get_local_pack_rank Read-only access to local pack rank check configs and their latest check.
get_local_rank_grid Read-only access to geo-grid rank-tracking configs and their latest run.
get_gbp_profile Read-only Google Business Profile listing profile for the project’s linked location: title, categories, phone, website, description, hours-period count, and which of Google’s attribute taxonomy entries are set.
get_gbp_performance Read-only Business Profile Performance API metrics for the project’s linked location over an inclusive date range.
get_gbp_reviews Read-only reviews for the project’s linked Google Business Profile location, one Google-paginated page at a time…
reply_to_gbp_review Reply to (or overwrite the reply on) one review, by reviewId from get_gbp_reviews.
get_gbp_optimization Completeness/quality score and AI-grounded optimization recommendations for the project’s linked Google Business Profile location.
list_gbp_locations Every Google Business Profile account and location this deployment’s operator credential can manage — the picker data for set_gbp_connection.
get_gbp_connection The project’s currently linked Google Business Profile location, or { connection: null } when none is linked yet.
set_gbp_connection Links (or repoints) a project to a Google Business Profile location.
disconnect_gbp Removes the project’s link to its Google Business Profile location.
list_gbp_posts Posts published on the project’s linked Google Business Profile location.
create_gbp_post Publishes a new “What’s New” post on the linked Google Business Profile location.
delete_gbp_review_reply Removes the owner’s published reply from one Google review (reviewId from get_gbp_reviews).
create_local_pack_rank_config Creates a local pack rank check config: where businessName sits in Google’s local pack for one keyword at one location.
delete_local_pack_rank_config Deletes a local pack rank check config, INCLUDING its whole check history.
run_local_pack_rank_check Runs a local pack rank check now — one live scrape of Google’s public local search results (not the paid Places API).
create_local_rank_grid_config Creates a geo-grid rank-tracking config: a 3x3 grid of points around a centre coordinate, checking ORGANIC rank for one keyword and domain from each point.
delete_local_rank_grid_config Deletes a geo-grid rank-tracking config, INCLUDING its whole run and point history.
run_local_rank_grid Runs a geo-grid rank check now — up to 9 live SERP calls plus up to 9 reverse-geocode calls.
get_web_analytics_summary Sessions/pageviews/bounce-rate time series for a project’s own tracking snippet.
get_web_analytics_top_pages Top pages by view count, plus separate entry-page and exit-page breakdowns, for a project’s own tracking snippet.
get_web_analytics_sources Referrer/channel/UTM breakdown for a project’s own tracking snippet, including AI referral attribution: aiReferral.bySource breaks the ai-referral channel out by assistant (chatgpt/claude/perplexity/gemini/copilot/you/poe).
get_web_analytics_devices Device/browser/OS breakdown for a project’s own tracking snippet.
list_ga4_properties Every GA4 property the caller’s connected Google Analytics grant can access — the data source for picking which property to bind to a project (see set_ga4_property).
set_ga4_property Link (or repoint) a project’s Google Analytics property.
disconnect_ga4 Unlink a project’s Google Analytics property.
get_ga4_performance_summary MisarSEO’s own retained daily Google Analytics totals for the connected property: sessions, activeUsers, newUsers, engagementRate, bounceRate, conversions, screenPageViews.
get_ga4_channel_breakdown MisarSEO’s own retained daily GA4 channel breakdown (sessionDefaultChannelGroup) for the connected property — isolating Organic Search from every other acquisition channel, the SEO-relevant signal GA4 adds beyond Search Console’s own click/impression data.
get_ga4_landing_pages MisarSEO’s own retained daily GA4 landing-page breakdown for the connected property: sessions/engagement/conversions per landing page, ordered by sessions descending within each day.
log_analyzer_list_uploads A project’s server-log uploads and their parse status — the Log File Analyzer / Bot Analytics feature.
log_analyzer_upload Upload a server access log for background parsing (Log File Analyzer / Bot Analytics).
log_analyzer_daily_summary Bot hit counts per (day, bot category, bot label, status code, content-type bucket) across every log upload in the date range — powers a time-series, status-code, or content-type view of bot traffic.
log_analyzer_top_paths The paths bots hit most, per (bot category, bot label, path, status code) — the busiest-paths table of Bot Analytics.
list_link_prospects Link Building Tool: every prospect for a project, newest first, each enriched with a LIVE domain-authority read (never cached, never an invented score).
add_link_prospect Link Building Tool: add one prospect domain/page to a project’s list.
update_link_prospect Link Building Tool: edit a prospect’s editable fields (url/label/targetUrl/contact fields) — only fields given here are changed.
update_link_prospect_status Link Building Tool: move a prospect through the outreach-status pipeline — prospected -> contacted -> replied -> link_placed/declined/no_response (‘declined’/‘no_response’ can loop back to ‘contacted’ for a re-approach).
remove_link_prospect Link Building Tool: remove one prospect by id (from list_link_prospects), along with its activity log.
list_link_prospect_activity Link Building Tool: a prospect’s activity log — every manually-typed note plus every auto-recorded status change, newest first.
add_link_prospect_note Link Building Tool: add one manual activity-log entry to a prospect, e.g.
import_link_prospects_csv Link Building Tool: bulk-add up to 500 prospects at once from already-parsed rows (each with at least a domain).
export_link_prospects_csv Link Building Tool: export a project’s prospect list as CSV text.
get_bing_site_overview Bing’s own view of a project’s domain: daily search performance (clicks/impressions), per-query stats, own-site inbound links, remaining URL Submission quota, crawl diagnostics (crawl stats, crawl issues, crawl settings), submitted feeds and query-parameter settings — read straight from the Bing Webmaster API.
get_bing_backlinks GetLinkCounts: own-site inbound-link page list for a project’s matched Bing site — the focused, single-call form of the backlinks field already embedded in get_bing_site_overview.
get_bing_url_links GetUrlLinks: the inbound links (anchor text + source URL) pointing at one specific page on a project’s matched Bing site, read straight from the Bing Webmaster API.
get_bing_url_info GetUrlInfo + optionally GetChildrenUrlInfo: index/crawl metadata (anchor count, discovery/last-crawled dates, HTTP status, whether Bing considers it a page) for one URL on a project’s matched Bing site, and, when includeChildren is set, the same metadata for every URL Bing discovered under it.
get_bing_keyword_research GetKeyword + GetKeywordStats + GetRelatedKeywords: real Bing impression data for a query, its recent weekly history, and related queries — read straight from the Bing Webmaster API.
get_bing_detail_stats GetQueryTrafficStats + GetPageStats + GetPageQueryStats + GetQueryPageStats + GetQueryPageDetailStats: per-query and per-page search-performance detail for a project’s matched Bing site.
get_bing_feed_details GetFeedDetails: the same Feed shape as one entry from Bing’s GetFeeds list, for one specific feed URL on a project’s matched site.
submit_bing_content SubmitContent: pushes a page’s full content (a base64-encoded HTTP message) directly to Bing for a project’s matched site, bypassing a crawl.
submit_bing_feed SubmitFeed: submits a sitemap/feed URL to Bing for a project’s matched site.
save_bing_crawl_settings SaveCrawlSettings: overwrites a project’s matched Bing site’s crawl-rate/AJAX-crawling config.
update_bing_blocked_url AddBlockedUrl + RemoveBlockedUrl: tell Bing to stop, or resume, showing one URL in search results for a project’s matched site.
update_bing_query_parameter AddQueryParameter + RemoveQueryParameter + EnableDisableQueryParameter: add, remove, or toggle one query-string parameter Bing is told to ignore when canonicalizing URLs for a project’s matched site.
list_bing_sites Every site the caller’s connected Bing Webmaster OAuth grant can access — the data source for picking which site to bind to a project (see set_bing_site).
set_bing_site Link (or repoint) a project’s Bing Webmaster site.
disconnect_bing Unlink a project’s Bing Webmaster site.
submit_indexnow Submit up to 10,000 of a project’s own URLs to IndexNow (relayed to Bing, Yandex, Seznam and Naver) so they are re-crawled without waiting for the next scheduled crawl.
get_yandex_site_overview Yandex’s own view of a project’s domain: the indexing summary — including the Site Quality Index (SQI), a third independent authority signal alongside OpenPageRank and Tranco — and popular search queries, read straight from the Yandex Webmaster API.
reindex_yandex_url Asks Yandex Webmaster to re-crawl one specific URL on a project’s matched host.
list_yandex_hosts Every host the caller’s connected Yandex Webmaster OAuth grant can access — the data source for picking which host to bind to a project (see set_yandex_host).
set_yandex_host Link (or repoint) a project’s Yandex Webmaster host.
disconnect_yandex Unlink a project’s Yandex Webmaster host.
get_baidu_connection The project’s current Baidu Webmaster (百度搜索资源平台) connection, plus today’s push-quota usage.
set_baidu_connection Set (or replace) a project’s Baidu Webmaster site + push token.
disconnect_baidu Remove a project’s Baidu Webmaster connection.
submit_baidu_urls Push a project’s own URLs to Baidu (data.zz.baidu.com/urls) for expedited crawling.
list_ahrefs_projects Every Rank Tracker AND Site Audit project the caller’s connected Ahrefs Connect grant can access — the data source for picking which project(s) to bind to a MisarSEO project (see set_ahrefs_project).
set_ahrefs_project Bind (or repoint) ONE of a project’s two independent Ahrefs project types — projectType selects rank_tracker or site_audit.
disconnect_ahrefs Full disconnect: drops BOTH the Rank Tracker and Site Audit bindings and the stored grant.
list_patches Patches: every title/metaDescription/canonical/redirect fix drafted for a project, newest first, one active row per (page, field).
draft_patch Patches: drafts a title/metaDescription/canonical/redirect fix for one page’s finding.
batch_draft_patches Patches: AI-drafts title AND metaDescription for up to 10 pages in one call.
publish_patch Patches: makes a drafted fix live — visible in the project’s public manifest, which the embedded snippet (or, for redirects, an operator-deployed Worker) reads from the visitor’s browser.
revert_patch Patches: stops serving a published fix — instant, since publishing only ever controlled visibility in the public manifest, never the audited site’s own origin content.
list_patch_auto_publish_rules Patches: every issue type this project auto-publishes a freshly AI-drafted patch for, immediately on draft (capped at 20 auto-publishes per project per day).
enable_patch_auto_publish Patches: from now on, a freshly AI-drafted patch for this issue type publishes immediately instead of waiting for a manual publish_patch call — capped at 20 auto-publishes per project per day.
disable_patch_auto_publish Patches: stops auto-publishing freshly AI-drafted patches for this issue type — future drafts wait for a manual publish_patch call again.
list_report_definitions Lists a project’s report definitions, each carrying widgetCount.
create_report_definition Creates a report definition with a chosen set of widgets, in print order.
get_report_definition Gets a report definition’s name and ordered widget types.
rename_report_definition Renames a report definition.
delete_report_definition Deletes a report definition.
set_report_widgets Replaces a report definition’s whole widget list, in print order.
render_report_definition Renders a report definition — fetches ONLY its selected widgets, not a fixed set.
get_report_schedule Gets a report definition’s schedule, if it has one.
upsert_report_schedule Creates or replaces a report definition’s schedule — the whole interval + recipient list, not individual fields.
delete_report_schedule Deletes a report definition’s schedule.
list_portfolios Lists the caller organization’s portfolios, each carrying projectCount.
create_portfolio Creates a portfolio.
get_portfolio One card per member project (same shape get_dashboard returns — no GSC, no backlinks, see its own description for why) plus aggregate totals.
rename_portfolio Renames a portfolio.
delete_portfolio Deletes a portfolio.
add_portfolio_projects Adds projects to a portfolio.
remove_portfolio_projects Removes projects from a portfolio.
get_usage Plan tier, credits remaining, and every quota/count dimension tracked against it for the caller’s organization.

Prompts

Reusable workflows your client exposes as slash-commands.

Prompt Description
keyword_research_plan Research a seed topic, qualify the keywords by intent and potential, and save a shortlist.
competitor_gap_analysis Find the keywords and linking domains competitors have that the project does not.
site_audit_review Turn the latest site audit into a prioritised technical fix list.
search_console_opportunities Mine Search Console for striking-distance queries, cannibalisation and decaying pages.
ai_visibility_check Check how a brand shows up in AI answers and where it is mentioned without a link.
weekly_rank_report Produce a stakeholder-ready weekly rank-tracking summary.

Resources

Read-only context an agent can attach without spending a tool call.

URI Description
misarseo://projects The organization’s active MisarSEO projects with their ids and domains.
misarseo://dashboard One card per project: latest audit health, rank-tracker status and trailing-7-day web-analytics sessions.
misarseo://account/usage Plan tier, credits remaining, and each quota (keyword lookups, audits, Brand Radar scans, log uploads) with what is used.

Agent skills

Bundled in skills/ — guidance an agent loads when a task matches.

Skill Use when
ai-search-visibility Measure how a brand appears in AI answers and AI-search citations with MisarSEO — Brand Radar share of voice, prompt exploration, prompt research and unlinked mentions. Use for “are we showing up in ChatGPT”, “AI search visibility”, “GEO”, “LLM mentions”, “AI Overviews”, or brand-mention questions.
competitor-gap-analysis Compare a MisarSEO project against competitors — keyword gap, SERP competitors, link intersect and competitor page-change monitoring. Use for “who are my competitors”, “what keywords am I missing”, “where do competitors get links”, or “watch this competitor’s page”.
keyword-research Research, qualify and save keywords in MisarSEO — volume, difficulty, intent, traffic potential and topic clusters. Use for “find keywords for…”, “what should we target”, “keyword ideas”, “is this keyword worth it”, or building a content plan from a seed topic.
rank-tracking-report Report on and organise MisarSEO rank tracking — positions, visibility trend, movers, volatility, wrong-page rankings, chart notes and keyword tags. Use for “how are my rankings”, “weekly rank report”, “what moved”, “track these keywords”, or “which page ranks for this keyword”.
search-console-insights Turn Google Search Console data in MisarSEO into actions — striking-distance queries, keyword cannibalisation, decaying pages, real CTR by position and indexing gaps. Use for “what’s my search traffic doing”, “quick SEO wins”, “why did traffic drop”, “pages competing with each other”, or anything mentioning Search Console / GSC.
technical-site-audit Read a MisarSEO site audit and turn it into a ranked technical fix list — HTTPS, internal links, structured data, Core Web Vitals, indexing — and optionally ship title/meta fixes as patches. Use for “audit my site”, “technical SEO issues”, “why isn’t this page indexed”, “orphan pages”, or “fix my titles”.

Safety

Destructive and irreversible actions are annotated (destructiveHint) so clients can prompt before running them. The skills instruct agents to confirm before anything that sends mail, publishes content, or is otherwise visible to other people.

Discovery (initialize, tools/list, prompts/list, resources/list) never requires credentials, so registries can index the server without one. Every action does.


MIT © Misar.AI

View this README on GitHub

Install

npx -y @misarseo/mcp@latest

Configuration

{ "mcpServers": { "misarseo": { "command": "npx", "args": ["-y", "@misarseo/mcp@latest"], "env": { "MISARSEO_API_KEY": "mseo_your_key_here" } } } }