{"serverInfo":{"name":"seo-perception","title":"SEO Perception","version":"2.1.0"},"description":"SEO Perception already stores weekly Search Console facts, the crawl, and Possibilities — a prioritized to-do list for each URL. MCP lets Cursor and Claude read that workspace, draft the next edit, and, with the mcp:possibilities scope, mark those to-dos done or ignored. Tools never call Google.","oneLiner":"Search Console, crawl, and your open SEO to-dos — inside Cursor and Claude.","transports":[{"type":"streamable-http","endpoint":"https://seoperception.com/mcp"}],"capabilities":{"tools":true,"resources":false,"prompts":false},"authentication":{"type":"bearer","required":true,"schemes":["bearer","oauth2"],"documentation":"https://seoperception.com/mcp-integration","authorizationServers":["https://seoperception.com"],"scopes":["mcp:read","mcp:possibilities"],"optionalScopes":["mcp:possibilities"]},"tools":[{"name":"seoperception_list_sites","title":"List sites","description":"List owned websites with stored GSC and crawl freshness.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}}},{"name":"seoperception_get_site_overview","title":"Site overview","description":"Summarize stored search performance, leading pages, queries, and rank momentum.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"searchType":{"type":"string","enum":["web","image","video","news"],"description":"Stored Search Console surface. Defaults to web."}}}},{"name":"seoperception_search_queries","title":"Search queries","description":"Search and filter stored query evidence by content match, position band, impressions, landing page, CTR, and intent. Content filters use stored match rows only.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20},"searchType":{"type":"string","enum":["web","image","video","news"],"description":"Stored Search Console surface. Defaults to web."},"query":{"type":"string","maxLength":200},"contentFilter":{"type":"string","enum":["all","in_content","not_in_content"]},"questionOnly":{"type":"boolean"},"hideBranded":{"type":"boolean"},"positionMin":{"type":"number","minimum":1,"maximum":100},"positionMax":{"type":"number","minimum":1,"maximum":100},"minImpressions":{"type":"integer","minimum":0},"pageUrl":{"type":"string","maxLength":2048}}}},{"name":"seoperception_list_opportunities","title":"SEO opportunities","description":"List stored Possibilities. Filter by status, issue type, or URL, or ask for a summary grouped by type.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20},"severity":{"type":"string","enum":["critical","high","medium","low","improvement"]},"status":{"type":"string","enum":["open","completed","ignored_permanent","fixed"],"description":"Defaults to open."},"issueKey":{"type":"string","maxLength":200,"description":"Canonical typeKey or an exact issueKey from a previous result."},"pageUrl":{"type":"string","maxLength":2048},"view":{"type":"string","enum":["items","summary"]}}}},{"name":"seoperception_find_cannibalization","title":"Keyword cannibalization","description":"Find stored query conflicts and the deterministic preferred page.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20}}}},{"name":"seoperception_find_content_gaps","title":"Content and snippet gaps","description":"Find stored low-CTR, missing-query, title/snippet, question, and refresh opportunities.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20}}}},{"name":"seoperception_suggest_internal_links","title":"Internal-link suggestions","description":"Return stored destination and anchor opportunities without crawling or probing URLs.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20}}}},{"name":"seoperception_update_possibilities","title":"Close Possibilities","description":"Mark existing Possibilities done or ignored by id, issue type, or URL. Requires the mcp:possibilities scope. Ignore needs a reason and stays hidden.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId","status"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"status":{"type":"string","enum":["completed","ignored_permanent"]},"reason":{"type":"string","maxLength":500,"description":"Required when status is ignored_permanent."},"issueIds":{"type":"array","maxItems":25,"items":{"type":"integer","minimum":1},"description":"Possibility ids copied from a list result."},"issueKey":{"type":"string","maxLength":200},"pageUrl":{"type":"string","maxLength":2048},"confirm":{"type":"boolean","description":"Required to apply an issueKey or pageUrl selector."}}}},{"name":"seoperception_get_page_diagnostics","title":"Page diagnostics","description":"Combine one page’s crawl metadata, stored GSC trends, top queries, and possibilities.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"pageId":{"type":"integer","minimum":1},"pageUrl":{"type":"string","maxLength":2048,"description":"Provide exactly one of pageId or pageUrl."},"searchType":{"type":"string","enum":["web","image","video","news"],"description":"Stored Search Console surface. Defaults to web."}}}},{"name":"seoperception_find_content_decay","title":"Content decay","description":"Detect sustained stored click and position declines from open refresh-candidate rows. An empty result means none are stored yet.","inputSchema":{"type":"object","additionalProperties":false,"required":["siteId"],"properties":{"siteId":{"type":"string","format":"uuid","description":"Site id from seoperception_list_sites."},"cursor":{"type":"string","maxLength":256,"description":"Pagination cursor from a previous result."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":20}}}}],"resources":[],"prompts":[]}