Skip to content

Wincher MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.3.4 · published by io.usefulapi

Read Wincher keyword rankings, SERPs, competitors and history; add keywords, groups and notes.

Deletes · 1Changes · 2

22 tools: 1 can delete or cancel things, 2 change things and 19 only read.

Scanned Oct 22, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http wincher https://wincher.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

22 tools

Deletes or cancels 1Claude Code: deny
  • wincher_add_keywordsWRITE: start tracking up to 50 new keywords on ONE website.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_add_keywords" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: start tracking up to 50 new keywords on ONE website. EACH keyword uses one keyword slot of the plan's keyword quota (see wincher_get_account), and it is tracked and updated from then on; this tool cannot remove keywords again. Each keyword may name a preferred_url (the landing page expected to rank). Invalid or already-tracked keywords are ignored by Wincher (not created). 'groups' are keyword group NAMES to put every keyword in (may be empty; use names from wincher_list_groups, an unknown name may create a new group). POST /websites/{website_id}/keywords/bulk.

    Annotations the server declares

    • title: Add keywords to track
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 2Claude Code: ask
  • wincher_create_annotationWRITE: add a user annotation (a note shown on the ranking graphs, e.g.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_create_annotation" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add a user annotation (a note shown on the ranking graphs, e.g. 'Launched new landing page') for a date, optionally tied to specific keywords; without keyword_ids it is a global note for the website. Visible to everyone with access to the website. Uses no keyword quota. POST /websites/{website_id}/annotations.

    Annotations the server declares

    • title: Create annotation
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • wincher_create_groupWRITE: create a keyword group on a website, optionally containing existing keywords (ids from wincher_list_keywords).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_create_group" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: create a keyword group on a website, optionally containing existing keywords (ids from wincher_list_keywords). Uses no keyword quota. POST /websites/{website_id}/groups.

    Annotations the server declares

    • title: Create keyword group
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 19Claude Code: allow
  • wincher_get_accountThe Wincher account behind the token: id, timezone and the plan limits with current usage (websites, users, keywords, keyword lookups, map-tracking credits, history days).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_account" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    The Wincher account behind the token: id, timezone and the plan limits with current usage (websites, users, keywords, keyword lookups, map-tracking credits, history days). Check keyword usage here before adding keywords. GET /account.

    Annotations the server declares

    • title: Get account and plan limits
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_groupOne keyword group with its keyword ids and (optionally) ranking summary for the period.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_group" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One keyword group with its keyword ids and (optionally) ranking summary for the period. GET /websites/{website_id}/groups/{group_id}.

    Annotations the server declares

    • title: Get keyword group
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_keywordOne tracked keyword with its groups, volume, CPC, difficulty and (default) ranking for the period.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_keyword" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One tracked keyword with its groups, volume, CPC, difficulty and (default) ranking for the period. GET /websites/{website_id}/keywords/{keyword_id}.

    Annotations the server declares

    • title: Get keyword
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_keyword_ranking_historyHistorical position (or estimated traffic) for ONE keyword as time series, optionally split per ranking page or per competitor.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_keyword_ranking_history" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Historical position (or estimated traffic) for ONE keyword as time series, optionally split per ranking page or per competitor. GET /websites/{website_id}/keyword/{keyword_id}/ranking-history.

    Annotations the server declares

    • title: Get keyword ranking history
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_keyword_serpsThe most recent search result pages Wincher stored for a keyword (up to 30): date, search volume, SERP features and the ranking results (position, URL, domain, traffic).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_keyword_serps" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    The most recent search result pages Wincher stored for a keyword (up to 30): date, search volume, SERP features and the ranking results (position, URL, domain, traffic). GET /websites/{website_id}/keywords/{keyword_id}/serps.

    Annotations the server declares

    • title: Get keyword SERPs
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_ranking_history_bulkHistorical positions for up to 50 keywords at once (one time series per keyword).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_ranking_history_bulk" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Historical positions for up to 50 keywords at once (one time series per keyword). This is a read: it uses POST only because the keyword id list goes in the body. POST /websites/{website_id}/ranking-history.

    Annotations the server declares

    • title: Get ranking history for several keywords
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_userThe Wincher user the token belongs to: id, role, state, project access and profile (name, email, language).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_user" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    The Wincher user the token belongs to: id, role, state, project access and profile (name, email, language). GET /user.

    Annotations the server declares

    • title: Get current user
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_get_websiteOne tracked website with its settings, competitors, brand keywords, counts and (for the period) ranking summary.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_get_website" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "wincher_get_website" says "get" and "website": it reads web pages, which anyone can write.
    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    One tracked website with its settings, competitors, brand keywords, counts and (for the period) ranking summary. GET /websites/{website_id}.

    Annotations the server declares

    • title: Get website
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_annotationsThe annotations (notes on the ranking graphs: automatic, alert and user-written) for a website, optionally within a period.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_annotations" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    The annotations (notes on the ranking graphs: automatic, alert and user-written) for a website, optionally within a period. GET /websites/{website_id}/annotations.

    Annotations the server declares

    • title: List annotations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_competitor_keyword_positionsFor each tracked keyword, the position of your site and of each competitor in the period.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_competitor_keyword_positions" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    For each tracked keyword, the position of your site and of each competitor in the period. GET /websites/{website_id}/competitors/keyword-positions.

    Annotations the server declares

    • title: Competitor keyword positions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_competitor_ranking_summariesRanking summaries (average position, share of voice, traffic, position distribution, volume) for the website's competitors over a period, for comparison with your own.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_competitor_ranking_summaries" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Ranking summaries (average position, share of voice, traffic, position distribution, volume) for the website's competitors over a period, for comparison with your own. GET /websites/{website_id}/competitors/ranking-summaries.

    Annotations the server declares

    • title: Competitor ranking summaries
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_competitorsThe competitor domains tracked for a website (id, domain, created_at).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_competitors" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    The competitor domains tracked for a website (id, domain, created_at). GET /websites/{website_id}/competitors.

    Annotations the server declares

    • title: List competitors
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_groupsList the keyword groups of a website: id, name, keyword_ids, average difficulty, search-intent counts and optionally ranking summaries.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_groups" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List the keyword groups of a website: id, name, keyword_ids, average difficulty, search-intent counts and optionally ranking summaries. GET /websites/{website_id}/groups.

    Annotations the server declares

    • title: List keyword groups
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_keywordsList the keywords tracked for a website with groups, volume, CPC, difficulty, competition, search intents and, with include_ranking, the latest position, traffic, ranking pages, SE…Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_keywords" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List the keywords tracked for a website with groups, volume, CPC, difficulty, competition, search intents and, with include_ranking, the latest position, traffic, ranking pages, SERP features and best position in the period. Positions are tracked down to the top 30. GET /websites/{website_id}/keywords.

    Annotations the server declares

    • title: List keywords
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_projectsList projects (folders that group websites): id, name, website_ids, user_ids, and optionally the ranking summary for a period.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_projects" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "folder": it reads files.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List projects (folders that group websites): id, name, website_ids, user_ids, and optionally the ranking summary for a period. GET /projects.

    Annotations the server declares

    • title: List projects
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_search_enginesThe search engines Wincher can track (id, domain such as google.com, country, languages, default location).Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_search_engines" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The search engines Wincher can track (id, domain such as google.com, country, languages, default location). GET /search-engines.

    Annotations the server declares

    • title: List search engines
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_segmentsThe saved segments (keyword filters) usable as segment_id in other tools.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_segments" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The saved segments (keyword filters) usable as segment_id in other tools. By default also temporary ones; only_named limits to saved ones. GET /segments.

    Annotations the server declares

    • title: List segments
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_list_websitesList the websites tracked in Wincher: id, domain, display name, search engine, location, language, mobile flag, keyword/group/competitor counts, competitors and brand keywords.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_list_websites" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "wincher_list_websites" says "list" and "website": it reads web pages, which anyone can write.
    • untrusted-inputThe description's first sentence says "list" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List the websites tracked in Wincher: id, domain, display name, search engine, location, language, mobile flag, keyword/group/competitor counts, competitors and brand keywords. Optionally with the ranking summary for a period. GET /websites.

    Annotations the server declares

    • title: List tracked websites
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wincher_search_locationsSearch the locations Wincher can track rankings for (code, name, country), most popular first, at most 100.Reads text others writeNo findings

    Why it is in this group

    • The name "wincher_search_locations" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search the locations Wincher can track rankings for (code, name, country), most popular first, at most 100. Both are required by the API: an ISO country code and a free-text search (at least 3 characters). GET /locations.

    Annotations the server declares

    • title: Search tracking locations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 1.3.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http wincher https://wincher.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__wincher__wincher_get_account",
      "mcp__wincher__wincher_get_user",
      "mcp__wincher__wincher_list_search_engines",
      "mcp__wincher__wincher_search_locations",
      "mcp__wincher__wincher_list_projects",
      "mcp__wincher__wincher_list_websites",
      "mcp__wincher__wincher_get_website",
      "mcp__wincher__wincher_list_keywords",
      "mcp__wincher__wincher_get_keyword",
      "mcp__wincher__wincher_get_keyword_serps",
      "mcp__wincher__wincher_get_keyword_ranking_history",
      "mcp__wincher__wincher_get_ranking_history_bulk",
      "mcp__wincher__wincher_list_groups",
      "mcp__wincher__wincher_get_group",
      "mcp__wincher__wincher_list_competitors",
      "mcp__wincher__wincher_list_competitor_ranking_summaries",
      "mcp__wincher__wincher_list_competitor_keyword_positions",
      "mcp__wincher__wincher_list_annotations",
      "mcp__wincher__wincher_list_segments"
    ],
    "ask": [
      "mcp__wincher__wincher_create_group",
      "mcp__wincher__wincher_create_annotation"
    ],
    "deny": [
      "mcp__wincher__wincher_add_keywords"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as wincher. Review it before you use it.

Capability tags behind 22 rules
  • mcp__wincher__wincher_get_account untrusted-input
  • mcp__wincher__wincher_get_user private-data, untrusted-input
  • mcp__wincher__wincher_list_search_engines untrusted-input
  • mcp__wincher__wincher_search_locations untrusted-input
  • mcp__wincher__wincher_list_projects private-data, untrusted-input
  • mcp__wincher__wincher_list_websites untrusted-input
  • mcp__wincher__wincher_get_website untrusted-input
  • mcp__wincher__wincher_list_keywords untrusted-input
  • mcp__wincher__wincher_get_keyword untrusted-input
  • mcp__wincher__wincher_get_keyword_serps untrusted-input
  • mcp__wincher__wincher_get_keyword_ranking_history untrusted-input
  • mcp__wincher__wincher_get_ranking_history_bulk untrusted-input
  • mcp__wincher__wincher_list_groups untrusted-input
  • mcp__wincher__wincher_get_group untrusted-input
  • mcp__wincher__wincher_list_competitors untrusted-input
  • mcp__wincher__wincher_list_competitor_ranking_summaries untrusted-input
  • mcp__wincher__wincher_list_competitor_keyword_positions untrusted-input
  • mcp__wincher__wincher_list_annotations private-data, untrusted-input
  • mcp__wincher__wincher_list_segments untrusted-input
  • mcp__wincher__wincher_add_keywords untrusted-input
  • mcp__wincher__wincher_create_group untrusted-input
  • mcp__wincher__wincher_create_annotation untrusted-input