77trust / 100

MisarSEO MCP Server

by misar.io in Developer tools

MCP serverPassing, checked 8 h ago

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

https://api.misar.io/seo/mcp
Tools
180
open to any client
Uptime
100%
last 30 days
Response time
966 ms
1.2 s slowest 5%
Last check
Passed
8 h ago, next any minute now

Scan it nowHow to connect

Reliability

All checks passedSome failedAll failedNot checked

Status and outage history · Atom feed · Watch with other listings

How to connect

Add it to any MCP client that supports remote servers.

{
  "mcpServers": {
    "misarseo-mcp-server": {
      "type": "http",
      "url": "https://api.misar.io/seo/mcp"
    }
  }
}

180 tools

  • list_projects

    Lists the active projects in the user's organization. FREE — database only, charges no credits. Use this whenever you need a `projectId` for another MisarSEO tool. Returns `{id, name, domain, url}` per project; pass the `id` value as `projectId`. `domain` is null for a project…

  • 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. FREE: database only. No SEO data provider is called and no credits are spent — GSC and backlinks are deliberately excluded from this…

  • research_keywords

    Research keyword data (search volume, difficulty, CPC, related ideas) for 1-5 seed keywords in one call — one research run per seed. Returns `results`, one entry per seed with `ok` — a single bad seed won't fail the batch. CHARGES CREDITS ON THE PAID DATA PROVIDER: per seed…

  • save_keywords

    Save keywords to a project's saved-keywords list. FREE — database only, charges no credits. Idempotent: re-saving an existing keyword is a no-op. If tags are provided, missing tags may be created. Tags are appended to whatever tags a keyword already carries. Ask the user for…

  • list_saved_keywords

    Lists keywords saved to a project, with whatever metrics have been cached for them (search volume, difficulty, CPC) and their tags. FREE — reads MisarSEO's own database, runs no provider lookup and charges no credits. Filter by keyword text with `search`; page through with…

  • classify_keyword_intent

    Classify 1-200 keywords' search intent from their wording: informational, navigational, commercial, transactional, or unknown. Uses the SAME wording heuristic keyword research already applies as its free-tier fallback, made directly callable for a keyword list with no…

  • 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. Parent Topic is the related keyword whose SERP shares…

  • 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_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…

  • 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…

  • 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). Reuses the…

  • 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. Use this first for domain research. `backlinks` and `referringDomains` are ALWAYS null on this tool — no data provider feeds them…

  • get_domain_batch

    Domain batch analysis: one authority row per domain, up to 100 at once. FREE — no paid provider call, unlike get_domain_overview. `organicTraffic`, `organicKeywords`, `backlinks` and `referringDomains` are ALWAYS null on every row — batch mode never attempts the per-domain paid…

  • get_domain_authority_history

    Domain-authority history: the stored trend of dated authority snapshots for one project+domain, oldest first. FREE (no credits) — reads back snapshots already captured, no provider call. Empty until at least one snapshot exists: get_domain_overview auto-captures one whenever…

  • 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. FREE (no credits), but this is a MUTATION — idempotent per UTC day, so calling it twice…

  • find_serp_competitors

    Compares domains competing in search results for a supplied keyword set. Useful for market and search-intelligence reports; not radius-based local SEO. The inverse of get_keyword_gap, which asks what one competitor ranks for that we do not. CHARGES CREDITS ON THE PAID DATA…

  • 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. The inverse of find_serp_competitors, which asks who competes for a keyword set. CHARGES CREDITS: one…

  • 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). FREE — database only, no credits spent. Use get_competitor_monitor_changes for the actual detected-change timeline of…

  • 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. Checked once a day; the first snapshot is captured on the NEXT…

  • remove_competitor_monitor

    Stops monitoring one competitor URL. Its historical snapshots and detected changes are deleted along with it (cascading delete) — unlike rank tracking's competitor removal, there is no separate archive kept.

  • get_competitor_monitor_changes

    Timeline of DETECTED changes for one monitored competitor URL, newest first — a check that found nothing does not appear here. Each entry's summary is a real diff: line-level content added/removed/unchanged counts with a short sample (never a fabricated similarity score), plus…

  • get_rank_tracker

    Read-only access to rank tracker configs and their latest results. With `trackerId`, returns the config plus the latest snapshot per keyword. Without it, lists all trackers in the project. FREE — reads stored MisarSEO state only, runs no SERP query and charges no credits. To…

  • add_rank_tracking_keywords

    Adds keywords to an existing rank tracker config. Returns `{ added, addedIds }` — `added` counts only genuinely new keywords; anything already tracked for this config is silently skipped, so `added` can legitimately be lower than the number of keywords sent. FREE: database only…

  • 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. Use it to answer 'is this domain's visibility trending up or down' without re-checking anything. FREE…

  • get_rank_movers

    Newcomers and fast climbers for a tracker's OWN domain, over a window. `newlyRanking` is keywords that started ranking during the window (no earlier position, or an earlier position of null). `fastClimbers` is keywords that ranked at both ends of the window and gained at least…

  • 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. FREE: database only. No SEO data provider is called and no credits are spent. A `position` of `null` means checked but not found within that check's…

  • 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). FREE: database only, no SEO data provider is called and no credits are spent. Modeled on the one step…

  • 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. FREE: database only, no SEO data provider is called and no credits are spent. Reuses…

  • list_rank_annotations

    Chart notes on a rank tracker's own timeline — 'deployed new title tags', 'algorithm update' — oldest first. FREE: database only, no SEO data provider is called and no credits are spent. Config-level, not per-keyword or per-device: a deploy or algorithm change is a fact about…

  • add_rank_annotation

    Adds a chart note to a rank tracker's own timeline. FREE: database only, no SEO data provider is called and no credits are spent. Config-level, not per-keyword or per-device. A config can hold at most 100 notes.

  • remove_rank_annotation

    Removes a chart note from a rank tracker's own timeline. FREE: database only, no SEO data provider is called and no credits are spent. Succeeds whether or not `id` matched an existing note.

  • list_rank_cannibalisation

    Tracked keywords whose latest ranking URL is not the target URL you declared for them (see set_rank_keyword_target_url). FREE: database only, no SEO data provider is called and no credits are spent. NOT the same detector as get_cannibalisation_report (Search Console-based)…

  • set_rank_keyword_target_url

    Sets or clears the URL you intend to rank for a tracked keyword. Feeds list_rank_cannibalisation — set this for the keywords you care about, then check for a mismatch after the next run. FREE: database only, no SEO data provider is called and no credits are spent.

  • list_rank_keyword_tags

    Lists the tags in use on one rank tracker, plus the project's whole tag vocabulary. Use it to find tag IDs before calling update_rank_keyword_tag, and to see how a tracker with hundreds of keywords is already organised. FREE: database only. No SEO data provider is called and no…

  • update_rank_keyword_tag

    Attaches or detaches ONE tag across a selection of tracked keywords (up to 500 keyword IDs per call). One tag per call — applying three tags takes three calls. FREE: database only. No SEO data provider is called and no credits are spent. The tag is the project's EXISTING…

  • get_brave_search_rank_check

    Checks where a project's domain (or an explicit targetDomain) ranks in REAL Brave Search results for one keyword. Brave has run its own independent crawler and index since 2023 — a genuinely separate, separately-licensed data source, distinct from this server's free…

  • create_rank_tracker

    Creates a rank tracker config (domain + market + devices + schedule) for a project and returns its configId. Next, add keywords with add_rank_tracking_keywords. Positions are collected by the SCHEDULED check ('daily' or 'weekly'; 'manual' means never on a schedule) and read with…

  • 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 }`. It returns NO positions and runs no check — read positions with get_rank_tracker…

  • remove_rank_tracking_keywords

    Removes keywords from a rank tracker by their tracking-keyword IDs (from list_rank_tracking_keywords). The keywords stop being checked; their past position snapshots are deliberately kept, so history survives. FREE: database only.

  • start_site_audit

    Starts a MisarSEO site crawl/audit from startUrl. Returns `{ jobId, auditId }` (the same id twice) with HTTP 202; the crawl then runs in the background — poll it with get_site_audit_status. FREE of SEO credits, but it CONSUMES ONE of the organization's monthly audits from its…

Security scan

1 finding

  • Unusually long description in tool:get_link_intersect
    get_link_intersect (get link intersect) Finds the domains that link to 2–4 of th…

Recent checks

WhenResultHTTPTime
8 h agoPassed2001.2 s
17 h agoPassed200454 ms
27 h agoPassed200654 ms
36 h agoPassed200761 ms
46 h agoPassed2001.0 s
Show 6 older checks
2 days agoPassed2001.0 s
3 days agoPassed200966 ms
3 days agoPassed200984 ms
3 days agoPassed2001.0 s
4 days agoPassed200716 ms
4 days agoPassed200906 ms