Search / com.toolsthatrank/serp-metrics
serp-metrics
R0· no sign-inImpression-weighted SERP position, click projection on your own CTR curve, share of voice
v1.0.0 · active · website · descriptor JSON · versions
Search / com.toolsthatrank/serp-metrics
R0· no sign-inImpression-weighted SERP position, click projection on your own CTR curve, share of voice
v1.0.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"serp-metrics": {
"type": "http",
"url": "https://toolsthatrank-mcp.lipmichal.workers.dev"
}
}
}claude mcp add --transport http serp-metrics https://toolsthatrank-mcp.lipmichal.workers.dev[mcp_servers.serp-metrics]
url = "https://toolsthatrank-mcp.lipmichal.workers.dev"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"serp-metrics": {
"type": "remote",
"url": "https://toolsthatrank-mcp.lipmichal.workers.dev",
"enabled": true
}
}
}{
"mcpServers": {
"serp-metrics": {
"type": "http",
"url": "https://toolsthatrank-mcp.lipmichal.workers.dev"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=serp-metrics&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdG9vbHN0aGF0cmFuay1tY3AubGlwbWljaGFsLndvcmtlcnMuZGV2In0%3D"
}{
"servers": {
"serp-metrics": {
"type": "http",
"url": "https://toolsthatrank-mcp.lipmichal.workers.dev"
}
}
}{
"mcpServers": {
"serp-metrics": {
"httpUrl": "https://toolsthatrank-mcp.lipmichal.workers.dev"
}
}
}extensions:
"serp-metrics":
enabled: true
name: "serp-metrics"
type: streamable_http
uri: "https://toolsthatrank-mcp.lipmichal.workers.dev"
timeout: 300
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky onestools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: impression_weighted_position (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); project_clicks_from_ctr_curve (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); share_of_voice (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)tools.token_costabout 985 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changesno tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-96% ~updated-73d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://toolsthatrank-mcp.lipmichal.workers.dev streamable-http | none | yes | 96% | 159 ms | 2025-06-18 | 2026-10-20 |
impression_weighted_position | Compute the impression-weighted average SERP position for a set of query rows, alongside the plain arithmetic mean and the gap between them. The arithmetic mean lets a 3-impression query count as much as a 30,000-impression one; the weighted figure describes where a typical impression actually happened. A positive weighting_shift means your high-volume queries rank worse than the unweighted average suggests. |
project_clicks_from_ctr_curve | Project how many clicks a set of query rows would earn at a target position instead of their current position, using a CTR curve THAT YOU SUPPLY. This server deliberately ships no built-in CTR table: every published average-CTR-by-position table is a third-party estimate over someone else's traffic, so applying one silently would disguise a guess as a measurement. Pass your own measured curve (Search Console clicks/impressions by position is the honest source). Positions between curve points are linearly interpolated; positions beyond the curve clamp to the last point rather than extrapolate, and are counted in clamped_row_count. If any row carries observed clicks, the output also reports how far the supplied curve is from your reality. |
share_of_voice | Compute share of voice across competing entities over a keyword set. Reports impression share always, and, if you supply a CTR curve, a weighted visibility share that accounts for the fact that an impression at position 1 is not worth an impression at position 9. Impression share is share of the supplied set only and says nothing about keywords you did not supply. |
Schemas: list_tools.
{
"name": "com.toolsthatrank/serp-metrics",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"remotes": [
{
"url": "https://toolsthatrank-mcp.lipmichal.workers.dev",
"type": "streamable-http"
}
],
"version": "1.0.0",
"websiteUrl": "https://toolsthatrank.com/",
"description": "Impression-weighted SERP position, click projection on your own CTR curve, share of voice"
}