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.
https://traffalyzer.com/api/mcpWhat its tools do
15 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (11)
Can change data (4)
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
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
{
"tools": {
"listChanged": true
}
}Tools
15 advertised
list_domains — List domains
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"readOnlyHint": true
}next_actions — What to work on next
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.
{
"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."
}
}
}{
"readOnlyHint": true
}run_scan — Run scan
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.
{
"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."
}
}
}{
"readOnlyHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_scan_status — Scan status
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.
{
"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."
}
}
}{
"readOnlyHint": true
}search_console_queries — Search Console keywords
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).
{
"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."
}
}
}{
"readOnlyHint": true
}keyword_history — Keyword history
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).
{
"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."
}
}
}{
"readOnlyHint": true
}search_console_pages — Search Console pages
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).
{
"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."
}
}
}{
"readOnlyHint": true
}page_report — Page report
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).
{
"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."
}
}
}{
"readOnlyHint": true
}traffic_trend — Traffic trend
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).
{
"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."
}
}
}{
"readOnlyHint": true
}timeline_events — Timeline events
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).
{
"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."
}
}
}{
"readOnlyHint": true
}log_measure — Log measure
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.
{
"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."
}
}
}{
"readOnlyHint": false,
"idempotentHint": false,
"destructiveHint": false
}growth_plan — Growth plan
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).
{
"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."
}
}
}{
"readOnlyHint": true
}quests_and_issues — Quests and issues
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).
{
"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."
}
}
}{
"readOnlyHint": true
}complete_quest — Complete quest
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.
{
"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)."
}
}
}{
"readOnlyHint": false,
"idempotentHint": false,
"destructiveHint": false
}complete_plan_step — Complete plan step
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.
{
"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."
}
}
}{
"readOnlyHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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.
- 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.
Claude Code
claude mcp add --transport http traffalyzer-mcp https://traffalyzer.com/api/mcpCodex
codex mcp add traffalyzer-mcp --url https://traffalyzer.com/api/mcpCursor
{
"mcpServers": {
"traffalyzer-mcp": {
"url": "https://traffalyzer.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"traffalyzer-mcp": {
"type": "streamableHttp",
"url": "https://traffalyzer.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"traffalyzer-mcp": {
"type": "http",
"url": "https://traffalyzer.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http traffalyzer-mcp https://traffalyzer.com/api/mcpClaude Desktop
https://traffalyzer.com/api/mcpWindsurf
{
"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.
Other developer tools servers
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.