# Semrush

> Semrush MCP Pack — SEO analytics via the Semrush Analytics API.

- name: io.github.pipeworx-io/semrush
- version: 0.1.2
- connection class: R0 (autonomous)
- trust: 97/100
- quality: –/100 (not scored)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fsemrush
- tools: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fsemrush/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "semrush": {
      "type": "http",
      "url": "https://gateway.pipeworx.io/semrush/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-97% +updated-24d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality –/100 (not scored)

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-03-26; 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: n/a (weight 30)

- n/a `tools.descriptions`, `tools.description_length`, `tools.schemas`, `tools.annotations`, `tools.directory_hints`, `tools.token_cost`, `tools.api_dump`: tool list unknown (behind auth, not probed, or empty)

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

- n/a `stability.changes`, `stability.rug_pull`: tool list unknown

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

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

- tools: unknown
- tools last changed: 2026-10-16T06:49:14.227Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.pipeworx-io/semrush.svg)](https://protogrid.dev/servers/io.github.pipeworx-io/semrush)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `resolution_audit` removed
  - Extract the settlement clause of a single Polymarket or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at, the precision of the computation (e.g. "1-minute candle close" vs "60-second trailing average" vs "election outcome"), the evidence standard (official_source | consensus_reporting | any_credible_report | unspecified), and void_handling (cancellation/postponement settlement — reused verbatim from bet_research's cancellation_rule detector, not re-derived). Parses Polymarket's `description` field (fetched via polymarket_market) or Kalshi's `rules_primary` + `rules_secondary` fields (fetched via kalshi_market) with regex + a small vocabulary — no LLM pass, so an unusual clause reports confidence:"low" rather than a guess. Pass `market` as a Polymarket slug/URL or a Kalshi market ticker (e.g. "KXBTCD-26SEP1317-T66999.99"); a Kalshi EVENT ticker (e.g. "KXBTCD-26SEP1317") also works — it picks one representative market under that event, since the settlement mechanism is normally shared across all strikes/legs in one event. Use this before treating a polymarket_kalshi_spread row as a real arbitrage: two ladders that look alike can settle on different sources, at different times, with different precision — this tool is how you check. Pair with resolution_diff to compare two markets directly. KNOWN GAP: idiosyncratic phrasing that doesn't match the vocabulary returns confidence:"low" and evidence_standard:"unspecified" rather than an LLM-guessed answer.
- 2026-10-16 `ask_pipeworx_grounded` removed
  - Hallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 6,875 across 1811 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verbatim quote), confidence, source, fetched_at, refusal_reason:null} on success, OR an explicit refusal {answer:null, refusal_reason:"not_in_source"|"no_tool_match"|"tool_error"|"data_truncated"|"llm_error"} when the data doesn't directly answer. Use whenever an answer will be quoted, cited, or acted on, and the agent must not invent facts (financial verdicts, legal claims, medical lookups, public statements). Costs one extra LLM call vs ask_pipeworx — prefer ask_pipeworx for casual lookups.
- 2026-10-16 `organic_competitors` removed
  - Organic search competitors for a domain (Semrush type=domain_organic_organic). Returns parsed rows with columns: Dn (competitor domain), Cr (competition level), Np (common keywords), Or (competitor organic keywords), Ot (competitor organic traffic), Oc (organic cost). Consumes your Semrush API units.
- 2026-10-16 `backlinks_overview` removed
  - Backlinks summary for a domain or URL (Semrush type=backlinks_overview). Returns parsed rows with columns: target, target_type, total (total backlinks), domains_num (referring domains), urls_num (referring URLs), ips_num (referring IPs), follows_num (dofollow), nofollows_num, texts_num, images_num, score (authority score). Note: backlinks reports are not regional — there is no `database` param. Consumes your Semrush API units.
- 2026-10-16 `keyword_overview` removed
  - Keyword overview (Semrush type=phrase_this): search metrics for a single keyword phrase. Returns parsed rows with columns: Ph (phrase), Nq (search volume), Cp (CPC), Co (competition 0-1), Nr (number of organic results), Td (trend, last 12 months as |-separated values). Consumes your Semrush API units.
- 2026-10-16 `domain_paid_keywords` removed
  - Paid (AdWords/PPC) keywords a domain bids on (Semrush type=domain_adwords). Returns parsed rows with columns: Ph (keyword phrase), Po (ad position), Nq (search volume), Cp (CPC), Ur (landing page URL), Tg (traffic), Tc (traffic cost), Co (competition), Nr (number of results). Consumes your Semrush API units.
- 2026-10-16 `domain_organic_keywords` removed
  - Top organic search keywords a domain ranks for (Semrush type=domain_organic). Returns parsed rows with columns: Ph (keyword phrase), Po (current position), Pp (previous position), Nq (search volume), Cp (CPC), Ur (ranking URL), Tr (traffic %), Co (competition), Nr (number of results). Consumes your Semrush API units.
- 2026-10-16 `domain_overview` removed
  - Domain overview (Semrush type=domain_ranks): high-level SEO/PPC summary for a domain. Returns parsed rows with columns: Db (database), Dn (domain), Rk (Semrush rank), Or (organic keywords count), Ot (organic traffic), Oc (organic traffic cost), Ad (adwords/paid keywords count), At (paid traffic), Ac (paid traffic cost). Consumes your Semrush API units.
- 2026-10-16 `recall` removed
  - Retrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.
- 2026-10-16 `remember` removed
  - Save data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a key-value pair scoped by your identifier. Authenticated users get persistent memory; anonymous sessions retain memory for 24 hours. Pair with recall to retrieve later, forget to delete.

Full history: https://api.protogrid.dev/v1/servers/io.github.pipeworx-io%2Fsemrush/changes

## Remotes

- https://gateway.pipeworx.io/semrush/mcp (streamable-http, auth none, reachable true, uptime30d 0.9741379)

## Packages

_none_

## Tools (0)

_none observed_
