Skip to main content
Glama

Server Details

SEO for AI agents: keywords, SERPs, backlinks, rank tracking, audits, Search Console, Analytics

Ownership verified
Status
Healthy
Uptime
98.7% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
winsley-jeune/harborrank-skills
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 35 tools

Disambiguation4/5

Most tools target a distinct resource+action, and descriptions cross-reference each other well (e.g. get_domain_overview vs get_ranked_keywords vs get_domain_keyword_suggestions). However there are genuine overlaps: get_domain_keyword_suggestions and get_ranked_keywords both return keywords a domain ranks for, and get_serp_results/search_local_businesses/prospect_leads all search listings/SERPs with only subtle differences. These pairs could cause misselection.

Naming Consistency5/5

Names follow a consistent snake_case verb_noun pattern (create_project, list_projects, get_audit_issues, run_site_audit, research_keywords, set_lead_top_issues, update_lead). The only variation is the idiomatic whoami, which is a standard single-token command. No camelCase/snake_case mixing.

Tool Count3/5

35 tools is heavy and forces the agent to scan a large surface before acting. The underlying domain (SEO, local SERP, backlinks, audits, lead-gen, Search Console) is genuinely broad so each tool is defensible, but the set sits above the comfortable 3-15 range.

Completeness4/5

Coverage is deep: full project lifecycle (create/list/delete), audits with status+issues+pages, keyword research/save/list, backlinks, SERP, Search Console, and a rich lead pipeline (prospect, research, teardown, set competitors/serp/issues, update). Minor gaps remain — no project update, no keyword or audit deletion — but agents can work around them.

Available Tools

38 tools
create_projectCreate projectInspect

Create a new project in the user's organization. Provide a name, and optionally a domain and default market (locationCode/languageCode; a languageCode requires a locationCode). Returns the created {id, name, domain, locationCode, languageCode, url}; pass the returned id as projectId to other HarborRank tools. Call list_projects first to avoid creating a duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name (1-120 characters).
domainNoOptional root domain for the project, e.g. "example.com" (host only, no scheme or path). Sets the default target for domain, backlink, and rank tools.
languageCodeNoOptional language code (e.g. "en", "fr"). Requires locationCode; derived from the location when omitted.
locationCodeNoOptional DataForSEO location code for the project's default market (e.g. 2840 = United States, 2504 = Morocco). Falls back to the organization default when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
projectYes
delete_projectDelete project
Destructive
Inspect

PERMANENTLY deletes a project and everything in it: saved keywords, rank trackers and their history, site audits, leads, brand tracking, and its Search Console connection. Cannot be undone. Only call this after the user has explicitly asked to delete this specific project by name; if they may want the data later, tell them to archive it from the dashboard instead. Pass the project's exact name as confirmName — a mismatch refuses the delete. Returns the deleted {id, name}.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesId of the project to delete, from list_projects.
confirmNameYesThe project's exact name, as list_projects returns it. The delete is refused if it does not match.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
deletedYes
find_serp_competitorsFind SERP competitors
Read-only
Inspect

Compares domains competing in Google results for a supplied keyword set in a country-level DataForSEO Labs market. Accepts location/language codes; not radius-based local SEO.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum competitors to return (1-100). Defaults to 50.
marketNoLegacy US selector. Prefer locationCode/languageCode for any Labs market. Explicit locationCode takes precedence; otherwise omitted = the project's default market.
offsetNoRows to skip for pagination.
sortByNoSort order for returned competitors. Defaults to visibility.
keywordsYesKeywords whose SERPs are compared (1-100).
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
resultTypesNoSERP result types to include. Defaults to organic and local_pack.
languageCodeNoLanguage for locationCode. Defaults to that location's primary language when locationCode overrides the project market.
locationCodeNoCountry-level DataForSEO Labs location code. Defaults to the project's market; takes precedence over the legacy market object.
excludeDomainsNoDomains to exclude from results (e.g. the user's own site).
includeSubdomainsNoCount subdomains as part of the same competitor domain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
competitorsYes
get_ai_referral_trafficGet AI assistant referral trafficA
Read-only
Inspect

Measure real visits the site gets from AI assistants — ChatGPT, Perplexity, Gemini, Copilot, Claude, DeepSeek, Grok and others — from Google Analytics: sessions, engagement, key events (conversions) and revenue per assistant, the share of all traffic AI now drives, and optionally which landing pages they cite. Combines GA4's built-in AI Assistant channel with referrer matching, so it also covers assistants and history the built-in channel misses. Use it to prove AI-search visibility pays off, track its growth with compareTo, and pick pages to optimize for AI answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoExplicit end (YYYY-MM-DD, property time zone). Use with startDate.
rowLimitNoRows to return (default 100).
compareToNoAdd a comparison window. Each metric then gets <metric>_previous and <metric>_change (relative, -0.25 = down 25%). Use previous_period to explain a traffic drop, previous_year to strip out seasonality.
dateRangeNoConvenience window ending yesterday (default last_28_days). Ignored if startDate+endDate are given.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
startDateNoExplicit start (YYYY-MM-DD, property time zone). Use with endDate.
byLandingPageNoAlso split by landing page, to see which pages AI assistants send people to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
metaNo
rowsNo
reasonNo
aiShareNo
endDateNo
startDateNo
aiSessionsNo
connectUrlNo
propertyIdNo
allSessionsNo
dataQualityNo
propertyNameNo
compareEndDateNo
compareStartDateNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/openWorld/non-destructive safety, so the description only needs to add context. It does, usefully: it discloses the data provenance (GA4's AI Assistant channel plus referrer matching) and notes it covers assistants and history the built-in channel misses. It omits auth/rate-limit behavior, but the sourcing detail is genuine added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph that is front-loaded with the core purpose and then layers scope, sourcing, and use cases. Nearly every clause earns its place, though the provider list and closing tips make it longer than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it supplies scope, data source, differentiating coverage, and usage intent. An agent has everything needed to select and call this tool correctly, including the required projectId pointer via list_projects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description references compareTo and the landing-page split, and clarifies what metrics surface (revenue per assistant, AI's share of all traffic), but the parameter-specific semantics (formats, enums, defaults) already live in the schema, so this adds only marginal meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (measure) and resource (AI assistant referral traffic) with named scope: sessions, engagement, key events, revenue per assistant. It is unmistakably distinct from broad siblings like get_analytics_report or get_landing_page_performance because it names the AI-assistant channel and its providers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage contexts — prove AI-search visibility pays off, track growth with compareTo, and pick pages to optimize — which tells the agent when this tool is the right pick. It stops short of naming an alternative tool or an explicit when-not condition against get_analytics_report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analytics_reportGet Google Analytics reportA
Read-only
Inspect

Query the project's connected Google Analytics 4 property: sessions, users, engagement, key events (conversions) and revenue, broken down by channel, source, landing page, page, device, country or date, with optional period-over-period comparison. This is what happens after the click — use it to see which traffic actually converts, explain traffic drops, and back recommendations with business outcomes. Pair with get_search_console_performance for the before-click half, or use get_landing_page_performance to get both joined per page.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoPagination offset.
endDateNoExplicit end (YYYY-MM-DD, property time zone). Use with startDate.
filtersNoAND-combined. Organic only: [{dimension:'sessionDefaultChannelGroup',operator:'equals',expression:'Organic Search'}].
metricsNoDefault ['sessions']. keyEvents are the conversions the site owner marked (leads, calls, purchases); totalRevenue needs ecommerce tracking.
orderByNoSort rows by this metric, descending (default the first metric).
rowLimitNoRows per call (default 100, max 1000). Paginate with offset when hasMore is true.
compareToNoAdd a comparison window. Each metric then gets <metric>_previous and <metric>_change (relative, -0.25 = down 25%). Use previous_period to explain a traffic drop, previous_year to strip out seasonality.
dateRangeNoConvenience window ending yesterday (default last_28_days). Ignored if startDate+endDate are given.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
startDateNoExplicit start (YYYY-MM-DD, property time zone). Use with endDate.
dimensionsNoBreak rows down by these. Omit for site totals. ['sessionDefaultChannelGroup'] for channel mix, ['landingPage'] for entry pages, ['date'] for a trend, ['sessionSourceMedium'] for referrers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
metaNo
rowsNo
reasonNo
endDateNo
hasMoreNo
rowCountNo
startDateNo
connectUrlNo
nextOffsetNo
propertyIdNo
dataQualityNo
propertyNameNo
totalRowCountNo
compareEndDateNo
compareStartDateNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety and data-source scope are covered structurally. The description adds the prerequisite that a GA4 property must be connected to the project and that comparisons can be requested, but says nothing about rate limits, quota, or what happens when no property is connected. Adequate but not rich beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the resource and scope, then usage guidance, then sibling routing. Only mild filler ('This is what happens after the click') and every sentence carries routing or semantic value, so it is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters, full schema description coverage, an output schema, and read-only annotations, the description supplies the intent, routing and prerequisite context an agent needs to select and call it. It does not need to explain return values, and the remaining gap (connection/auth failure behavior) is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including compareTo, rowLimit, filters and dimensions is already documented with examples in the schema. The description restates the breakdown dimensions and period-over-period comparison but adds no syntax or constraint detail the schema lacks, making 3 the correct baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Query the project's connected Google Analytics 4 property') and enumerates the exact metric families (sessions, users, engagement, key events, revenue) and breakdown dimensions, so an agent can tell it apart from get_search_console_performance or get_landing_page_performance without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames when to use it ('what happens after the click — see which traffic actually converts, explain traffic drops, back recommendations with business outcomes') and names two alternatives with the condition that selects each: get_search_console_performance for the before-click half, get_landing_page_performance for the joined view.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_issuesGet site audit issues
Read-only
Inspect

Read the prioritized issue report from a completed site audit. Every issue carries a how_to_fix with concrete remediation steps an agent can act on. Omit auditId for the most recent audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax issues to return (default 200).
auditIdNoAudit ID. If omitted, uses the project's most recent audit.
severityNoOnly return issues of this severity.
issueTypeNoOnly return issues of this type. One of: blocked-page, server-error, broken-internal-link, missing-title, broken-page, duplicate-title, duplicate-meta-description, duplicate-content, missing-meta-description, missing-h1, multiple-h1, redirect-chain, redirect-loop, canonical-conflict, thin-content, images-missing-alt, orphan-page, no-outgoing-links, title-too-long, title-too-short, meta-description-too-long, meta-description-too-short, heading-order-skip, slow-response, noindex-page, canonicalized-page, deep-page
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
issuesYes
summaryYes
get_audit_pagesGet site audit pages
Read-only
Inspect

List crawled pages from a site audit with per-page SEO data (status, title, description, word count, indexability, crawl depth, link counts) and, for pages Lighthouse checked, mobile and desktop scores (performance, accessibility, best practices, SEO) and LCP, CLS, INP and TTFB. Omit auditId for the most recent audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax pages to return (default 100).
auditIdNoAudit ID. If omitted, uses the project's most recent audit.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
fetchClassNoFilter by fetch outcome ("blocked" = the site's bot protection challenged the crawler).
statusCodeNoFilter by exact HTTP status code.
urlContainsNoFilter to URLs containing this substring.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
pagesYes
totalYes
get_audit_statusGet site audit status
Read-only
Inspect

Check the progress of a site audit (phase, pages crawled, Lighthouse progress). Omit auditId for the most recent audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
auditIdNoAudit ID. If omitted, uses the project's most recent audit.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
statusYes
get_domain_keyword_suggestionsGet domain keyword opportunities
Read-only
Inspect

Returns the organic keywords a domain ranks for, including position and available metrics. Use after get_domain_overview when you want the detailed keyword opportunity list for a competitor or reference domain. Cached for 12 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesCompetitor or reference domain to extract keywords from.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).
locationCodeNoDataForSEO location code. Defaults to the project's default market (see list_projects; editable in project settings). See dataforseo.com/help-center/locations. Some countries (e.g. Iceland, 2352) are served from Google Ads data: keyword volume/CPC/trends work, but keyword difficulty, search intent, and domain analytics are unavailable.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
keywordsYes
get_domain_overviewGet domain overview
Read-only
Inspect

Returns a high-level view of a domain's organic footprint: estimated organic traffic, organic keyword count, backlinks, and referring domains. Use this first for domain research; for the detailed ranked-keyword list, call get_domain_keyword_suggestions next. Cached for 12 hours per domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to analyze (e.g. 'example.com').
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).
locationCodeNoDataForSEO location code. Defaults to the project's default market (see list_projects; editable in project settings). See dataforseo.com/help-center/locations. Some countries (e.g. Iceland, 2352) are served from Google Ads data: keyword volume/CPC/trends work, but keyword difficulty, search intent, and domain analytics are unavailable.
includeSubdomainsNoInclude subdomains in the domain's metrics. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
domainNo
backlinksNo
organicTrafficNo
organicKeywordsNo
referringDomainsNo
get_google_business_questionsGet Google business questions
Read-only
Inspect

Fetches Google Business Profile questions and answers for one business keyword near a coordinate. Run this only when Q&A evidence is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearYesCoordinate and radius to search around.
depthNoMaximum Q&A rows to fetch (1-100). Defaults to 20.
keywordYesBusiness name or search phrase identifying the Google Business Profile.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
questionsYes
get_keyword_metricsGet keyword metrics
Read-only
Inspect

Hydrate up to 700 known keywords with search volume, keyword difficulty (KD), search intent, CPC, competition, and monthly trends in a single call. Use it to score candidate or known keywords — including Search Console striking-distance queries — by real demand and ranking difficulty. For countries served from Google Ads data (e.g. Iceland), KD and intent are null.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortByNoSort order for returned rows. Defaults to search_volume.
keywordsYesKeywords to fetch metrics for (1-700).
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).
locationCodeNoDataForSEO location code. Defaults to the project's default market (see list_projects; editable in project settings). See dataforseo.com/help-center/locations. Some countries (e.g. Iceland, 2352) are served from Google Ads data: keyword volume/CPC/trends work, but keyword difficulty, search intent, and domain analytics are unavailable.
includeMonthlyTrendsNoInclude monthly search-volume trend rows. Defaults to true.
includeClickstreamDataNoRefine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). Use only when plural or misspelling variants need separate volumes. Default false. No effect for countries served from Google Ads data.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
keywordsYes
get_landing_page_performanceGet SEO landing page performance (Search Console + Analytics)A
Read-only
Inspect

The full SEO funnel per page in one call: Google Search Console clicks, impressions and position joined with Google Analytics organic sessions, engagement, key events (conversions) and revenue for each landing page. Answers 'which pages bring customers, not just clicks?', finds pages that rank but don't convert (fix the page) and pages that convert but barely rank (worth pushing), and flags pages earning Google clicks that Analytics never records (broken tracking). Best starting point for SEO prioritization, content audits and client reporting. Works with Analytics alone if Search Console isn't connected.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoExplicit end (YYYY-MM-DD, property time zone). Use with startDate.
rowLimitNoLanding pages to return, by organic sessions (default 50).
dateRangeNoConvenience window ending yesterday (default last_28_days). Ignored if startDate+endDate are given.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
startDateNoExplicit start (YYYY-MM-DD, property time zone). Use with endDate.
pathContainsNoOnly landing pages whose path contains this, e.g. '/blog/'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
metaNo
rowsNo
reasonNo
endDateNo
siteUrlNo
startDateNo
connectUrlNo
propertyIdNo
dataQualityNo
propertyNameNo
searchConsoleNo
pagesMissingFromAnalyticsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral value beyond that: the join semantics across two data sources, the degraded mode without Search Console, and diagnostic flags such as clicks Analytics never records. It does not mention auth, rate limits or pagination, but the additions are meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Opens with the core operation and keeps the value proposition front-loaded. The remaining sentences each carry distinct diagnostic or use-case information, though the description is dense and runs long relative to what most agents need to disambiguate the call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the join behavior, the fallback condition, and the intended analytical scenarios, leaving no essential gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (dateRange enum, startDate/endDate, pathContains, rowLimit, projectId) are already fully documented in the schema. The description adds no parameter syntax or format detail beyond what is structured, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource and pins down the scope precisely: per-page SEO funnel joining Search Console clicks/impressions/position with Analytics sessions, engagement, key events and revenue. This clearly distinguishes it from siblings like get_search_console_performance and get_analytics_report, which each cover only one half of the join.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context ('best starting point for SEO prioritization, content audits and client reporting') and names concrete analytical intents. It also discloses a degraded operating mode ('works with Analytics alone if Search Console isn't connected'). It stops short of naming the sibling alternatives it competes with, so it is not a full when/when-not/alternatives treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lead_teardownGet lead teardown
Read-only
Inspect

Returns the Markdown teardown research_lead generated for a lead: pack positions from three points, the searches that bring jobs, the top-three profile comparison, website footprint and audit findings, and the fixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadIdYesLead id from list_leads.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
markdownYes
generatedAtYes
get_local_serp_resultsGet local SERP results
Read-only
Inspect

Fetches one Google Maps or Local Finder SERP near a coordinate. Returns provider rows with rank fields intact; callers decide how to match a target business.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearYesCoordinate (and optional map zoom) the SERP is fetched from.
depthNoNumber of results to fetch (1-100). Defaults to 20.
deviceNoDevice the SERP is rendered for. Defaults to desktop.
keywordYesSearch query to run on Google Maps or Local Finder.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
searchTypeNoWhich local SERP to fetch. Defaults to maps.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
resultsYes
get_ranked_keywordsGet ranked keywords
Read-only
Inspect

Returns market-specific keyword, URL, rank, search volume, CPC, intent, and traffic rows for a domain or page. Accepts country-level DataForSEO Labs location/language codes. Use this for strategy evidence; use get_domain_overview for aggregate domain footprint.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (1-100). Defaults to 50.
marketNoLegacy US selector. Prefer locationCode/languageCode for any Labs market. Explicit locationCode takes precedence; otherwise omitted = the project's default market.
offsetNoRows to skip for pagination.
sortByNoSort order for returned rows. Defaults to search_volume.
targetYesDomain (no protocol/www) or absolute page URL to list ranked keywords for.
maxRankNoOnly return keywords ranking at this position or better.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
resultTypesNoSERP result types to include. Defaults to organic and paid.
languageCodeNoLanguage for locationCode. Defaults to that location's primary language when locationCode overrides the project market.
locationCodeNoCountry-level DataForSEO Labs location code. Defaults to the project's market; takes precedence over the legacy market object.
minSearchVolumeNoOnly return keywords with at least this monthly search volume.
excludeBrandTermsNoExclude keywords containing any of these brand terms.
includeSubdomainsNoInclude subdomains of the target. Defaults to true for domains, false for page URLs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
keywordsYes
totalCountYes
get_rank_trackerGet rank tracker
Read-only
Inspect

Read-only access to rank tracker configs and their latest results. With trackerId, returns config + latest snapshot per keyword. Without it, lists all trackers in the project. To trigger a new check, use the dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
trackerIdNoRank tracker config ID. If omitted, lists all rank trackers in the project.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
configNo
configsNo
resultsNo
get_search_console_performanceGet Google Search Console performance
Read-only
Inspect

Query the connected Search Console property's Search Analytics: clicks, impressions, CTR, and average position by query/page/country/device/date. First-party data — use it for what already ranks, near-ranking queries, and pages with real demand. ctr is a 0-1 fraction; position is a 1-based average; dates are Pacific Time; the last ~3 days may be incomplete. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoSearch type (default web).
endDateNoExplicit end (YYYY-MM-DD, Pacific Time). Use with startDate.
filtersNoAND-combined filters. To get the queries for one page: [{dimension:'page',operator:'equals',expression:'https://example.com/post'}] with dimensions ['query'].
rowLimitNoRows per call (default 1000, max 1000). GSC sorts by clicks desc and can't filter by position — filter 'striking distance' positions client-side, and paginate with startRow when hasMore is true.
startRowNoPagination offset.
dataStateNo'all' (default) includes fresh/incomplete recent data.
dateRangeNoConvenience window (default last_28_days). End is set ~3 days back for GSC data lag. Ignored if startDate+endDate are given. Max lookback is 16 months.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
startDateNoExplicit start (YYYY-MM-DD, Pacific Time). Use with endDate.
dimensionsNoGroup rows by these dimensions. Default ['query']. Use ['page'] for top pages, ['query','page'] to map queries to pages / spot cannibalization, ['date'] for a time series.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
metaNo
rowsNo
reasonNo
endDateNo
hasMoreNo
siteUrlNo
rowCountNo
startDateNo
connectUrlNo
dimensionsNo
nextStartRowNo
setupDocsUrlNo
get_serp_resultsGet Google SERP results
Read-only
Inspect

Fetch live Google organic search results for 1-10 keywords. Use this to inspect who ranks for a query, verify competitors, compare SERPs across keywords, or gather source URLs before content planning. Does not save results to HarborRank. Per-keyword errors don't fail the batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYes1-10 queries. Bulk-friendly — prefer this over multiple single-query calls.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
resultsYes
inspect_urlsInspect URLs in Google Search Console
Read-only
Inspect

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. Use it to answer 'is this page indexed? why not?'. Per-URL failures are reported inline. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes1–10 absolute URLs to inspect. Each must belong to the connected property.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoBCP-47 language for the inspection result (e.g. 'en-US').

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
metaNo
reasonNo
resultsNo
siteUrlNo
connectUrlNo
setupDocsUrlNo
list_business_categoriesList business categoriesA
Read-only
Inspect

Lists the Google Business category taxonomy used by prospect_leads' categories filter, sorted by listing count. Use to find the right category slugs for a niche.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum categories to return. Defaults to 50.
queryNoSubstring filter, e.g. 'dent' or 'roof'.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
categoriesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat safety. It adds behavioral detail about sorting by listing count, which helps set expectations. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no fluff, with the core purpose front-loaded and the use case in the second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a simple read-only tool. Output schema exists, schema coverage is 100%, and annotations cover safety. The description covers purpose, sorting, and usage context—nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters (limit, query, projectId) are already documented. The description does not add any parameter-specific semantics beyond the schema, which is sufficient per the baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States exactly what the tool does: lists the Google Business category taxonomy, used by prospect_leads' categories filter, and sorted by listing count. This clearly distinguishes it from all sibling tools, none of which handle categories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the use case: 'Use to find the right category slugs for a niche.' It implies this is the go-to for category lookup, but does not mention alternatives or when not to use it. Since no other tool deals with categories, the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_leadsList leads
Read-only
Inspect

Lists the project's saved prospecting leads with their track and outreach status.

ParametersJSON Schema
NameRequiredDescriptionDefault
trackNoFilter by outreach track ('owner' or 'agency').
statusNoFilter by outreach status (e.g. 'new', 'audited').
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
leadsYes
list_projectsList projects
Read-only
Inspect

Lists all projects in the user's organization. Use this whenever you need a projectId for another HarborRank tool. Returns an array of {id, name, domain, locationCode, languageCode}; pass the id value as projectId. locationCode/languageCode are the project's default market — tools fall back to them when a call omits location/language args.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
projectsYes
list_saved_keywordsList saved keywords
Read-only
Inspect

Lists keywords saved to a project (with cached metrics like search volume, difficulty, CPC, and tags if available). Use tag filters when the user asks for a saved segment; multiple tags match ANY tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tag-name filters. Multiple tags match ANY tag.
limitNoMaximum rows to return. Defaults to 100.
searchNoOptional keyword text filter.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
rowsYes
tagsYes
totalCountYes
prospect_leadsProspect leadsInspect

Searches Google Business listings for a niche and saves new businesses to the project's lead list (deduped by place and domain). Two modes: city (locationCode — a Google Maps search for the niche in that city) or coordinate (latitude/longitude/radiusKm). Stores each listing's coordinates and profile depth (photos, categories, 24h hours) so research_lead can check pack positions around the business. Use list_leads to read the list back.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity label stored on saved leads (e.g. 'Worcester').
limitNoMaximum businesses to fetch (1-100). Defaults to 20.
nicheYesNiche label stored on saved leads (e.g. 'dentist').
queryNoBusiness name or title text to match.
latitudeNoCoordinate mode: search-center latitude.
radiusKmNoCoordinate mode: search radius in kilometers.
longitudeNoCoordinate mode: search-center longitude.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
categoriesNoBusiness category slugs to filter by (e.g. 'dentist', 'roofing_contractor').
locationCodeNoCity mode: a DataForSEO SERP location code — searches Google Maps for the niche in that city. Alternative to latitude/longitude.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
addedYes
foundYes
skippedExistingYes
research_keywordsResearch keywords (bulk)
Read-only
Inspect

Research keyword data (search volume, difficulty, CPC, related ideas) for 1-5 seed keywords in one call. In countries served from Google Ads data, difficulty and intent are unavailable. Returns per-seed results — a single bad seed won't fail the batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedsYes1-5 seed keywords. Each seed is researched independently and returns related keywords with volume/difficulty/CPC. Bulk-friendly — prefer this over multiple single-seed calls.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
resultLimitNoMax keywords returned per seed. Defaults to 150.
includeClickstreamDataNoRefine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). Use only when plural or misspelling variants need separate volumes. Default false (standard Google-Ads-derived volumes). No effect for countries served from Google Ads data.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
resultsYes
research_leadResearch leadInspect

Runs HarborRank's in-product research on a saved lead and stores the evidence: money keywords with volume, the lead's Google Maps position and who holds #1, the primary keyword checked from three points around the business, the top three competitors with profile depth (photos, categories, 24h hours, Q&A, distance), the lead's organic footprint, contact discovery, an optional AI Overview check, and a quick site audit. Then writes the Markdown teardown that get_lead_teardown returns. On hosted HarborRank this requires a paid plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadIdYesLead id from list_leads.
includeAiNoAlso check whether Google AI Overviews cite the lead's domain — the one call that is not cents. Defaults to false.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
includeAuditNoStart a 10-page crawl of the lead's site (its findings land on the lead when it finishes). Defaults to true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
skippedYes
aiMentionedYes
auditStartedYes
contactEmailYes
leadPositionYes
keywordsCheckedYes
competitorsFoundYes
teardownAvailableYes
run_site_auditRun site auditAInspect

Start a site audit with HarborRank's own crawler (no third-party API): crawls the site at the given URL (robots.txt-aware, same-origin), checks every page for SEO issues (broken links, duplicate/missing titles and descriptions, redirect chains, orphan pages, canonical problems, thin content, and more), and optionally runs Lighthouse on a sample of pages. Runs in the background — poll get_audit_status, then read get_audit_issues. If the site blocks our crawler, pages are honestly flagged as blocked rather than misreported.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesStart URL to crawl.
maxPagesNoPage budget for the crawl (default 50).
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
runLighthouseNoRun Lighthouse on a sample of up to 10 representative pages (default true). Paid plans only; ignored on the Free plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
auditIdYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: no third-party API, robots.txt-awareness, same-origin scoping, background execution, and honest flagging of blocked pages. This is precisely the operational detail the openWorldHint/readOnlyHint annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense but well-organized paragraph that front-loads the action and then the follow-up flow. Every clause is informative, though the sentence is lengthy and could be split for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation; the description instead covers the async lifecycle and the follow-up tools, which is exactly what an agent needs to invoke and complete this workflow correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, maxPages, projectId, and runLighthouse. The description reinforces the crawler's scope (robots.txt-aware, same-origin) and the Lighthouse sampling, but adds little parameter syntax or format detail beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (start/run) and resource (site audit) and details exactly what the crawl checks: broken links, titles, redirect chains, orphan pages, canonical issues, thin content. It clearly distinguishes itself from siblings by routing results through get_audit_status and get_audit_issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes the workflow: it runs in the background, so the agent must poll get_audit_status and then read get_audit_issues. It also notes the optional Lighthouse step. It does not clarify when to prefer this over the semantically adjacent sibling inspect_urls, so it stops short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_keywordsSave keywords
Destructive
Inspect

Save keywords to a project's saved-keywords list. Idempotent: re-saving an existing keyword is a no-op. If tags are provided, missing tags may be created. By default tags are appended; set tagMode=replace to remove existing tags from these saved keywords before applying the provided tags, which is useful for reorganizing keywords into page/topic clusters. Ask the user for confirmation before applying or replacing tags broadly.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags to attach to every saved keyword. Ask the user for explicit confirmation before using this, especially when saving many keywords or creating new tag names.
tagModeNoHow to apply tags. Defaults to append. Use replace to remove existing tags from these saved keywords before applying the provided tags.
keywordsYesKeywords to save (1-100).
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
languageCodeNoLanguage code (e.g. 'en', 'es', 'vi'). Defaults to the project's default market language (see list_projects).
locationCodeNoDataForSEO location code. Defaults to the project's default market (see list_projects; editable in project settings). See dataforseo.com/help-center/locations. Some countries (e.g. Iceland, 2352) are served from Google Ads data: keyword volume/CPC/trends work, but keyword difficulty, search intent, and domain analytics are unavailable.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
tagsYes
tagModeYes
keywordsYes
projectIdYes
savedCountYes
languageCodeYes
locationCodeYes
search_local_businessesSearch local businesses
Read-only
Inspect

Searches local business listings near a coordinate. Use this to find local business candidates or nearby competitors; it does not run Maps rank checks or Q&A.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearYesCoordinate and radius to search around.
limitNoMaximum businesses to return (1-50). Defaults to 20.
queryNoBusiness name or title text to match.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
categoriesNoBusiness categories to filter by (e.g. 'pizza_restaurant').

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
businessesYes
set_lead_competitorsSet lead competitors
Destructive
Inspect

Stores the named competitors shown side-by-side in a lead's report. Replaces the lead's existing competitor list.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadIdYesLead id from list_leads.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
competitorsYesReplace-all list of named competitors with rating/review counts and one concrete strengthNote each (e.g. "ranks #1 for 'dentist worcester ma'").

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
savedYes
set_lead_serp_checksSet lead SERP checks
Destructive
Inspect

Stores real search-ranking evidence for a lead's report: per keyword, the search volume, the lead's actual position, and the top-ranking business. Replaces the lead's existing checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
checksYesReplace-all list of SERP evidence rows: the money keywords, the lead's actual position (omit/null when they don't appear at all), and who holds the top spot.
leadIdYesLead id from list_leads.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
savedYes
set_lead_top_issuesSet lead top issues
Destructive
Inspect

Stores a lead's top audit findings in plain English — the raw material for the teaser email and report. Replaces the lead's existing list.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesYesReplace-all list (1-3) of the audit's most business-relevant findings, in plain English a non-technical owner understands, most important first.
leadIdYesLead id from list_leads.
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
savedYes
update_leadUpdate lead
Destructive
Inspect

Updates a saved lead's track, outreach status, owner name, contact email, or notes. Use after audits (status='audited') or when outreach state changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
trackNo
leadIdYesLead id from list_leads.
statusNo
aiNotesNoShort summary of what the assistants said.
auditIdNoId of the prospecting site audit (from run_site_audit) backing this lead's report — links the report to real issues with real page URLs.
ownerNameNo
projectIdYesRequired. The HarborRank project ID to scope this call to. Get one from list_projects.
aiMentionedNoWhether AI assistants mention this business when asked for a <niche> in <city>.
contactEmailNo
aiRecommendedNoThe business AI assistants recommend instead.
auditIssuesCountNoTotal issues found by the site audit. Store the findings themselves via set_lead_top_issues; SERP evidence via set_lead_serp_checks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
leadYes
metaNo
whoamiWho am I
Read-only
Inspect

Returns the authenticated user, organization, server mode, token scopes, plan, and current credit balance, with a warning once 75% of the monthly credits are used. Use this first to confirm connection context before choosing a project or running research tools, and again to confirm a plan change.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNo
modeYes
planYes
scopesYes
userIdYes
paidPlanYes
userEmailYes
lowCreditsYes
upgradeUrlYes
monthlyCreditsYes
organizationIdYes
creditsRemainingYes

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_keyword_metrics1 field changed
      • changedInput schema / properties / includeClickstreamData / description
        Previous value: -"Refine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). DOUBLES the credit cost of the call. Default false. No effect for countries served from Google Ads data."New value: +"Refine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). Use only when plural or misspelling variants need separate volumes. Default false. No effect for countries served from Google Ads data."
    • Changedresearch_keywords1 field changed
      • changedInput schema / properties / includeClickstreamData / description
        Previous value: -"Refine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). DOUBLES the credit cost of each seed. Default false (standard Google-Ads-derived volumes). No effect for countries served from Google Ads data."New value: +"Refine search volumes with clickstream data, which disaggregates Google Ads' grouped close-variant volumes (plurals/misspellings). Use only when plural or misspelling variants need separate volumes. Default false (standard Google-Ads-derived volumes). No effect for countries served from Google Ads data."
    • Changedresearch_lead1 field changed
      • changedInput schema / properties / includeAudit / description
        Previous value: -"Start a 10-page crawl of the lead's site (free; its findings land on the lead when it finishes). Defaults to true."New value: +"Start a 10-page crawl of the lead's site (its findings land on the lead when it finishes). Defaults to true."
  2. 3 tool updates
    • Addedget_ai_referral_traffic
    • Addedget_analytics_report
    • Addedget_landing_page_performance
  3. 2 tool updates
    • Addedget_upgrade_link
    • Changedwhoami6 fields changed
      • addedOutput schema / properties / lowCredits
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / monthlyCredits
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / paidPlan
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / plan
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / upgradeUrl
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "userId",
        -  "userEmail",
        -  "organizationId",
        -  "scopes",
        -  "mode",
        -  "creditsRemaining"
        -]New value: +[
        +  "userId",
        +  "userEmail",
        +  "organizationId",
        +  "scopes",
        +  "mode",
        +  "creditsRemaining",
        +  "plan",
        +  "paidPlan",
        +  "monthlyCredits",
        +  "lowCredits",
        +  "upgradeUrl"
        +]
  4. 2 tool updates
    • Addedget_lead_teardown
    • Addedresearch_lead
  5. 1 tool update
    • Changedrun_site_audit1 field changed
      • changedInput schema / properties / runLighthouse / description
        Previous value: -"Run Lighthouse on a sample of up to 10 representative pages (default true)."New value: +"Run Lighthouse on a sample of up to 10 representative pages (default true). Paid plans only; ignored on the Free plan."
  6. 32 tool updates
    • First observedcreate_project
    • First observeddelete_project
    • First observedfind_serp_competitors
    • First observedget_audit_issues
    • First observedget_audit_pages
    • First observedget_audit_status
    • First observedget_backlinks_overview
    • First observedget_backlinks_profile
    • First observedget_domain_keyword_suggestions
    • First observedget_domain_overview
    • First observedget_google_business_questions
    • First observedget_keyword_metrics
    • First observedget_local_serp_results
    • First observedget_rank_tracker
    • First observedget_ranked_keywords
    • First observedget_search_console_performance
    • First observedget_serp_results
    • First observedinspect_urls
    • First observedlist_business_categories
    • First observedlist_leads
    • First observedlist_projects
    • First observedlist_saved_keywords
    • First observedprospect_leads
    • First observedresearch_keywords
    • First observedrun_site_audit
    • First observedsave_keywords
    • First observedsearch_local_businesses
    • First observedset_lead_competitors
    • First observedset_lead_serp_checks
    • First observedset_lead_top_issues
    • First observedupdate_lead
    • First observedwhoami

Publisher details

Operator
HarborRank (harborrank.com), the company that builds and runs the HarborRank SEO platform and this MCP endpoint. · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Requires a HarborRank account on a paid plan (from $29/month; no free plan). Sign-in is OAuth 2.0 with Dynamic Client Registration, no custom OAuth app needed. Research tools spend the plan's monthly credits; Search Console tools need a Google Search Console property connected in the HarborRank app. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI agents to live SEO data and hosted tools for site audits, keyword research, competitor analysis, local SEO, and link prospecting, with guided workflows for structured search optimization.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to access self-hosted SEO data and workflows, including keyword research, rank tracking, competitor insights, backlinks, site audits, and AI visibility.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to run SEO audits and reporting over a user's own Search Console, Google Analytics, Bing, and keyword/competitor provider data, including page/index status, traffic comparisons, backlinks, and local crawl/internal-link analysis.
    1,440 npm
    578
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Agent-first SEO toolkit with 24 MCP tools for keyword research, rank tracking, site audits up to 50k pages, competitor analysis, content gap detection, domain reputation, backlink intelligence, Google Search Console integration, and AI-powered strategy generation with Claude, GPT, and Ollama. SQLite-backed and bring-your-own-key.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.