Directory / Marketing, content & social
Seonix
SEO workspace for agents, read-only (36 tools): Search Console and GA4 rankings and clicks, technical audit issues, keyword clusters, content, and brand mentions in ChatGPT, Gemini, Claude and Perplexity answers. Bearer API key on paid plans. Endpoint: https://api.seonix.ai/mcp · Registry: io.github.pahaa97/seonix
Needs auth Reachable, and asks for an OAuth sign-in before it will talk. Tools were not inspected.
- Category
- Marketing, content & social
- Transport
http- Source
- https://seonix.ai/mcp
- Endpoint
https://api.seonix.ai/mcp- MCP Registry
io.github.pahaa97/seonix- Tools
- 41
- Context cost
- about 5,674 tokens for the tool definitions (estimated at four characters per token)
- Tool definitions last changed
- no change seen since first check
- Handshake time
- 352 ms
- Last checked
- 2026-11-03 10:54:48 UTC
- Listed since
- 2026-10-20
Health and compatibility
| Endpoint reachable | Verified | Responded in 352 ms |
|---|---|---|
| MCP handshake (initialize) | Untested | The server asks for an OAuth sign-in first |
| Tool discovery (tools/list) | Untested | Not attempted |
| Authentication | Verified | Requires an OAuth sign-in |
| Protocol version | Untested | Only known after a completed handshake |
| Transport | Untested | Listed as http |
Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.
Recent history
100% of the last 10 daily checks reachable; median response 444 ms. Green answered, violet asked for auth, red did not answer.
Set up in your client
Claude Code
Run this in a terminal:
claude mcp add --transport http seonix https://api.seonix.ai/mcpThen run /mcp inside Claude Code to sign in.
Claude Desktop
Open Settings → Connectors → Add custom connector and paste this URL:
https://api.seonix.ai/mcpOr bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):
{
"mcpServers": {
"seonix": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.seonix.ai/mcp"
]
}
}
}Cursor
Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"seonix": {
"url": "https://api.seonix.ai/mcp"
}
}
}VS Code
Or add it to .vscode/mcp.json:
{
"servers": {
"seonix": {
"type": "http",
"url": "https://api.seonix.ai/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name": "seonix", "type": "http", "url": "https://api.seonix.ai/mcp"}'Windsurf
Add it to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"seonix": {
"serverUrl": "https://api.seonix.ai/mcp"
}
}
}Other clients
Most clients accept this shape. The endpoint is:
https://api.seonix.ai/mcp{
"mcpServers": {
"seonix": {
"type": "http",
"url": "https://api.seonix.ai/mcp"
}
}
}If it does not connect
- This server uses OAuth. Your client opens a browser window to sign in the first time it connects.
- Restart the client after editing a config file, and keep keys out of files you commit.
- If the tools do not appear, open the client's MCP log: a 401 means the credentials were not accepted, and a timeout means the server did not answer.
Tools 41
Names, descriptions and input schemas exactly as the server returned them on 2026-10-28. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON
acknowledge_issuecan modifyMark an issue thread as an intentional choice (write scope — ask the user first): it stops counting against …
Mark an issue thread as an intentional choice (write scope — ask the user first): it stops counting against the score and stays marked across scans. Typical uses: noindex on pagination, a deliberately short page, a redirect that must stay. Undo with unacknowledge_issue.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
issue_id | string | required | Issue id from list_issues / get_issue. |
reason | string | optional | Why it is intentional (shown in the dashboard). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "acknowledge_issue",
"arguments": {
"issue_id": "..."
}
}
}analyze_seoread-onlyRun Seonix's deterministic SEO + readability + AI-answer (AEO) scoring on ANY draft you pass (title + HTML + …
Run Seonix's deterministic SEO + readability + AI-answer (AEO) scoring on ANY draft you pass (title + HTML + meta + keyphrase). No AI credits are spent. Use it as a linter: fix the problems it lists, re-run until the score is ≥ 80, then publish.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug (used for language/domain context). |
title | string | required | The page/article title (H1). |
html | string | required | Body HTML of the draft. |
meta_description | string | optional | |
focus_keyphrase | string | optional | |
slug | string | optional | |
language | string | optional | Expected language code (default: project language). |
content_type | string | optional | post (default) | page. |
has_featured_image | boolean | optional | |
featured_image_alt | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "analyze_seo",
"arguments": {
"title": "...",
"html": "..."
}
}
}apply_fixcan modifydestructiveHave Seonix apply fixes on the live site through the WordPress plugin (write scope — tell the user exactly …
Have Seonix apply fixes on the live site through the WordPress plugin (write scope — tell the user exactly which issue codes and get a yes first). Works for get_fix_plan items with fix_tier auto or ai_assist (wp_plugin_fixable); the site must have a connected WordPress channel. Starts a run (preview → Seonix suggestions → apply) and returns its id; poll get_fix_run until status is completed, partial or failed. Undo with rollback_fix.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
issue_codes | string | required | Comma-separated issue codes from get_fix_plan whose fix_tier is auto or ai_assist (wp_plugin_fixable). Seonix fixes them on the live WordPress site through its plugin. |
issue_ids | string | optional | Optional comma-separated scan issue ids (from list_issues evidence) to restrict the run to specific pages. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "apply_fix",
"arguments": {
"issue_codes": "..."
}
}
}get_accountread-onlyThe Seonix account behind this API key: email, every project with its plan, whether the MCP is available for …
The Seonix account behind this API key: email, every project with its plan, whether the MCP is available for it (paid plans only), AI/publish permissions and this month's article quota. Call this first.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_account",
"arguments": {}
}
}get_ai_visibilityread-onlyThe latest AI Visibility snapshot: how often the brand appears in ChatGPT answers for the project's prompts, …
The latest AI Visibility snapshot: how often the brand appears in ChatGPT answers for the project's prompts, which competitors are mentioned, top cited sources. Measurement covers ChatGPT only.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
include_answers | boolean | optional | Include the answer excerpt and cited sources per prompt (default false). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_ai_visibility",
"arguments": {}
}
}get_articleread-onlyOne article with SEO title, meta description, excerpt, key takeaways, the stored SEO analysis, publications …
One article with SEO title, meta description, excerpt, key takeaways, the stored SEO analysis, publications (where it is live) and optionally the full HTML.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
article_id | string | required | Article id from list_articles. |
include_full_analysis | boolean | optional | Return every stored check, not just the failing ones (default false). |
include_html | boolean | optional | Include the full HTML body (can be large). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_article",
"arguments": {
"article_id": "..."
}
}
}get_blog_integration_guideread-onlyThe Seonix skill for connecting a custom-built site or blog as a publishing channel (endpoints, payload, read …
The Seonix skill for connecting a custom-built site or blog as a publishing channel (endpoints, payload, read routes, media, self-test, hand-over). Same text as https://seonix.ai/SKILL.md. Pass section to get one step.
| Parameter | Type | Description | |
|---|---|---|---|
section | string | optional | Optional: a step heading substring to return only that part (e.g. 'Step 3' or 'self-test'). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_blog_integration_guide",
"arguments": {}
}
}get_calendarread-onlyCalendar slots for a month: planned / writing / completed / failed, kind create or optimize, source manual or …
Calendar slots for a month: planned / writing / completed / failed, kind create or optimize, source manual or autopilot, linked article ids.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
month | string | optional | YYYY-MM (default: current month). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_calendar",
"arguments": {}
}
}get_clusterread-onlyOne cluster with its member keywords, the site pages already covering it, the live SERP snapshot status and …
One cluster with its member keywords, the site pages already covering it, the live SERP snapshot status and the competitor insights Seonix extracted (must-mention entities, recommended blocks, topical coverage, gaps).
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
cluster_id | string | required | Cluster id from list_clusters. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_cluster",
"arguments": {
"cluster_id": "..."
}
}
}get_fix_planread-onlyAn ordered, implementable plan for every open problem: what to change, where (page / site-wide / theme), on …
An ordered, implementable plan for every open problem: what to change, where (page / site-wide / theme), on which URLs, with the target example. Returned as structured items; pass include_markdown=true to also get a Markdown checklist in the `[HIGH] Title — Location / Issue / Fix` format. Pages with limit/offset. Items with wp_plugin_fixable / fix_tier auto or ai_assist can be applied by Seonix itself through apply_fix (WordPress). After applying fixes, call start_scan (with the user's yes) and get_site_health again to confirm what cleared.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
category | string | optional | Only one pillar: seo | ai | speed | technical. |
codes | string | optional | Comma-separated issue codes to include (default: every open problem). |
max_items | integer | optional | Problems to include, highest priority first (default 10, max 50). Use codes/category or offset to see the rest. |
limit | integer | optional | Same as max_items (accepted so every list tool pages with limit/offset). |
offset | integer | optional | Skip this many problems (for paging through a long plan). |
max_pages | integer | optional | URLs listed per problem (default 3, max 50); the rest are reachable via list_issues code=… |
include_markdown | boolean | optional | Also return the plan as a Markdown checklist (doubles the size; default false). |
verbose | boolean | optional | Add why-it-matters, step-by-step instructions and warnings to every item (default false). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_fix_plan",
"arguments": {}
}
}get_fix_runread-onlyStatus and outcome of an apply_fix run: counts (applied / already correct / no-op / errors) and the per-item …
Status and outcome of an apply_fix run: counts (applied / already correct / no-op / errors) and the per-item results with the before and after values.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
run_id | string | required | Run id returned by apply_fix. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_fix_run",
"arguments": {
"run_id": "..."
}
}
}get_issueread-onlyOne issue with the evidence the scanner captured on the page (the offending tag, heading outline, redirect …
One issue with the evidence the scanner captured on the page (the offending tag, heading outline, redirect chain, JSON-LD block…) and the remediation profile: why it matters, bad vs good example, how-to-fix steps, whether Seonix can fix it through the WordPress plugin.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
issue_id | string | required | Issue id from list_issues. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_issue",
"arguments": {
"issue_id": "..."
}
}
}get_plan_statusread-onlyPlan and entitlements for one project: whether the MCP is available, AI generation and publishing …
Plan and entitlements for one project: whether the MCP is available, AI generation and publishing permissions, article quota used/limit, and the upgrade link when the project is on Free.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_plan_status",
"arguments": {}
}
}get_playbookread-onlyRead one Seonix playbook by name (same text as the prompt of that name) — for clients that do not surface MCP …
Read one Seonix playbook by name (same text as the prompt of that name) — for clients that do not surface MCP prompts.
| Parameter | Type | Description | |
|---|---|---|---|
name | string | required | Playbook name from list_playbooks. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_playbook",
"arguments": {
"name": "..."
}
}
}get_projectread-onlyOne project: site URL, language, autopilot mode and cadence, Search Console connection, publishing channels, …
One project: site URL, language, autopilot mode and cadence, Search Console connection, publishing channels, plan and quota, SEO progress level, dashboard links. Paid plans only.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_project",
"arguments": {}
}
}get_remediation_profileread-onlyThe Seonix remediation profile for an issue code (no project needed): why it matters, bad/good example, fix …
The Seonix remediation profile for an issue code (no project needed): why it matters, bad/good example, fix steps, fix tier, warnings. Use when you meet an unfamiliar code.
| Parameter | Type | Description | |
|---|---|---|---|
code | string | required | Issue code, e.g. meta_description_missing. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_remediation_profile",
"arguments": {
"code": "..."
}
}
}get_resultsread-onlyProof-of-ranking ledger: for each published article, Search Console clicks / impressions / position now vs …
Proof-of-ranking ledger: for each published article, Search Console clicks / impressions / position now vs the previous period, with trend. Requires Search Console.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
limit | integer | optional | Articles per page (default 30, max 100). |
offset | integer | optional | Skip this many articles. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_results",
"arguments": {}
}
}get_scan_statusread-onlyProgress of one scan: stage, pages found / scanned, counts, whether background probes are still pending. Poll …
Progress of one scan: stage, pages found / scanned, counts, whether background probes are still pending. Poll every 5–10 seconds while status is not completed.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
scan_id | string | required | Scan id from list_scans. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_scan_status",
"arguments": {
"scan_id": "..."
}
}
}get_seo_progressread-onlyThe project's SEO Progress ladder: current level and stage, what the next level requires (published articles, …
The project's SEO Progress ladder: current level and stage, what the next level requires (published articles, quality, Search Console, cluster coverage) and the publishing cadence Seonix recommends for this level.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_seo_progress",
"arguments": {}
}
}get_site_dnaread-onlyThe project's brand profile Seonix extracted and the owner refined: what the business does, audience, tone, …
The project's brand profile Seonix extracted and the owner refined: what the business does, audience, tone, language, writing instructions — plus the ready-to-use prompt block. Read it before writing or rewriting anything for the site.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_site_dna",
"arguments": {}
}
}get_site_healthread-onlySite Health for a project: overall score, the four pillars (SEO, AI search, speed, technical), counts of …
Site Health for a project: overall score, the four pillars (SEO, AI search, speed, technical), counts of active / fixed / came-back problems, the top open problems by priority, the last scan and the next scheduled check. Start here for any "what's wrong with my site" question.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug (optional for single-project accounts). |
top_tasks | integer | optional | How many open problems to include, ordered by priority (default 10, max 50). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_site_health",
"arguments": {}
}
}gsc_coverageread-onlyIndexing coverage Seonix collected from Search Console: indexed / not indexed / unknown counts, sitemap …
Indexing coverage Seonix collected from Search Console: indexed / not indexed / unknown counts, sitemap status, and the pages that are not indexed with Google's verdict.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_coverage",
"arguments": {}
}
}gsc_impactread-onlySeonix's own impact estimate: current vs potential traffic, keyword coverage, article impacts and top keyword …
Seonix's own impact estimate: current vs potential traffic, keyword coverage, article impacts and top keyword opportunities.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_impact",
"arguments": {}
}
}gsc_opportunitiesread-onlyKeywords already ranking in a position band (default 4–20) with impressions, ordered by the traffic Seonix …
Keywords already ranking in a position band (default 4–20) with impressions, ordered by the traffic Seonix estimates they would bring at the target position. The classic striking-distance list: refresh those pages first.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
days | integer | optional | Window length (default 28, 7–90). |
min_position | number | optional | Lower bound of the position band (default 4). |
max_position | number | optional | Upper bound of the position band (default 20). |
limit | integer | optional | Rows to return (default 30, max 200). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_opportunities",
"arguments": {}
}
}gsc_page_queriesread-onlyThe queries one page ranks for (Search Console page+query report filtered to that URL). Use it before …
The queries one page ranks for (Search Console page+query report filtered to that URL). Use it before rewriting a page's title, meta description or headings.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
url | string | required | Exact page URL as Search Console reports it. |
days | integer | optional | Window length (default 28, 7–90). |
limit | integer | optional | Rows to return (default 25, max 200). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_page_queries",
"arguments": {
"url": "..."
}
}
}gsc_statusread-onlyWhether Google Search Console is connected for the project, which property, and the last date with published …
Whether Google Search Console is connected for the project, which property, and the last date with published data. Call before other gsc_* tools.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_status",
"arguments": {}
}
}gsc_timeseriesread-onlyDaily clicks, impressions, average position and potential traffic for the last N days (7–90), plus the …
Daily clicks, impressions, average position and potential traffic for the last N days (7–90), plus the previous-period average position for comparison.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
days | integer | optional | Window length ending on the last day Search Console has published (default 28, 7–90). |
limit | integer | optional | Rows to return (default 25, max 200). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_timeseries",
"arguments": {}
}
}gsc_top_pagesread-onlyTop landing pages from Search Console for the window: clicks, impressions, CTR, average position.
Top landing pages from Search Console for the window: clicks, impressions, CTR, average position.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
days | integer | optional | Window length ending on the last day Search Console has published (default 28, 7–90). |
limit | integer | optional | Rows to return (default 25, max 200). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_top_pages",
"arguments": {}
}
}gsc_top_queriesread-onlyTop search queries from Search Console for the window: clicks, impressions, CTR, average position.
Top search queries from Search Console for the window: clicks, impressions, CTR, average position.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
days | integer | optional | Window length ending on the last day Search Console has published (default 28, 7–90). |
limit | integer | optional | Rows to return (default 25, max 200). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "gsc_top_queries",
"arguments": {}
}
}list_articlesread-onlyArticles in the project (Seonix-generated and imported): status, scores, keyphrase, cluster, publish dates. …
Articles in the project (Seonix-generated and imported): status, scores, keyphrase, cluster, publish dates. Paginated.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
page | integer | optional | 1-based page (default 1). |
per_page | integer | optional | Default 20, max 100. |
limit | integer | optional | Same as per_page (accepted so every list tool pages with limit/offset). |
offset | integer | optional | Skip this many articles (converted to page/per_page). |
status | string | optional | Filter: draft | scheduled | published. With a filter the list is built from the light index (id, title, status, keyphrase) and paged after filtering. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_articles",
"arguments": {}
}
}list_channelsread-onlyConnected publishing channels (WordPress, Ghost, Webflow, Shopify, Wix, Custom API) with status. A project …
Connected publishing channels (WordPress, Ghost, Webflow, Shopify, Wix, Custom API) with status. A project needs a connected channel before anything can be published.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. Optional when the account has one project or the connector URL names it. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_channels",
"arguments": {}
}
}list_clustersread-onlyTopic clusters (one target page each) with primary keyword, intent, page type, priority, volume, Search …
Topic clusters (one target page each) with primary keyword, intent, page type, priority, volume, Search Console impressions and winnability. The content plan is built from these.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
status | string | optional | draft | approved | brief_ready | content_created. |
limit | integer | optional | Page size (default 20, max 100). |
offset | integer | optional | Skip this many clusters. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_clusters",
"arguments": {}
}
}list_issuesread-onlyPersistent issue threads (one per problem per page) with status open / solved / regressed, filterable by …
Persistent issue threads (one per problem per page) with status open / solved / regressed, filterable by code, URL and status. Paginated. Each item carries the issue id for get_issue.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
status | string | optional | open | solved | regressed. Default: open and regressed (everything still broken). |
code | string | optional | Only this issue code, e.g. images_missing_alt. |
url | string | optional | Only issues on this page URL. |
limit | integer | optional | Page size (default 25, max 200). |
offset | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_issues",
"arguments": {}
}
}list_keyword_candidatesread-onlyKeywords Seonix researched for the project (seed AI, planner, Search Console, autocomplete, user-added) with …
Keywords Seonix researched for the project (seed AI, planner, Search Console, autocomplete, user-added) with volume, competition, Search Console numbers and cluster membership. Paginated; filter by status and substring.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
status | string | optional | Comma-separated: pending, approved, rejected, filtered_out. Default: approved and pending. |
query | string | optional | Substring filter on the keyword. |
limit | integer | optional | Default 100, max 500. |
offset | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_keyword_candidates",
"arguments": {}
}
}list_playbooksread-onlyThe Seonix playbooks (step-by-step procedures that tell you which tools to call): promote a site, work …
The Seonix playbooks (step-by-step procedures that tell you which tools to call): promote a site, work through a page, fix issues in code, keyword map, internal links, write an article, striking distance, monthly report, connect a blog. Use get_playbook to read one.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_playbooks",
"arguments": {}
}
}list_projectsread-onlyProjects (websites) in the account with id, slug, name and site URL. Use the id or slug as project_id in …
Projects (websites) in the account with id, slug, name and site URL. Use the id or slug as project_id in other tools.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_projects",
"arguments": {}
}
}list_scansread-onlyRecent site scans with status, pages scanned and severity counts.
Recent site scans with status, pages scanned and severity counts.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
limit | integer | optional | Default 10, max 50. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_scans",
"arguments": {}
}
}rollback_fixcan modifydestructiveReverse the changes an apply_fix run made on the live site, restoring the values the plugin snapshotted …
Reverse the changes an apply_fix run made on the live site, restoring the values the plugin snapshotted before applying (write scope — ask the user first).
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
run_id | string | required | Run id returned by apply_fix. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "rollback_fix",
"arguments": {
"run_id": "..."
}
}
}score_articleread-onlyRe-run the SEO + readability scoring on an article already in Seonix (no changes saved) and list its problems.
Re-run the SEO + readability scoring on an article already in Seonix (no changes saved) and list its problems.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
article_id | string | required | Article id from list_articles. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "score_article",
"arguments": {
"article_id": "..."
}
}
}start_scancan modifyStart a fresh Site Health scan of the project's site (write scope — ask the user first). Returns the scan id; …
Start a fresh Site Health scan of the project's site (write scope — ask the user first). Returns the scan id; poll get_scan_status every 10 seconds until status is completed, then call get_site_health / get_fix_plan to see what cleared. One scan at a time per project; the plan's page budget applies.
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
scope | string | optional | website (default: crawl the site) | sitemap (only sitemap URLs). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "start_scan",
"arguments": {}
}
}unacknowledge_issuecan modifyRemove the intentional mark from an issue thread so it is scored and counted again (write scope).
Remove the intentional mark from an issue thread so it is scored and counted again (write scope).
| Parameter | Type | Description | |
|---|---|---|---|
project_id | string | optional | Project id or slug. |
issue_id | string | required | Issue id from list_issues / get_issue. |
reason | string | optional | Why it is intentional (shown in the dashboard). |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "unacknowledge_issue",
"arguments": {
"issue_id": "..."
}
}
}Resources 5
guides-indexIndex of the guides and playbooks this server serves.blog-integrationHow to connect a custom-built site as a Seonix publishing channel (same as seonix.ai/SKILL.md).remediation-indexEvery issue code the scanner can raise with its category, severity, fix tier and whether the WordPress plugin can fix it.seo-scoringEvery check Seonix runs on an article, its weight and the target state — the rules behind analyze_seo.title-styleHow Seonix writes titles and headings (length, casing, keyphrase placement, no clickbait).
Prompts 11
connect_blog_to_seonixFor coding agents: build the publishing endpoints per the Seonix skill, self-test, connect the channel, import existing posts.fix_issues_in_codeFor coding agents: turn get_fix_plan into code changes, deploy, rescan, verify.internal_linking_planRoute authority from strong pages to the pages that should rank; descriptive anchors; backfill from new articles.keyword_map_siteBuild a keyword → URL map from clusters and Search Console, find cannibalisation and missing pages.monthly_seo_reportA plain-language monthly report from Search Console, Site Health, results and publishing activity.promote_site_playbookDiagnose the site with Seonix data and produce a prioritised 30/60/90-day plan.seo_reviewFull audit-and-plan from Seonix data: scorecard, top 5 wins, quick wins this week, content gaps, risks — the /seo of this server.striking_distance_planPages ranking 4–20: which to refresh, what to change, expected gain.work_through_all_pagesPrioritise the site's pages by money and opportunity, then rework them in batches.work_through_pageRework one URL end-to-end: intent, title/meta, headings, body gaps, links, structured data, then score it.write_article_for_briefDraft an article in the site's voice from a cluster's keywords and SERP insights, then score it.
Badge
Maintain this server? Put its live status in your README:
[](https://mcp.aianytime.net/s/seonix/)Edit this entry · Report a problem
More in Marketing, content & social
Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt
Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers