# Pylon SEO

> Audit, rank-track and analyze SEO for sites via an authenticated MCP server.

- name: io.pylonseo/pylon-seo
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.pylonseo%2Fpylon-seo
- tools: https://api.protogrid.dev/v1/servers/io.pylonseo%2Fpylon-seo/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "pylon-seo": {
      "type": "http",
      "url": "https://api.pylonseo.io/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-13d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 31 of 31 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,100 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 31, about 3,100 tokens to load them all
- tool set hash: c7628c6a7f1c242c85ae9d1843453049
- badge: [![protogrid quality](https://protogrid.dev/badge/io.pylonseo/pylon-seo.svg)](https://protogrid.dev/servers/io.pylonseo/pylon-seo)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.pylonseo.io/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (31)

- `add_competitor`: Track a new competitor for a site by its bare domain (no protocol). Discovery scan is enqueued asynchronously.
- `add_keyword`: Track a new keyword for a site. `keyword` and `country_code` (ISO-3166-1 alpha-2, e.g. 'us') are required; `intent` (informational|commercial|transactional|navigational) is optional and estimated when omitted.
- `add_rank_alert`: Configure a rank-drop alert rule for a site. `drop_threshold` (positive int) fires when any tracked keyword drops that many positions between runs.
- `get_ai_overview_presence`: Google AI Overview coverage for a site: coverage %, delta vs previous run, per-intent buckets, per-keyword state (gained / lost / still-covered / not-covered).
- `get_ai_visibility`: AI visibility overview for a site: measured mention rate across configured AI engines (OpenRouter / OpenAI / Anthropic / Gemini / Perplexity), current engine set, planned engines.
- `get_audit_issues`: Top issues from the latest audit run for a site. Optional filter by severity (critical|high|medium|low). Returns up to `limit` (default 25, max 200) instances.
- `get_backlinks_domains`: Top referring domains for a site with the Pylon-computed 0-100 authority score.
- `get_bing_metrics`: Bing Webmaster Tools metrics for a site (organic; Bing has no Copilot API split). `dimension` = query|page|country|device|date (default query).
- `get_competitors`: Tracked competitors for a site with their latest snapshot (domain authority, visibility, organic keywords, estimated traffic, backlinks).
- `get_content_grade`: Cached content-grade summary for a URL on a site (from the on-page grader).
- `get_cwv`: Core Web Vitals (LCP, CLS, INP, FCP, TTFB) for a site from PageSpeed Insights — mobile + desktop snapshots.
- `get_gsc_metrics`: Google Search Console metrics for a site. `surface` = organic|ai_overview|ai_mode|discover_ai (default organic); `dimension` = query|page|country|device|date (default query).
- `get_keyword_gaps`: Top keyword-gap opportunities (keywords a competitor ranks for and the site does not, ordered by opportunity score).
- `get_keyword_rankings`: Tracked keyword positions + movement for a site (current + previous position, URL, country, device).
- `get_local_seo`: Local SEO overview for a site (rank-tracker with local intent). Returns tracked local keywords + rival domains + AI-only rivals.
- `get_market_analysis`: Market analysis overview for a site: tracked keyword demand aggregates, competitive concentration and provenance chips.
- `get_plans`: Pylon SEO plans and the caller's entitlement: the paid catalogue (Growth / Agency, monthly / yearly) with USD + INR prices, site limits, credits and features, plus the caller's current plan, site usage and trial state, and the website pricing_url where plans are purchased.
- `get_prompt_research`: Per-prompt AI research for a site (target share, leader, rivals, opportunity bucket).
- `get_rank_alerts`: Configured rank-drop alert rules for a site (thresholds + is_active flags).
- `get_scan_pages`: Newest pages from a site's latest crawl (status code, response time, size, depth, indexable). Windowed at 200 rows.
- `get_score_history`: Daily audit score history for a site (used for trend lines). Returns the most recent 90 samples.
- `get_serp_features`: Aggregate SERP-feature presence (AI Overview, Featured Snippet, People-Also-Ask, Local Pack, Video, Images, Shopping, Knowledge) across the site's tracked keywords, from the latest ranking run.
- `get_site`: Get one site's metadata (name, domain, status, verification state, last-audit / last-scan timestamps).
- `get_site_audit`: Latest SEO audit run for a site: overall + per-category scores and issue counts by severity.
- `get_site_changes`: Recent SEO changes detected between the two most recent crawls (title / meta / h1 / canonical / indexability / status code).
- `list_reports`: List stored report runs for the caller's organisation. Optional filter by `site_id` and `kind` (overview|seo_audit|rankings|competitors|ai_visibility).
- `list_sites`: List every SEO site in the authenticated user's organisation (id, name, domain, status, last audit timestamp). Use before any other tool to discover which site_ids are valid.
- `run_public_scan`: Run the anonymous single-URL SEO checker (public). Returns the same audit shape logged-in users see. Rate-limited per anonymous identity.
- `start_ranking_run`: Enqueue a keyword-rankings sweep for a site (resolves every tracked keyword's SERP position).
- `start_scan`: Enqueue a fresh crawl + audit run for a site. Idempotent: a running / queued run short-circuits.
- `submit_indexnow`: Push a URL batch to IndexNow (Bing/Yandex/Naver/Seznam) for a site. Requires an existing verified IndexNow key. All URLs must share the site's host.
