Koskamo

Traffalyzer MCP

An official MCP server by Traffalyzer that allows AI assistants like Claude, Cursor, and VS Code to access SEO data, perform audits, and verify changes. It integrates with Search Console and Analytics to provide growth plans and measure the impact of SEO actions directly within the developer's environment.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Traffalyzer MCP logo, by TraffalyzerVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Traffalyzer
MCP endpoint (Streamable HTTP)
https://traffalyzer.com/api/mcp
Vendor documentation

What its tools do

15 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

15 of 15 have a description · 15 of 15 declare behavior hints · 13 of 14 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to traffalyzer.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Access SEO data and growth plans in Claude or Cursor
  • Verify if SEO changes are live via the dashboard
  • Ask natural language questions about site performance
  • Integrate Search Console and Analytics data into AI workflows

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
traffalyzer 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
15 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

15 advertised

list_domains — List domains
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all website projects (domains) in the user's Traffalyzer account, including their domain id, URL, plan status (free or paid) and the latest scan result with its overall score. Call this first — every domain-scoped tool needs a domain id from this list.

list_domains input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_domains annotations
{
  "readOnlyHint": true
}
next_actions — What to work on next
Advertised by the server during the last successful anonymous check.
Advertised read-only

The prioritised to-do list across ALL of the user's domains in a single call: critical and high-severity issues, open quests, the next unfinished growth-plan step, projects with a missing or stale scan, and missing integrations. Start here when the user asks what to improve, what to do next, or to 'optimise the site' without naming a specific domain — it saves querying every project separately. Each entry names the domain, an id or key to work with, and which tool to call next.

next_actions input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum entries, defaults to 15."
    },
    "domainId": {
      "type": "string",
      "description": "Restrict to a single project. Omit to cover all of them."
    }
  }
}
next_actions annotations
{
  "readOnlyHint": true
}
run_scan — Run scan
Advertised by the server during the last successful anonymous check.

Start a new SEO/UX scan (crawl) for one of the user's domains. Scans run asynchronously and usually take a few minutes; poll get_scan_status for progress and the resulting scores. If a scan is already in progress, its id is returned instead of starting a duplicate.

run_scan input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
run_scan annotations
{
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_scan_status — Scan status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Status and results of the most recent scan of a domain: whether it is pending, running, completed or failed, the overall score and its sub-scores (technical, on-page, engagement, AI visibility), pages crawled and the number of issues found.

get_scan_status input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
get_scan_status annotations
{
  "readOnlyHint": true
}
search_console_queries — Search Console keywords
Advertised by the server during the last successful anonymous check.
Advertised read-only

Keyword data from Google Search Console for one domain. intent=top returns the strongest keywords, intent=opportunities keywords ranking on positions 5-20 with potential, intent=movers the biggest winners and losers versus the previous period of equal length. Requires the user to have connected Search Console. Responses follow the account language (German by default).

search_console_queries input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Row count, defaults to 15."
    },
    "intent": {
      "enum": [
        "top",
        "opportunities",
        "movers"
      ],
      "type": "string",
      "description": "Which report. Defaults to top."
    },
    "window": {
      "enum": [
        "7d",
        "28d",
        "90d"
      ],
      "type": "string",
      "description": "Reporting window, defaults to 28d."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
search_console_queries annotations
{
  "readOnlyHint": true
}
keyword_history — Keyword history
Advertised by the server during the last successful anonymous check.
Advertised read-only

Month-by-month history of a single keyword from Google Search Console (clicks, impressions, impression-weighted position) plus the pages ranking for it. Use it to see how a query developed, whether it is seasonal, or which page Google shows for it. Pass the query exactly as Search Console lists it. 16 months for paid domains, 3 months otherwise. Requires the user to have connected Search Console. Responses follow the account language (German by default).

keyword_history input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId",
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "The exact search query, e.g. 'seo tool kostenlos'."
    },
    "months": {
      "anyOf": [
        {
          "type": "number",
          "const": 3
        },
        {
          "type": "number",
          "const": 16
        }
      ],
      "description": "History length in months, defaults to 16 (paid domains only; free gets 3)."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
keyword_history annotations
{
  "readOnlyHint": true
}
search_console_pages — Search Console pages
Advertised by the server during the last successful anonymous check.
Advertised read-only

Page-level Search Console performance for one domain: which pages get clicks and impressions, at which average position. Useful to find the pages that carry the organic traffic and the ones that underperform. Responses follow the account language (German by default).

search_console_pages input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Row count, defaults to 15."
    },
    "window": {
      "enum": [
        "7d",
        "28d",
        "90d"
      ],
      "type": "string",
      "description": "Reporting window, defaults to 28d."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
search_console_pages annotations
{
  "readOnlyHint": true
}
page_report — Page report
Advertised by the server during the last successful anonymous check.
Advertised read-only

A full report for a single page of the domain: search performance, analytics behavior (sessions, bounce rate, engagement time where connected), page classification and its top search queries. Responses follow the account language (German by default).

page_report input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId",
    "path"
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "Path of the page, e.g. '/pricing'."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
page_report annotations
{
  "readOnlyHint": true
}
traffic_trend — Traffic trend
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search performance over time for the whole site or a single page — is it getting better or worse, did a change have an effect. Weekly by default, daily with granularity=day when an exact date matters. Includes Plausible visitor data for the same buckets where the integration is connected. Responses follow the account language (German by default).

traffic_trend input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "Path of a single page. Omit for the whole site."
    },
    "window": {
      "enum": [
        "28d",
        "90d",
        "180d"
      ],
      "type": "string",
      "description": "Reporting window, defaults to 90d."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    },
    "granularity": {
      "enum": [
        "week",
        "day"
      ],
      "type": "string",
      "description": "Resolution of the series, defaults to week."
    }
  }
}
traffic_trend annotations
{
  "readOnlyHint": true
}
timeline_events — Timeline events
Advertised by the server during the last successful anonymous check.
Advertised read-only

Dated events on the site's history timeline: measures the user logged themselves, completed quests, fixed issues, ticked plan steps, CMS edits, detected wins, scans and Google ranking updates (core, spam …) with their rollout dates. Use it to explain why a curve moved, what was changed when, or whether a measure worked; pair it with traffic_trend. Free domains only get the last 28 days. Responses follow the account language (German by default).

timeline_events input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "Only events of this page (plus site-wide ones)."
    },
    "kinds": {
      "type": "array",
      "items": {
        "enum": [
          "MANUAL",
          "QUEST",
          "ISSUE",
          "PLAN_STEP",
          "CMS_EDIT",
          "WIN",
          "SCAN",
          "GOOGLE_UPDATE"
        ],
        "type": "string"
      },
      "description": "Only these kinds. Omit for all except scans."
    },
    "window": {
      "enum": [
        "28d",
        "90d",
        "180d",
        "16m"
      ],
      "type": "string",
      "description": "Window, defaults to 90d."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
timeline_events annotations
{
  "readOnlyHint": true
}
log_measure — Log measure
Advertised by the server during the last successful anonymous check.

Log a change the user made to their website themselves (e.g. 'added internal links to /blog/x', 'new images in the guide') on the history timeline. Traffalyzer then measures its effect automatically: 28 days before vs. 28 days after, adjusted for the rest of the site. Backdating is allowed up to 16 months; old enough entries are measured right away. Free domains can have 3 active measures. Never call this without an explicit user request.

log_measure input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId",
    "title"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD, defaults to today. Not in the future."
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    },
    "pages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Affected paths; omit for the whole site."
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "description": "What was done, short, in the user's language."
    },
    "category": {
      "enum": [
        "INTERNAL_LINKS",
        "CONTENT_UPDATE",
        "NEW_CONTENT",
        "TITLE_META",
        "MEDIA",
        "TECHNICAL",
        "STRUCTURED_DATA",
        "REDIRECT",
        "OFFPAGE",
        "RELAUNCH",
        "OTHER"
      ],
      "type": "string"
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
log_measure annotations
{
  "readOnlyHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
growth_plan — Growth plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

The domain's current growth plan: diagnosis, bottleneck, phases and steps. Without a stepKey the structure with all step keys is returned; with a stepKey the full step including rationale, implementation guidance and verification status. On free domains some step details are locked. Responses follow the account language (German by default).

growth_plan input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId"
  ],
  "properties": {
    "stepKey": {
      "type": "string",
      "description": "Key of a single step from the plan structure."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
growth_plan annotations
{
  "readOnlyHint": true
}
quests_and_issues — Quests and issues
Advertised by the server during the last successful anonymous check.
Advertised read-only

The domain's task list: quests (concrete recommendations with implementation guidance and XP rewards) and issues (technical findings from the latest crawl with affected URLs). Use kind=quest or kind=issue; pass an id for full details of a single entry. Responses follow the account language (German by default).

quests_and_issues input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId",
    "kind"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Id of a single entry for full details."
    },
    "kind": {
      "enum": [
        "quest",
        "issue"
      ],
      "type": "string",
      "description": "Which list to query."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Entry count, defaults to 10."
    },
    "status": {
      "type": "string",
      "description": "Only for kind=quest: OPEN, IMPLEMENTED, VERIFIED_SUCCESS, VERIFIED_PARTIAL, VERIFIED_NO_CHANGE, DISMISSED."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
quests_and_issues annotations
{
  "readOnlyHint": true
}
complete_quest — Complete quest
Advertised by the server during the last successful anonymous check.

Mark one of the user's quests as implemented after the recommended change has actually been made. Awards the quest's XP and starts result verification. Only quests with status OPEN can be completed; get quest ids from quests_and_issues with kind=quest. Never call this without an explicit user request.

complete_quest input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "questId"
  ],
  "properties": {
    "questId": {
      "type": "string",
      "description": "Quest id from quests_and_issues (kind=quest)."
    }
  }
}
complete_quest annotations
{
  "readOnlyHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
complete_plan_step — Complete plan step
Advertised by the server during the last successful anonymous check.

Tick off (or un-tick with done=false) a step of the domain's growth plan after the work has actually been done. Awards XP on first completion and starts result verification. Step keys come from the growth_plan tool. Only available on paid domains — the free preview is read-only. Never call this without an explicit user request.

complete_plan_step input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "domainId",
    "stepKey"
  ],
  "properties": {
    "done": {
      "type": "boolean",
      "description": "false un-ticks the step. Defaults to true."
    },
    "stepKey": {
      "type": "string",
      "description": "Step key from the growth_plan structure."
    },
    "domainId": {
      "type": "string",
      "description": "Domain id of one of the user's projects, as returned by list_domains."
    }
  }
}
complete_plan_step annotations
{
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1524 ms
95th percentile latency
1524 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1524 ms · metadata changed · 15 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http traffalyzer-mcp https://traffalyzer.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add traffalyzer-mcp --url https://traffalyzer.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable traffalyzer-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "traffalyzer-mcp": {
      "url": "https://traffalyzer.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "traffalyzer-mcp": {
      "type": "streamableHttp",
      "url": "https://traffalyzer.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start traffalyzer-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "traffalyzer-mcp": {
      "type": "http",
      "url": "https://traffalyzer.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http traffalyzer-mcp https://traffalyzer.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://traffalyzer.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "traffalyzer-mcp": {
      "serverUrl": "https://traffalyzer.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Traffalyzer MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Traffalyzer MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing