rankparse-mcp

SEO MCP server — backlinks, domain authority, tech stack, and 18+ tools via Common Crawl.

사용해야 할까요

품질 및 안전성

B
설명 품질
96%
스키마 완전성
85%
이름 품질
95%
오염 위험
60%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (6)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'get_keyword_rank_history' description contains placeholder textget_keyword_rank_history에서
  • LOWTool 'get_page_performance' description lacks action verbget_page_performance에서
  • LOWTool 'get_site_explorer' description lacks action verbget_site_explorer에서
  • LOWTool description contains role marker that could confuse chat modelsoutreach_add_contacts에서
  • INFOTool description contains placeholder or incomplete textget_keyword_rank_history에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~14,141토큰 (도구 정의)
~1.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 11.05%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "rankparse-mcp": {
      "url": "https://mcp.rankparse.com/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.rankparse.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (73)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢get_backlinks(domain, limit, score, sort, from_domain, ...)

Get backlinks for a domain. Default sort=importance returns aggregated referrer rows; sort=recent returns URL-level freshest links. Optional filters: from_domain, link_type, score.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    },
    "score": {
      "type": "boolean"
    },
    "sort": {
      "type": "string",
      "enum": [
        "importance",
        "recent"
      ]
    },
    "from_domain": {
      "type": "string"
    },
    "link_type": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_referring_domains(domain, limit, score)

Get unique domains linking to a domain

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    },
    "score": {
      "type": "boolean"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_outbound_links(domain, limit)

Get domains that a domain links out to

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_domain_authority(domain)

Get authority score for a domain

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_domain_rank(domain)

Get inbound edge count and linking domain stats

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_anchor_text(domain, limit)

Get anchor text distribution for a domain

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_top_pages(domain, limit)

Get most-linked pages for a domain

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_domain_overlap(domains, limit)

Find domains linking to all queried domains

입력 스키마

{
  "type": "object",
  "properties": {
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 5
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domains"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_link_intersect(domain_a, domain_b)

Find domains linking to A but not B

입력 스키마

{
  "type": "object",
  "properties": {
    "domain_a": {
      "type": "string"
    },
    "domain_b": {
      "type": "string"
    }
  },
  "required": [
    "domain_a",
    "domain_b"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_similar_domains(domain)

Find domains with similar link profiles, useful for competitor discovery. May return partial results when the query fan-out hits time budget.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_competitor_gap(domain, vs, limit)

Find domains linking to a competitor but not to you: ranked link-building prospects. Under time budget the response may come back with partial=true and scored=false, meaning the results are the raw gap set without domain-authority ranking; retrying the same request usually returns a fully scored answer.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "vs": {
      "type": "string"
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 200
    }
  },
  "required": [
    "domain",
    "vs"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_link_audit(domain)

Audit a domain's backlink profile: health score, risk flags, link quality breakdown, anchor text profile, top and risky backlinks, and outbound link summary. Scores are derived from a sample of the 250 most recent backlinks, not the full profile.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sitemap(domain, limit)

Discover and parse a domain's sitemap. Returns URLs with lastmod, changefreq, and priority

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_crawl_history(domain)

Get first/last seen dates and total snapshot count for a domain (source: Wayback Machine)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_page_seo(url)

Full real-time SEO audit for a URL: title/description with length checks, canonical, robots meta, OG tags, Twitter cards, JSON-LD, hreflang, headings, images missing alt, link counts, word count

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_page_performance(url, strategy)

Google PageSpeed Insights report for a URL: Lighthouse performance/accessibility/SEO scores and Core Web Vitals (LCP, CLS, INP, FCP, TTFB), with lab and field (CrUX) data. Defaults to mobile; pass strategy=desktop for the desktop profile. Subject to a per-user daily cap (50/day) and a service-wide daily cap; successful responses are cached for 24h.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "strategy": {
      "type": "string",
      "enum": [
        "mobile",
        "desktop"
      ]
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_tech_stack(domain)

Real-time technology detection for a domain: frameworks, CMS, analytics, CDN, hosting, e-commerce, payments, and more (50+ technologies)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_site_health(domain)

Real-time site health check: HTTPS enforcement, HSTS, www redirect behavior, key URL availability and response times, security headers (CSP, X-Frame-Options, HSTS), robots.txt analysis

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_schema_markup(url)

Extract schema.org JSON-LD structured data from a URL: every entity found (including ones nested in @graph), their types, and any malformed blocks

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_internal_links(domain, limit)

Get internal link structure for a domain (v1 stub)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_link_velocity(domain)

Get rate of new/lost links over time (v1 stub)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_new_links(domain)

Get links gained since previous crawl (v1 stub)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_lost_links(domain)

Get links lost since previous crawl (v1 stub)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_site_explorer(domain)

Full SEO overview for a domain (backlinks, authority, top pages, anchor text)

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢batch_lookup(domains)

Get backlinks for up to 50 domains at once

입력 스키마

{
  "type": "object",
  "properties": {
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "domains"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_credits

Check remaining credit balance

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_platform_domains(platform, limit, min_da, max_da, tld, ...)

Get all domains running a specific platform or technology (e.g. WordPress, Shopify, Wix, Squarespace, Framer). Returns domains with DA scores. Billed at 1 credit per result returned.

입력 스키마

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "description": "Platform name or slug (e.g. \"wordpress\", \"shopify\", \"wix\", \"squarespace\", \"framer\")"
    },
    "limit": {
      "type": "number",
      "description": "Max results to return (default 100, max 1000)"
    },
    "min_da": {
      "type": "number",
      "description": "Minimum domain authority score (0–100)"
    },
    "max_da": {
      "type": "number",
      "description": "Maximum domain authority score (0–100)"
    },
    "tld": {
      "type": "string",
      "description": "Filter by top-level domain (e.g. \"com\", \"io\", \"co.uk\")"
    },
    "sort": {
      "type": "string",
      "enum": [
        "da_desc",
        "da_asc",
        "domain_asc"
      ],
      "description": "Sort order: da_desc (default), da_asc, domain_asc"
    }
  },
  "required": [
    "platform"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_platform_trends

Get a ranked list of all detectable platforms and technologies with their domain counts, useful for comparing platform adoption (e.g. how many sites run WordPress vs Shopify)

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_rank_tracking_sites

List websites configured for stored Google, Bing, and Yandex keyword tracking, including provider freshness and sync state. This reads RankParse snapshots; it does not run a live SERP check.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_tracked_keywords(site_id, limit, offset)

List the tracked keyword IDs and text for one RankParse website. Call list_rank_tracking_sites first to obtain site_id.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max keywords to return (default 100, max 100)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset (default 0)"
    }
  },
  "required": [
    "site_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_keyword_rankings(site_id, keyword_id, engine, period_days, limit, ...)

Get stored ranking summaries (current vs previous period) for a website's tracked keywords across Google, Bing, and Yandex. Reads RankParse snapshots synced on a schedule; it is not a live SERP check. Positions are provider-reported averages over each engine's own returned period and are NOT comparable as one blended rank across engines -- compare per engine, not by averaging across them. A missing engine in a keyword's response means that engine is not connected/attached for this site (check enabled_engines in the response), not a zero or bottom rank. Bing and Yandex are opt-in and many accounts do not have them connected, so their absence is normal, not an error. Each present engine also carries an availability field; a null current/previous position with availability other than "available" (e.g. provider_limited, which Bing/Yandex may report, or pending_first_sync, stale, sync_failed) means a data quality/sync issue for that engine, not evidence the keyword ranks nowhere.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    },
    "keyword_id": {
      "type": "string",
      "description": "Restrict to one tracked keyword ID, from list_tracked_keywords. Omit to get all keywords for the site."
    },
    "engine": {
      "type": "string",
      "enum": [
        "all",
        "google",
        "bing",
        "yandex"
      ],
      "description": "Search engine to report on. Defaults to \"all\" (every engine enabled for this account) -- the primary use case is comparing engines side by side, so leave this unset unless you need one engine only."
    },
    "period_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "Length of the current/previous comparison window in days (default 28, max 90)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max keywords to return (default 100, max 100)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset (default 0)"
    }
  },
  "required": [
    "site_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_keyword_rank_history(site_id, keyword_id, engine, start_date, end_date, ...)

Get the stored day-by-day ranking history for one keyword on one search engine over a date range. Reads RankParse snapshots synced on a schedule; it is not a live SERP check. History is inherently single-engine, so engine is required (use get_keyword_rankings first to compare across engines). Days with no synced data are simply absent from rows rather than filled with a zero or placeholder value -- do not treat a missing date as "not ranking". Bing and Yandex are opt-in and lower-frequency than Google; their responses may report availability as provider_limited, meaning that provider did not return enough data for that day rather than the keyword ranking nowhere.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    },
    "keyword_id": {
      "type": "string",
      "description": "Tracked keyword ID, from list_tracked_keywords"
    },
    "engine": {
      "type": "string",
      "enum": [
        "google",
        "bing",
        "yandex"
      ],
      "description": "Search engine to get history for (required -- history is always single-engine)"
    },
    "start_date": {
      "type": "string",
      "description": "Start of the range, inclusive, as YYYY-MM-DD"
    },
    "end_date": {
      "type": "string",
      "description": "End of the range, inclusive, as YYYY-MM-DD"
    },
    "dimension": {
      "type": "string",
      "enum": [
        "total",
        "device"
      ],
      "description": "Breakdown of the daily rows. Default \"total\" is one row per day; \"device\" is one row per day per device (desktop/mobile/tablet) with a device field on each row. Device rows exist only where the provider synced them (always for Google; Yandex only when its device breakdown is enabled), so an empty device history for a keyword with total history means \"not synced per-device\", not \"no traffic\"."
    }
  },
  "required": [
    "site_id",
    "keyword_id",
    "engine",
    "start_date",
    "end_date"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_rank_change_alerts(site_id, limit, offset)

List recent rank-change alert events for one RankParse website: significant stored-ranking moves (entered/left top 3 or top 10, moved up/down past the configured threshold, new/lost rankings) detected daily and summarized in a weekly email. Reads recorded events, never runs a live check; a keyword with no events simply had no significant moves. Events exist only while alerts are enabled for the site (see get_rank_alert_settings) and only for engines whose data was actually available -- provider-limited or pending engines generate nothing rather than false "lost ranking" alerts.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max events to return (default 100, max 100)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset (default 0)"
    }
  },
  "required": [
    "site_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_rank_alert_settings(site_id)

Get the rank-change alert configuration for one RankParse website: whether weekly alert digests are enabled (they are opt-in and default off), the moved_up/moved_down position threshold, and the optional digest email override. Delivery is Sunday at 18:00 UTC when meaningful changes exist.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    }
  },
  "required": [
    "site_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_rank_alert_settings(site_id, enabled, move_threshold, email_override)

Update rank-change alert settings for one RankParse website: enable/disable the weekly digest (opt-in, default off), set the moved_up/moved_down position threshold (1-50, default 5), or set/clear an email override for that site's digest lines (null reverts to the account email). Only the fields you pass change. Confirm with the user before enabling -- this turns on a real weekly email when meaningful changes exist.

입력 스키마

{
  "type": "object",
  "properties": {
    "site_id": {
      "type": "string",
      "description": "Logical RankParse website ID, from list_rank_tracking_sites"
    },
    "enabled": {
      "type": "boolean",
      "description": "Turn the weekly alert digest on or off for this site"
    },
    "move_threshold": {
      "type": "number",
      "minimum": 1,
      "maximum": 50,
      "description": "Average-position delta that counts as moved_up/moved_down (default 5)"
    },
    "email_override": {
      "type": [
        "string",
        "null"
      ],
      "description": "Email address to send this site's digest lines to instead of the account email; null clears it"
    }
  },
  "required": [
    "site_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_properties

List all Google Search Console properties (sites) connected to this account. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_top_queries(site, startDate, endDate, rowLimit)

Get the top search queries driving traffic to a site, ordered by clicks. Shows clicks, impressions, CTR, and average position for each query. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\" or \"sc-domain:example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_top_pages(site, startDate, endDate, rowLimit)

Get the top pages on a site by clicks from Google Search, with impressions, CTR, and average position. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_page_queries(site, page, startDate, endDate, rowLimit)

Get search queries driving traffic to a specific page. Useful for understanding what a page ranks for. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "page": {
      "type": "string",
      "description": "Full page URL e.g. \"https://example.com/blog/post\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "page",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_query_pages(site, query, startDate, endDate, rowLimit)

Get all pages that rank for a specific search query. Useful for identifying which pages compete for the same keyword. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "query": {
      "type": "string",
      "description": "Search query to look up e.g. \"best seo tools\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "query",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_date_trends(site, startDate, endDate)

Get daily search performance trends (clicks, impressions, CTR, position) over a date range. Useful for spotting ranking changes, traffic drops, or algorithm update impact. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_country_breakdown(site, startDate, endDate, rowLimit)

Get search traffic broken down by country. Useful for understanding geographic audience and international SEO performance. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_device_breakdown(site, startDate, endDate)

Get search traffic broken down by device type (desktop, mobile, tablet). Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_sitemaps(site)

List all submitted sitemaps for a property, including submission date, last download time, URL counts, and any errors or warnings. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    }
  },
  "required": [
    "site"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_url_inspection(site, url)

Inspect a specific URL's indexing status in Google Search. Returns whether the page is indexed, coverage state, last crawl time, mobile usability, and rich results status. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "url": {
      "type": "string",
      "description": "Full URL to inspect e.g. \"https://example.com/blog/post\""
    }
  },
  "required": [
    "site",
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_query_page_pairs(site, startDate, endDate, rowLimit)

Get query+page combinations: which exact queries are landing on which pages. Essential for detecting keyword cannibalization (multiple pages competing for the same query) and understanding the search funnel. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 100, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_page_trend(site, page, startDate, endDate)

Get daily click/impression/CTR/position trend for a specific page. Use this to see how a single page's search performance has changed over time, useful for measuring the impact of a content update or spotting a ranking drop. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "page": {
      "type": "string",
      "description": "Full page URL e.g. \"https://example.com/blog/post\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    }
  },
  "required": [
    "site",
    "page",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_query_trend(site, query, startDate, endDate)

Get daily click/impression/CTR/position trend for a specific search query. Use this to track how a particular keyword's ranking and traffic evolves over time. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "query": {
      "type": "string",
      "description": "Search query to track e.g. \"best seo tools\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    }
  },
  "required": [
    "site",
    "query",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_opportunity_queries(site, startDate, endDate, minPosition, maxPosition, ...)

Find queries where the site ranks on positions 8–20 (page 1 bottom / page 2), the "quick win" zone where small improvements can meaningfully increase clicks. Returns queries sorted by clicks descending (GSC API default). Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "minPosition": {
      "type": "number",
      "description": "Minimum average position (default 8)"
    },
    "maxPosition": {
      "type": "number",
      "description": "Maximum average position (default 20)"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 50, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_low_ctr_queries(site, startDate, endDate, minImpressions, maxCtr, ...)

Find search queries with high impressions but low CTR. These are ranking but not getting clicked, usually because the title or meta description is weak or misleading. Fixing these is typically higher ROI than chasing new rankings. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "minImpressions": {
      "type": "number",
      "description": "Only include queries with at least this many impressions (default 100)"
    },
    "maxCtr": {
      "type": "number",
      "description": "Only include queries with CTR at or below this value 0–1 (default 0.05 = 5%)"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 50, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_low_ctr_pages(site, startDate, endDate, minImpressions, maxCtr, ...)

Find pages with high impressions but low CTR: pages that Google is showing frequently but users aren't clicking. Good starting point for title/description rewrites. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "minImpressions": {
      "type": "number",
      "description": "Only include pages with at least this many impressions (default 500)"
    },
    "maxCtr": {
      "type": "number",
      "description": "Only include pages with CTR at or below this value 0–1 (default 0.05 = 5%)"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_page_segment(site, urlPattern, startDate, endDate, rowLimit)

Analyze search performance for a URL segment, e.g. all blog posts ("/blog/"), all product pages ("/products/"), or all docs ("/docs/"). Returns the top pages within that segment by clicks. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "urlPattern": {
      "type": "string",
      "description": "URL substring to filter by e.g. \"/blog/\" or \"/products/\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    },
    "rowLimit": {
      "type": "number",
      "description": "Max rows (default 25, max 1000)"
    }
  },
  "required": [
    "site",
    "urlPattern",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gsc_search_appearance(site, startDate, endDate)

Break down traffic by how the site appears in Google Search: organic web results, rich results, AMP, image search, video, news, etc. Shows which search features are driving impressions and clicks. Requires Google Search Console to be connected. Direct the user to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Property URL e.g. \"https://example.com\""
    },
    "startDate": {
      "type": "string",
      "description": "Start date YYYY-MM-DD"
    },
    "endDate": {
      "type": "string",
      "description": "End date YYYY-MM-DD"
    }
  },
  "required": [
    "site",
    "startDate",
    "endDate"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_google_ads_accounts

List the Google Ads accounts the connected Google user can access, as 10-digit customer IDs. Use this to help a user pick which account to select when they have more than one. Requires Google Ads to be connected and an Ads account selected. Direct the user to rankparse.com/dashboard/integrations. Returns search volume and competition data, NOT keyword rankings; use the Google Search Console tools for ranking and position data.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_google_ads_keyword_ideas(keywords, url, limit, language, geo_target_constants, ...)

Discover NEW keyword ideas from seed terms and/or a URL, with average monthly search volume, competition level, and top-of-page bid ranges. Use this for keyword research and content planning: "what should I target?". Supply seed keywords, a URL, or both. Requires Google Ads to be connected and an Ads account selected. Direct the user to rankparse.com/dashboard/integrations. Returns search volume and competition data, NOT keyword rankings; use the Google Search Console tools for ranking and position data.

입력 스키마

{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Seed keywords to expand from, e.g. [\"seo tools\", \"backlink checker\"]. Max 20; provide these and/or url."
    },
    "url": {
      "type": "string",
      "description": "A page or site URL to derive keyword ideas from, e.g. \"https://example.com/pricing\""
    },
    "limit": {
      "type": "number",
      "description": "Max ideas to return (default Google decides, max 1000)"
    },
    "language": {
      "type": "string",
      "description": "Language resource name, default \"languageConstants/1000\" (English)"
    },
    "geo_target_constants": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Location resource names, default [\"geoTargetConstants/2840\"] (United States). Max 10."
    },
    "keyword_plan_network": {
      "type": "string",
      "enum": [
        "GOOGLE_SEARCH",
        "GOOGLE_SEARCH_AND_PARTNERS"
      ],
      "description": "Search network to estimate against (default GOOGLE_SEARCH)"
    },
    "include_adult_keywords": {
      "type": "boolean",
      "description": "Include adult keywords in results (default false)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_google_ads_keyword_metrics(keywords, language, geo_target_constants, keyword_plan_network)

Get average monthly search volume, competition level, and top-of-page bid ranges for a SPECIFIC list of keywords, with no expansion into related terms. Use this when the user already has keywords in mind and wants them sized: "how much traffic are these worth?". For discovering new keywords instead, use get_google_ads_keyword_ideas. Requires Google Ads to be connected and an Ads account selected. Direct the user to rankparse.com/dashboard/integrations. Returns search volume and competition data, NOT keyword rankings; use the Google Search Console tools for ranking and position data.

입력 스키마

{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The exact keywords to look up, e.g. [\"seo api\", \"rank tracker\"]. Max 200 per call; extras are dropped and reported via the \"truncated\" flag."
    },
    "language": {
      "type": "string",
      "description": "Language resource name, default \"languageConstants/1000\" (English)"
    },
    "geo_target_constants": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Location resource names, default [\"geoTargetConstants/2840\"] (United States). Max 10."
    },
    "keyword_plan_network": {
      "type": "string",
      "enum": [
        "GOOGLE_SEARCH",
        "GOOGLE_SEARCH_AND_PARTNERS"
      ],
      "description": "Search network to estimate against (default GOOGLE_SEARCH)"
    }
  },
  "required": [
    "keywords"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡outreach_create_campaign(name, your_domain, goal)

Create a draft link-building outreach campaign (sends via the user's connected Gmail). Outreach flow: 1) interview the user (their site, goal, competitors), 2) build a prospect list with get_competitor_gap / get_referring_domains / get_domain_authority, 3) research one real contact email per prospect domain, 4) write a short personalized subject+body per contact, 5) outreach_create_campaign, 6) outreach_add_contacts, 7) show the user the emails and get their OK, 8) outreach_launch_campaign. Requires the user to have Gmail connected at rankparse.com/dashboard/integrations. To CONTINUE an existing campaign rather than start a new one, begin at outreach_suggest_prospects instead of step 1 — campaigns are topped up, not replaced.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Campaign name, e.g. \"SaaS blogs - competitor gap Aug 2026\""
    },
    "your_domain": {
      "type": "string",
      "description": "The domain being promoted, e.g. \"example.com\""
    },
    "goal": {
      "type": "string",
      "description": "What the outreach is trying to achieve, for the campaign record"
    }
  },
  "required": [
    "name",
    "your_domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡outreach_add_contacts(campaign_id, contacts)

Add contacts with per-contact email copy to a campaign (max 100 per call, 500 per campaign, one contact per domain). Works on a draft campaign AND on an already-launched one, which is how you top a live campaign up with fresh prospects. Each contact needs a researched, real email address (never guess addresses) plus a personalized subject and plain-text body (subject ≤500 chars, body ≤10,000). Write like a human: plain punctuation, and NEVER use em-dashes in subjects or bodies. Subjects must be 2-5 words that read like a note from a colleague and reference their content (e.g. "your AI tools guide"): never sales words like exclusive, lifetime, revenue, or deal. Internationalized (non-ASCII) domains must be given in punycode (xn--) form. Returns how many were added and which were skipped (invalid email, duplicate domain/email, copy too long, campaign full, already_contacted = this person was emailed in an earlier campaign). Contacts added to a launched campaign sit inert until you call outreach_launch_campaign again.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id from outreach_create_campaign"
    },
    "contacts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Contact email address (researched, not guessed)"
          },
          "name": {
            "type": "string",
            "description": "Contact name if known"
          },
          "domain": {
            "type": "string",
            "description": "The prospect domain this contact belongs to"
          },
          "subject": {
            "type": "string",
            "description": "Personalized email subject"
          },
          "body": {
            "type": "string",
            "description": "Personalized plain-text email body"
          },
          "domain_authority": {
            "type": "number",
            "description": "Domain authority 0-100 if you already looked it up, for sorting and stats. Out-of-range values are stored as unknown rather than rejected."
          }
        },
        "required": [
          "email",
          "domain",
          "subject",
          "body"
        ],
        "additionalProperties": false
      },
      "description": "Contacts with their personalized copy"
    }
  },
  "required": [
    "campaign_id",
    "contacts"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡outreach_launch_campaign(campaign_id)

LAUNCH a campaign: REAL EMAILS will be sent from the user's Gmail account, paced under their daily send cap by an hourly background sweep. Only call this after the user has seen the drafted emails and explicitly approved sending. Contacts already emailed in any previous campaign are automatically suppressed. Safe to call again on an already-launched campaign to queue newly added contacts: it arms only contacts not yet queued, and never re-sends anything. Returns queued/suppressed counts for THIS call and the estimated days to complete.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id to launch"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢outreach_get_campaign(campaign_id)

Get a campaign's status and delivery counts (awaiting launch, queued, sending, sent, skipped). Use to answer "how is my campaign doing?".

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢outreach_suggest_prospects(campaign_id)

START HERE when adding more websites to an existing campaign. Returns the campaign's own context (domain, goal), how much room it has left, its send queue, and — critically — exclude_domains: every prospect domain this account has already used in ANY campaign. You MUST filter your discovery results against exclude_domains. get_competitor_gap is cached and unpaginated, so calling it again returns the identical top-N: request a limit several times larger than recommended_batch_size, drop everything already in exclude_domains, and keep what is left. Widen the pool with get_similar_domains, get_link_intersect, or get_platform_domains when the competitor gap is exhausted. Then research one real contact per surviving domain, call outreach_add_contacts, and finish with outreach_launch_campaign to queue them. Note exclude_domains_truncated: when true the list is capped and you should prefer clearly-unseen domains.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id to top up"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢outreach_list_campaigns

List this account's outreach campaigns with status and contact counts.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢outreach_sending_status

Get the Gmail sending pipeline status: connected account, auto-send on/off, daily cap, how many sent today, remaining budget today, total queued across campaigns, and estimated days to drain the queue.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡outreach_configure_sending(max_sends_per_day, auto_send_enabled)

Update the Gmail sending schedule: max_sends_per_day (1-100, applies account-wide across all campaigns) and/or auto_send_enabled (false stops ALL sending, true resumes it). Confirm with the user before changing these; they control real email volume.

입력 스키마

{
  "type": "object",
  "properties": {
    "max_sends_per_day": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Daily send cap across all campaigns (1-100)"
    },
    "auto_send_enabled": {
      "type": "boolean",
      "description": "Master switch for the hourly send sweep"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪outreach_pause_campaign(campaign_id)

Pause one campaign: its queued emails stop sending but stay queued, so resuming continues exactly where it left off. Other campaigns keep sending.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id to pause"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡outreach_resume_campaign(campaign_id)

Resume a paused campaign; its queued emails become eligible for the next hourly send sweep again.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id to resume"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zeekeo_list_campaigns

List the user's Zeekeo Launchpad campaigns (LinkedIn automation). Use this to find a campaign_id for zeekeo_send_message, or call zeekeo_create_campaign to make a new one. Requires the user to have connected their own Zeekeo Launchpad account. Direct them to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡zeekeo_send_message(campaign_id, linkedin_url, type, body, subject)

Sends a REAL LinkedIn message, InMail, or email through Zeekeo Launchpad to a profile in one of the user's existing Zeekeo campaigns. Only call this after showing the user the drafted message and getting explicit approval. Resolves linkedin_url into that campaign first, so the profile must be reachable from it (use zeekeo_list_campaigns to pick campaign_id). Requires the user to have connected their own Zeekeo Launchpad account. Direct them to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Zeekeo campaign id from zeekeo_list_campaigns"
    },
    "linkedin_url": {
      "type": "string",
      "description": "LinkedIn profile URL or public identifier of the recipient"
    },
    "type": {
      "type": "string",
      "enum": [
        "linkedin_message",
        "linkedin_inmail",
        "email_message"
      ],
      "description": "Channel to send through"
    },
    "body": {
      "type": "string",
      "description": "Message text"
    },
    "subject": {
      "type": "string",
      "description": "Subject line, required when type is email_message"
    }
  },
  "required": [
    "campaign_id",
    "linkedin_url",
    "type",
    "body"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡zeekeo_create_template(name, type, body, subject)

Creates a reusable Zeekeo message template. Call this BEFORE zeekeo_create_campaign — a campaign references templates by the template_id this returns, not inline text. type must be 'linkedin_invite' for a connection-request template, or one of linkedin_message/linkedin_inmail/email_message for a follow-up/reply template. Requires the user to have connected their own Zeekeo Launchpad account. Direct them to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Template name, for your own reference in the Zeekeo dashboard"
    },
    "type": {
      "type": "string",
      "enum": [
        "linkedin_invite",
        "linkedin_message",
        "linkedin_inmail",
        "email_message"
      ],
      "description": "What kind of message this template is for"
    },
    "body": {
      "type": "string",
      "description": "Message text. Supports Zeekeo merge variables like {{FIRST_NAME}} and {{COMPANY}}."
    },
    "subject": {
      "type": "string",
      "description": "Subject line, required when type is email_message"
    }
  },
  "required": [
    "name",
    "type",
    "body"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡zeekeo_create_campaign(name, filter_url, profile_urls, invite_template_id, invite_limit, ...)

Creates a Zeekeo LinkedIn campaign: sends a connection invite using invite_template_id, and optionally — if followup_template_id is given — waits for the invite to be accepted, then sends a follow-up message using that template. Create templates first with zeekeo_create_template. Provide exactly one of filter_url (a LinkedIn search results URL) or profile_urls (specific profiles) as the target. This starts REAL LinkedIn automation once the campaign has profiles in it — confirm with the user before calling. Requires the user to have connected their own Zeekeo Launchpad account. Direct them to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Campaign name"
    },
    "filter_url": {
      "type": "string",
      "description": "A LinkedIn search results URL to source profiles from. Provide this or profile_urls, not both."
    },
    "profile_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Specific LinkedIn profile URLs to target. Provide this or filter_url, not both."
    },
    "invite_template_id": {
      "type": "string",
      "description": "Template id from zeekeo_create_template (type linkedin_invite)"
    },
    "invite_limit": {
      "type": "number",
      "description": "Max invites to send (default 20)"
    },
    "invite_delay": {
      "type": "number",
      "description": "Seconds to wait before the first invite (default 0)"
    },
    "followup_template_id": {
      "type": "string",
      "description": "Template id from zeekeo_create_template (type linkedin_message) for a follow-up message sent after the invite is accepted. Omit for an invite-only campaign. Must be a linkedin_message template — email_message and linkedin_inmail templates are not valid here."
    },
    "followup_delay_hours": {
      "type": "number",
      "description": "Hours to wait after connection before the follow-up (default 24)"
    },
    "exclude_first_degree_connections": {
      "type": "boolean",
      "description": "Skip people already connected to the user (default true)"
    },
    "exclude_past_campaigns_targets": {
      "type": "boolean",
      "description": "Skip people already targeted in a previous campaign (default true)"
    }
  },
  "required": [
    "name",
    "invite_template_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡zeekeo_activate_campaign(campaign_id)

Activates a paused Zeekeo campaign so it starts running (sends real LinkedIn connection invites per the campaign's configured limit/delay). Zeekeo campaigns are created paused by default — call this after zeekeo_create_campaign to actually start sending. This resumes REAL LinkedIn automation — confirm with the user before calling. Requires the user to have connected their own Zeekeo Launchpad account. Direct them to rankparse.com/dashboard/integrations to connect it.

입력 스키마

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Zeekeo campaign id from zeekeo_list_campaigns or zeekeo_create_campaign"
    }
  },
  "required": [
    "campaign_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡provision_indexnow_key(domain)

Get (or create) the IndexNow key for a host. Idempotent per host: repeated calls return the same key. Free (0 credits). Returns the key, its required key_location (https://<host>/<key>.txt), and verified (whether the hosted key file has already been confirmed). The USER must host a UTF-8 text file containing exactly the key at key_location before submit_indexnow_urls will work — tell them the location and the key, then submit.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "The website host to provision a key for, e.g. \"example.com\""
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡submit_indexnow_urls(urls)

Submit changed/new/deleted URLs to IndexNow so search engines (Bing, Yandex, Seznam, Naver, ...) recrawl them promptly. All URLs must share one host, max 1000 per call. Requires the host's IndexNow key file to be live: call provision_indexnow_key first and make sure the user hosted the key file at its key_location (indexnow_key_not_verified means the file is missing or wrong). Costs 1 credit, refunded automatically when the submission fails.

입력 스키마

{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Full URLs to submit, e.g. [\"https://example.com/a\", \"https://example.com/b\"] — all on the same host"
    }
  },
  "required": [
    "urls"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 73개
검증됨버전이 기록되지 않음도구 73개