Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BISIBILITY_API_KEYYesA Bisibility API key. Accepts a project key (bsb_key_live_...) or personal access token (bsb_pat_live_...). Required.
BISIBILITY_BASE_URLNoOptional. The API v1 base URL. Defaults to https://eu.bisibility.com/api/v1. For self-hosted installs, set to your API v1 root.https://eu.bisibility.com/api/v1
BISIBILITY_PROJECT_IDNoOptional. Default project ID for project-implicit PAT tools. Must be public ID v3 format (e.g., prj_a1b2c3d4e5f6g7h8j9k0m2n3).
BISIBILITY_MCP_TOOLSETSNoOptional. Comma-separated allowlist of toolsets. Valid values: account, alerts, analytics, backlinks, checks, competitors, keywords, notifications, projects, providers, rank-history, saved-views, signals, sitemaps, system, team, tokens, webhooks. Unknown value prevents server start. When unset, all toolsets are registered.
BISIBILITY_MCP_READ_ONLYNoOptional. Set to '1', 'true', 'yes', or 'on' (case-insensitive) to disable write tools. When unset, write tools are registered.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_session_profileA

Report the effective profile of this MCP session: read_only, the active toolsets, tool_count, tool_names, canonical_names, and client_note. Answered locally from this server's registration; no REST call.

get_healthB

Check bisibility API health and configured SERP providers.

get_capabilitiesA

List the public bisibility API capabilities exposed for agent workflows. public catalog; for what this session can do call get_session_profile and get_project (readiness)

get_cloud_import_compatibilityA

Check whether a cloud export package can be imported: returns the running app version, the latest applied migration, and the cloud-import schema versions the API accepts. Anonymous preflight endpoint; no project scope or credential needed. Use before preparing a migration to confirm the export schema is still supported.

get_provider_ratesA

List public provider rate cards used for rank-check cost estimates. Each rate card is either flat-priced (per-check options such as standard, priority, live) or plan-priced (monthly plans with included checks). Anonymous endpoint; no project scope needed.

get_cost_estimateA

Estimate rank checks, result pages, and monthly provider cost for a keyword portfolio. Provide keywords, markets (locations), devices (1-2), and depth (10, 20, 50, or 100; default 100). Frequency supports daily, weekly, monthly, manual, paused, and custom_cron with cron_expression. Missing or invalid custom cron leaves monthly quantities and costs unknown. Pick a provider (default dataforseo) and optionally an option or plan key; see get_provider_rates. Anonymous endpoint.

get_meA

Get the authenticated user and all project memberships. Requires a personal access token.

update_meA

Update the authenticated user's display name. Requires a write PAT.

list_projectsA

List projects visible to the configured credential. Project keys return one project; personal access tokens return all project memberships.

create_projectC

Create a project. Requires a personal access token with write scope.

get_projectA

Get one bisibility project by project id.

search_locationsA

Search canonical keyword markets. Use the returned location_key verbatim when creating or updating keywords so an optional @language qualifier preserves the exact location-language pair.

update_projectB

Update a project's name or domain. At least one of name or domain is required.

delete_projectA

Permanently delete a project and all of its keywords, rank history, and settings. This cannot be undone. Use only after the user confirms deletion.

get_project_defaultsA

Get the effective rank-check schedule and SERP market defaults for a project. The response includes serp_depth, serp_stop_on_match, and source: explicit means the market was configured, derived means it was inferred from existing keywords, and fallback means the instance default was used.

preview_project_defaultsA

Preview the exact current defaults draft, source revision and impact without saving or provider work. Requires the server's settings permission. Review the returned draft before explicitly confirming it with update_project_defaults; do not fabricate or automatically confirm review fields.

update_project_defaultsA

Confirm a preview_project_defaults draft using its exact source hash, revision, token and stable command key in review (confirmed:true). Missing review is refused by current servers; stale/expired review requires a new preview. Never auto-confirm. Update the project default rank-check schedule, SERP depth, and SERP market. The schedule is replaced as a whole: omitted schedule fields (frequency, cron_expression, jitter_minutes, timezone) reset to their defaults (jitter 60, timezone UTC, no cron). serp_depth and serp_stop_on_match are independent of the schedule and keep their stored values when omitted. Provide country and device together, or a location_key, to move the default SERP market. Use search_locations and pass its location_key verbatim to preserve the exact location-language pair.

list_keywordsA

List the tracked keywords (search terms) of a project with their current rankings: latest_position, previous_position, ranking_url, target URL, tags, schedule, and market. Supports pagination, search, filters, and sorting. Use it for rank positions, rank tracking, keyword rankings, and SERP position lookups. Each keyword includes location_key, language_code, and language_label for its exact market pair. latest_position can be null after a failed check, with unknown observation coverage, or for absence within the requested depth. Read latest_check.status and observation_completeness. Only complete coverage supports absence within depth; a positive position remains valid with truncated coverage. latest_successful_check is the most recent completed observation and can also have unknown coverage.

list_ranked_keyword_suggestionsB

Paid provider lookup on the project's own DataForSEO account, about $0.02 per 100-keyword page on a cache miss. Results are cached for 12 hours and shared with the UI and API. already_tracked marks keywords the project tracks. Set max_cost_cents to have the server refuse a cache miss whose estimate is higher.

research_keywordsA

Requires API write scope. Paid keyword research uses the project's own DataForSEO account. When cost matters, call with estimate_only first for a free dry run, then use max_cost_cents as a best-effort request guard. Approximate per-source pricing comes from the current rate card exposed by get_provider_rates. Send one seed per call. Results are cached for 12 hours and shared with the API and UI. Clickstream-refined volumes double provider cost. already_tracked marks keywords the project tracks.

estimate_keyword_research_costA

Free. Returns the cost and eligibility of keyword research without calling a provider; the paid operation is research_keywords.

analyze_backlinksA

Requires API write scope because cache misses spend the project's own DataForSEO budget. Successful snapshots contain summary metrics and per-link rows with new or lost status. Optional 12-month history may be unavailable: history_unavailable marks a history failure with confirmed cost while summary and links remain available. With unknown accounting, the response remains failed (isError) and may retain a completed summary as current-response evidence, with cost_cents null and rows_status not_requested. This evidence is not a cached snapshot or a settled total and does not survive reload. Successful snapshots are cached for 24 hours. Call with estimate_only first for a free dry run, then use max_cost_cents as a best-effort request guard. Compute aggregate views from rows and treat them as "within fetched rows" only.

estimate_backlinks_costA

Free. Returns the cost and eligibility of a backlinks analysis without calling a provider; the paid operation is analyze_backlinks.

load_more_backlink_rowsA

Requires API write scope. Extends the current unexpired backlinks snapshot at the per-100-row provider rate. Requires the exact snapshot_ref from the latest successful analysis or append response; use the replacement reference returned by each append. Returns 409 snapshot_expired when no current snapshot exists. Stale, mismatched or expired references return 409 before provider work; read or analyze the current snapshot before retrying. This tool cannot extend failed current-response summary evidence.

analyze_domain_overviewA

Requires API write scope because a cache miss can spend the project's own DataForSEO budget. Call with estimate_only=true and max_cost_cents=0 first for a free estimate. Every call requires an explicit max_cost_cents. fresh=true bypasses cache but never removes the cost cap. Returns an estimate, cached report, or report with charged keyword and page module outcomes.

estimate_domain_overview_costA

Free. Returns the cost and eligibility of a Domain Overview analysis without calling a provider; the paid operation is analyze_domain_overview.

load_domain_overview_historyA

Requires API write scope and an explicit max_cost_cents because a cache miss can spend provider budget. Use zero for cache-only. Loads the separately priced historical index series for an unexpired Domain Overview snapshot. snapshot_expired means analysis must run again before history can be loaded.

load_domain_overview_keywordsA

Requires API write scope and an explicit max_cost_cents because a cache miss can spend provider budget. Use zero for cache-only. Loads one ranked-keyword page for the current Domain Overview target; snapshot_expired means analysis must run again first.

load_domain_overview_pagesA

Requires API write scope and an explicit max_cost_cents because a cache miss can spend provider budget. Use zero for cache-only. Loads one relevant-page result page for the current Domain Overview target; snapshot_expired means analysis must run again first.

get_keyword_metricsA

Requires API write scope. Paid metrics lookup uses the project's own DataForSEO account. When cost matters, call with estimate_only first for a free dry run, then use max_cost_cents as a best-effort request guard. Approximate pricing per 100 fetched keywords comes from the current rate card exposed by get_provider_rates. Batches contain up to 700 keywords and cache each keyword for 12 hours, shared with the API and UI. Clickstream-refined volumes double provider cost.

add_keywordsA

Add one or more keywords to a project, optionally with tags, target URL, and schedule. Use search_locations and pass its location_key verbatim; an @language qualifier selects a non-default language for that location.

get_keywordA

Get a keyword and its latest rank position by keyword id, including location_key, language_code, and language_label for its exact market pair. latest_position can be null after a failed check, with unknown observation coverage, or for absence within the requested depth. Read latest_check.status and observation_completeness. Only complete coverage supports absence within depth; a positive position remains valid with truncated coverage. latest_successful_check is the most recent completed observation and can also have unknown coverage.

update_keywordB

Update keyword metadata such as text, country, device, target URL, tags, or schedule. Use search_locations and pass its location_key verbatim; an @language qualifier selects a non-default language for that location.

set_keyword_target_urlB

Set or clear the target URL used when evaluating a keyword ranking.

delete_keywordA

Delete one keyword by keyword id. Use only after the user confirms deletion.

bulk_update_keywordsB

Bulk mutate keywords by adding tags, removing tags, setting frequency, setting target URL, or deleting.

run_rank_checkA

Run a provider-backed rank check for one keyword. Requires write access and may incur provider cost. Ask for explicit user approval immediately before calling; this server cannot enforce the client's confirmation UI. The deployment selects inline or queued execution. A queued response contains an rcr_ run ID, not a check_ ID. Follow get_rank_history for that run_id until terminal, then use its check_ ID with get_rank_check_result. The async option only requests an early response. Set max_cost_cents to have the server refuse the check when its preflight estimate is higher.

get_rank_historyA

List historical rank checks for a keyword with date, status, and pagination filters. Read status and observation_completeness before interpreting position null. Only complete coverage supports absence within depth; a positive position remains valid with truncated coverage. Unknown or legacy coverage does not establish absence. error_code is a stable reason (provider_billing, provider_auth, provider_rate_limited, provider_transient); retry only for provider_rate_limited or provider_transient.

export_rank_historyA

Export project rank history as cursor-paginated JSON. Version 1 preserves legacy rows; version 2 retains raw observations/attempts, frozen scope/time and quality metadata. For full streamed CSV dumps, use the REST endpoint directly.

list_local_monitor_runsB

Read original retained Local evidence and honest quality/cost uncertainty. This never launches provider work, schedules, or accounting writes.

get_local_monitor_run_resultsB

Read original retained Local evidence and honest quality/cost uncertainty. This never launches provider work, schedules, or accounting writes.

list_local_monitor_point_listingsC

Read original retained Local evidence and honest quality/cost uncertainty. This never launches provider work, schedules, or accounting writes.

list_local_monitor_point_historyC

Read original retained Local evidence and honest quality/cost uncertainty. This never launches provider work, schedules, or accounting writes.

export_local_monitor_runA

Read original retained Local evidence and honest quality/cost uncertainty. This never launches provider work, schedules, or accounting writes.

list_rank_check_runsB

Read retained execution states, including cancelled, blocked and deferred outcomes without observations. Does not launch checks, retry provider requests or change schedules.

get_rank_check_runA

Read retained execution states, including cancelled, blocked and deferred outcomes without observations. Does not launch checks, retry provider requests or change schedules.

list_sitemap_monitorsA

List the project sitemap monitor, including its status and latest snapshot summary.

enable_sitemap_monitorA

Enable the project sitemap monitor. The next scheduled worker sync fetches the sitemap; enabling does not fetch immediately.

disable_sitemap_monitorB

Disable the project sitemap monitor while retaining its existing snapshots.

get_rank_check_resultA

Get one rank check result by check id. Read status and observation_completeness before interpreting position null. Only complete coverage supports absence within depth; a positive position remains valid with truncated coverage. Unknown or legacy coverage does not establish absence. error_code is a stable reason (provider_billing, provider_auth, provider_rate_limited, provider_transient); retry only for provider_rate_limited or provider_transient.

create_signalA

Ingest a signal for the key-scoped project: an external event such as a deploy, CMS content change, or custom API event that may explain ranking movements. source must be deploy, cms, or api; type is a dot-separated identifier such as "deploy.completed" or "cms.page_updated". Optionally attach an ISO-8601 happened_at (defaults to now), a related keyword_id, an http(s) url, a severity (info, warning, or critical), and a JSON payload of up to 8KB.

list_signalsA

List signals for a project, newest first. Filter by source (including system sources such as rank_tracker or search_analytics), exact type, and a happened-at date range via from/to ISO-8601 date-times, with cursor pagination.

list_traffic_snapshotsA

List stored page traffic snapshots collected from the project's own connected analytics accounts, filtered by date range and optional page paths.

list_search_performance_query_statsB

Fetch live query statistics from one of the project's own connected search-performance accounts. Provider rate limits and reauthorization rules apply. query is an exact match unless query_match is contains; rows aggregate all countries and devices.

sync_project_trafficB

Synchronize traffic snapshots from the project's own connected analytics accounts now. Provider rate limits and connection authorization rules apply.

list_api_keysA

List API keys for the authenticated project, including revoked keys.

create_api_keyA

Create a new API key for the authenticated project. The raw token is returned once in the response and cannot be retrieved again; store it securely.

revoke_api_keyA

Revoke an API key by key id. Revocation is immediate and cannot be undone; revoking the key this server is configured with locks the server out. Use only after the user confirms revocation.

list_project_api_keysB

List API keys scoped to a specific project, including revoked keys.

create_project_api_keyA

Create a project-scoped API key for CI or automation. The raw key is returned once.

list_personal_tokensB

List the user's personal access tokens. Requires an admin PAT.

create_personal_tokenA

Create a personal access token. The raw account-wide token is returned once. Requires an admin PAT.

revoke_personal_tokenB

Revoke a personal token by id, or pass "current" to revoke the configured token.

list_webhooksB

Webhook endpoints: list the per-project HTTP URLs that notifications and events are delivered to.

create_webhookB

Create a webhook endpoint. The HMAC secret is write-only.

update_webhookB

Update a webhook endpoint or rotate its write-only HMAC secret.

delete_webhookB

Delete a webhook endpoint. Requires admin access.

list_alert_rulesB

Alert rules: list the per-project conditions that decide when a notification fires.

create_alert_ruleC

Create an alert rule for project rank changes, thresholds, SERP features, or competitors.

update_alert_ruleA

Update an alert rule by rule id. The API replaces the whole rule configuration, so name and condition_type are required even when updating a single field.

delete_alert_ruleA

Delete an alert rule by rule id. Use only after the user confirms deletion.

list_triggered_alertsC

List triggered alerts for a project.

mute_triggered_alertA

Mute one firing alert for 24 hours. This changes shared alert state for the whole project team.

mark_project_alerts_readA

Mark every firing alert in the project as read for the whole project team.

list_team_membersC

List team members for a project.

list_team_invitesA

List pending team invites for a project.

create_team_inviteC

Invite a user to a project team with an admin, member, or viewer role.

revoke_team_inviteB

Revoke a pending project team invite.

resend_team_inviteB

Resend a pending team invitation and replace its expiration and token.

update_team_member_roleA

Change a non-owner project member role to admin, member, or viewer. Ownership transfer remains UI-only.

remove_team_memberA

Permanently remove a non-owner project member. Confirm the user's intent before calling this tool.

list_providersA

List the data provider connections of a project: SERP rank-check providers (dataforseo, serpapi) and analytics integrations (gsc, ga4, plausible), with connection status, priority, and enabled state. Use it for integrations, data sources, and provider credentials status. status is the catalog state; connection_status says whether the project can use the provider.

connect_providerA

Connect or update credentials for a project provider. SERP providers are dataforseo and serpapi; analytics providers are ga4, gsc, and plausible. For Plausible, credentials.login is the site domain configured in Plausible (site_id, for example example.com) and defaults to the project domain when omitted; credentials.api_key is the Stats API token. Self-hosted providers such as Plausible accept an optional credentials.endpoint base URL. Use priority for ordering (0 promotes the provider to primary and renumbers the rest; omitted keeps a reconnected provider's place and appends a new one); the deprecated primary=true alias promotes priority 0 and primary=false is a no-op.

test_provider_connectionA

Test provider credentials or the saved provider connection. For Plausible, credentials.login is the site domain configured in Plausible (site_id) and defaults to the project domain when omitted; credentials.api_key is the Stats API token. Self-hosted providers such as Plausible accept an optional credentials.endpoint base URL. A successful test returns message "Connected." or "Connected · ." for analytics providers.

update_provider_settingsB

Update provider settings such as enabled state or priority. primary is a deprecated compatibility alias: true promotes priority 0 and false is a no-op.

set_provider_enabledB

Enable or disable a provider for a project.

set_provider_priorityB

Set provider priority for a project. Lower numbers are preferred first.

set_primary_providerA

Deprecated compatibility tool. true promotes priority 0; false is a legacy no-op. Use set_provider_priority for new calls.

disconnect_providerA

Disconnect a provider from a project. Use only after the user confirms deletion.

list_saved_keywordsA

List keyword ideas saved without rank tracking for a project.

create_saved_keywordsA

Save keyword ideas without starting paid rank tracking. Keywords already tracked or saved are skipped.

delete_saved_keywordA

Delete one saved keyword. Use only after the user confirms deletion.

list_saved_viewsB

List saved keyword views for a project.

create_saved_viewA

Create a saved keyword view for a project. Known country filter values: 'all' or a supported market country code such as us, gb, ca, au, de, fr, es, it, nl, se, pl. Known serp filter values: ai, featured, image, paa, sitelinks, video. The API validates both against its data-driven market list.

delete_saved_viewA

Delete a project saved view. Use only after the user confirms deletion.

list_competitorsC

List the competitor domains tracked for a project (rival sites, competing domains) with their market data such as share of voice and positions, plus competitor suggestions. Use it for competitor analysis, competing sites, and rival rankings.

add_competitorB

Add a tracked competitor domain to a project.

remove_competitorC

Remove a tracked competitor from a project.

get_notification_preferencesA

Notification channel switches: get which channels (email, Slack, webhook) are turned on for the project. Returns no addresses or URLs; use list_webhooks for where notifications are sent.

update_notification_preferencesA

Notification channel switches: turn the project's notification channels (email, Slack, webhook) on or off. Does not create or change webhook endpoints; use create_webhook or update_webhook for those.

list_migration_tokensB

List active migration tokens for a project.

mint_migration_tokenB

Mint a migration token for a project.

revoke_migration_tokenB

Revoke a project migration token.

get_project_contextA

Read the saved business, audience, products, goals and agent rules for this project.

update_project_contextA

Replace all five context fields. Requires project write scope and a member role.

list_agent_reportsB

Read saved project analyses. Results are restricted to the project and its members.

create_agent_reportA

Save an agent analysis with provenance. Its deep link inherits existing project access controls. Producer kinds site_audit, ai_visibility and prompt_explorer are reserved and rejected here.

get_agent_reportA

Read one saved analysis. A report ID never grants access to another project.

analyze_ai_visibilityA

Inspect provider-observed ChatGPT or Google AI Overview mentions and citations. This is a limited provider dataset, not all user conversations. Requires BYOK or deployment credits, an explicit cost cap, and project write scope.

get_ai_research_catalogB

Read the free current provider AI model, locale, and cost-policy capabilities. This read never initiates paid work.

compare_ai_promptsA

Run the same synthetic prompt against supported models and compare answers, brand mentions and returned citations. These tests are not observed ChatGPT/AIO visibility. Requires a guaranteed hard cap or explicit actual-cost consent with an advisory estimate limit, and project write scope.

run_site_auditA

Crawl the project domain only, with SSRF protection, at most 15 pages and a 15-second total deadline. Save page signals and URL issues as a report. No paid provider request or Lighthouse.

list_site_auditsB

Read the saved bounded crawl history for this project.

get_site_auditB

Read saved page signals and issues for one project crawl.

list_ai_tracking_topicsB

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

create_ai_tracking_topicC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

update_ai_tracking_topicC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

archive_ai_tracking_topicC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

list_ai_tracking_promptsC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

create_ai_tracking_promptB

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

update_ai_tracking_promptC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

archive_ai_tracking_promptC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

list_ai_tracking_schedulesC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

create_ai_tracking_scheduleC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

update_ai_tracking_scheduleC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

archive_ai_tracking_scheduleC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

preview_ai_tracking_runA

Review capability, credentials, budget and price before paid AI tracking. Preview never submits a provider task.

create_ai_tracking_runB

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

list_ai_tracking_runsC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

get_ai_tracking_runB

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

list_ai_tracking_samplesA

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

cancel_ai_tracking_runC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

retry_ai_tracking_runC

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

get_ai_tracking_historyC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

get_ai_tracking_trendsC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

export_ai_tracking_evidenceC

Read project-scoped AI tracking evidence with original provenance, partial states, and cost uncertainty.

suggest_ai_tracking_promptsB

Read the complete project context and authoritative competitors for explicit review. Returned manual templates are heuristics with no measured popularity. This never generates with a model, saves a prompt or starts paid provider work.

accept_ai_tracking_suggestionsB

Manage project-scoped AI tracking. Preserve immutable revisions, explicit budget consent, and stable retry keys. This does not start an automatic paid baseline.

ai_tracking_suggestions_previewA

Review the full business context, chosen competitors, model and market before model generation. This spend-free forecast never calls a model or reserves budget; its estimate is not a guaranteed maximum.

ai_tracking_suggestions_generateA

Generate editable hypotheses from the exact reviewed preview with explicit paid consent and a stable retry UUID. Generated prompts are hypotheses with no measured popularity and are saved only after separate acceptance.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.9/5.0

Scored across 140 tools

Disambiguation2/5

Many tools, especially the AI tracking block, share identical boilerplate descriptions (e.g., list_ai_tracking_schedules/topics/prompts/runs/samples all say 'Read project-scoped AI tracking evidence...', while create/update/archive variants all say 'Manage project-scoped AI tracking...'), forcing agents to rely on names alone. Overlaps also appear among provider settings (update_provider_settings vs set_provider_enabled/set_provider_priority vs deprecated set_primary_provider) and saved views/keywords.

Naming Consistency4/5

Tool names are predominantly consistent snake_case verb_noun (list_keywords, create_project, update_webhook, delete_saved_view). A few deviations exist, such as ai_tracking_suggestions_preview/generate (noun-first) and mixed singular/plural resource forms (delete_keyword vs add_keywords), but the pattern remains predictable overall.

Tool Count1/5

With 140 tools, the surface far exceeds the typical 3–15 well-scoped range and crosses the 50+ extreme threshold. Even for a broad SEO/AI visibility platform, this volume overwhelms an agent and makes coherent selection difficult.

Completeness4/5

The surface covers a wide lifecycle: projects, keywords, rank checks, backlinks, domain overview, AI tracking, site audits, alerts, webhooks, team, tokens, providers, signals, and traffic. Minor gaps remain (e.g., no update/get for saved views or saved keywords, no get_competitor or get_alert_rule), but agents can work around them via list operations.

Maintenance

ActivityActive
ResponsivenessNo issues