Koskamo

212medya Growth Check MCP

An official MCP server by 212medya that allows AI agents to audit public websites for B2B marketing readiness and AI search visibility. It checks technical SEO, mobile performance, lead conversion elements, trust signals, and AI crawler access (robots.txt, llms.txt) without requiring authentication.

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.

212medya Growth Check MCP logo, by 212medyaVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by 212medya
MCP endpoint (Streamable HTTP)
https://212medya.com.tr/mcp
Vendor documentation

What its tools do

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

Can change data (1)

3 of 3 have a description · 3 of 3 declare behavior hints · 3 of 3 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 212medya.com.tr ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Audit a public website for B2B marketing readiness and technical SEO issues
  • Check AI search readiness for crawlers like ChatGPT, Perplexity, and Claude
  • Analyze mobile performance metrics using Google PageSpeed Insights
  • Request an expert review from 212medya specialists based on audit results

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

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

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

212medya Growth Check audits public websites. Use audit_website for B2B marketing readiness (SEO, mobile speed, lead forms, trust, tracking, languages) and check_ai_search_readiness for whether AI assistants and AI search can crawl, read and cite the site. Tool results are in English: present them in the user's language and lead with the top priorities. Call request_expert_review only when the user explicitly asks 212medya to contact them, after they confirm the exact details to send.

Tools

3 advertised

audit_website — Audit a website for B2B marketing
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants a marketing audit of a public website, especially a B2B, manufacturer, exporter or service-business site: technical SEO, mobile performance (Google PageSpeed Insights), lead conversion (quote/contact forms, calls to action, click-to-call), trust signals (references, certifications, privacy policy, cookie consent), analytics and ad tracking tags, and language versions for target export markets. It fetches only the given page plus robots.txt and the sitemap, honors robots.txt, and returns category scores and prioritized fixes in English. Results for the same page are cached for up to 6 hours. Do not use it for AI crawler or AI search questions (use check_ai_search_readiness), for pages behind a login, or to monitor sites the user is not evaluating.

audit_website input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 3,
      "description": "Public website address to check, for example \"example.com\" or \"https://www.example.com/en/\". Only this page is analyzed, plus the site’s robots.txt and sitemap."
    },
    "target_languages": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[a-zA-Z]{2}$"
      },
      "maxItems": 10,
      "description": "Optional ISO 639-1 codes of the languages the business sells in, e.g. [\"en\",\"de\",\"ar\"]. Used to check for matching language versions. Defaults to [\"en\"]."
    },
    "include_performance": {
      "type": "boolean",
      "description": "Run the Google PageSpeed Insights mobile test (adds up to 30 seconds). Defaults to true."
    }
  }
}
audit_website output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url",
    "overall_score",
    "category_scores",
    "counts",
    "top_priorities",
    "findings",
    "detected_tags",
    "notes"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "counts": {
      "type": "object",
      "required": [
        "failed",
        "warnings",
        "passed"
      ],
      "properties": {
        "failed": {
          "type": "number"
        },
        "passed": {
          "type": "number"
        },
        "warnings": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "category",
          "status",
          "severity",
          "title",
          "detail"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail"
            ],
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "detected_tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "overall_score": {
      "type": "number"
    },
    "top_priorities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "category",
          "status",
          "severity",
          "title",
          "detail"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail"
            ],
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "category_scores": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
audit_website annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
check_ai_search_readiness — Check AI search readiness
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks whether a public website can be crawled, read and cited by AI assistants and AI search (ChatGPT search, Google AI Overviews, Bing/Copilot, Perplexity, Claude), or why AI tools do not show their company. It checks robots.txt rules for each AI crawler, Content-Signal directives, noindex/nosnippet restrictions, whether content is readable without JavaScript, FAQ content, Organization schema and sameAs links, the sitemap and llms.txt, and returns scores, a crawler access table and prioritized fixes in English. It does not measure how often the brand is actually mentioned in AI answers and does not test CDN or firewall bot blocking. Do not use it for general SEO or conversion audits (use audit_website).

check_ai_search_readiness input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 3,
      "description": "Public website address to check, for example \"example.com\" or \"https://www.example.com/en/\". Only this page is analyzed, plus the site’s robots.txt and sitemap."
    }
  }
}
check_ai_search_readiness output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url",
    "readiness_score",
    "category_scores",
    "counts",
    "top_priorities",
    "findings",
    "crawler_access",
    "notes"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "counts": {
      "type": "object",
      "required": [
        "failed",
        "warnings",
        "passed"
      ],
      "properties": {
        "failed": {
          "type": "number"
        },
        "passed": {
          "type": "number"
        },
        "warnings": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "category",
          "status",
          "severity",
          "title",
          "detail"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail"
            ],
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "crawler_access": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "crawler",
          "operator",
          "purpose",
          "type",
          "robots_txt",
          "rule_source"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "crawler": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "robots_txt": {
            "enum": [
              "allowed",
              "blocked"
            ],
            "type": "string"
          },
          "rule_source": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "top_priorities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "category",
          "status",
          "severity",
          "title",
          "detail"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail"
            ],
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "category_scores": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "number"
      }
    },
    "readiness_score": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
check_ai_search_readiness annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
request_expert_review — Request a 212medya expert review
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this only when the user explicitly asks to be contacted by 212medya, the digital marketing agency that publishes this app — for example to get help fixing audit findings or a proposal for SEO, AI search visibility, ads, web design or international marketing. Before calling, show the user exactly which details will be sent (name, email, company, optional website and phone, topic, message) and get their confirmation. The details are emailed to 212medya's team and stored in 212medya's lead database; a specialist replies by email. Each call sends a new request, so do not retry after a success. Do not use it to save or share audit results, or when the user only wants information.

request_expert_review input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name",
    "email",
    "company",
    "topic",
    "message",
    "user_confirmed"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 2,
      "description": "The user's full name."
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "maxLength": 254,
      "description": "Email address where 212medya should reply."
    },
    "phone": {
      "type": "string",
      "maxLength": 30,
      "description": "Phone number, only if the user chose to share it."
    },
    "topic": {
      "enum": [
        "website_audit",
        "ai_search_visibility",
        "seo",
        "google_ads",
        "linkedin_ads",
        "meta_ads",
        "international_marketing",
        "web_design",
        "other"
      ],
      "type": "string",
      "description": "Main area the user wants help with."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Company or organization name."
    },
    "message": {
      "type": "string",
      "maxLength": 1500,
      "minLength": 10,
      "description": "Short description of what the user needs, written or approved by the user. May summarize relevant audit findings the user wants reviewed."
    },
    "website": {
      "type": "string",
      "maxLength": 2048,
      "description": "Company website, if the user provided it."
    },
    "user_confirmed": {
      "type": "boolean",
      "const": true,
      "description": "Must be true, and only after the user has seen the details above and agreed to send them to 212medya."
    },
    "preferred_language": {
      "enum": [
        "tr",
        "en",
        "de",
        "ar",
        "es",
        "el",
        "ru",
        "az",
        "fa"
      ],
      "type": "string",
      "description": "Language the user prefers for the reply."
    }
  }
}
request_expert_review output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "submitted",
    "message"
  ],
  "properties": {
    "message": {
      "type": "string"
    },
    "submitted": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
request_expert_review annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": true
}

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
480 ms
95th percentile latency
480 ms

Maintenance history

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

  • · registry · passed · metadata changed · Source metadata updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
  • · probe · passed · 480 ms · metadata changed · 3 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 212medya-growth-check-mcp https://212medya.com.tr/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 212medya-growth-check-mcp --url https://212medya.com.tr/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start 212medya-growth-check-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "212medya-growth-check-mcp": {
      "type": "http",
      "url": "https://212medya.com.tr/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 212medya-growth-check-mcp https://212medya.com.tr/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://212medya.com.tr/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": {
    "212medya-growth-check-mcp": {
      "serverUrl": "https://212medya.com.tr/mcp"
    }
  }
}

Let your agent find its tools

Find servers like 212medya Growth Check 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 212medya Growth Check 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