Developer docs

MCP server

MonoRanks speaks the Model Context Protocol. Point an assistant at one URL and it can read your audits and act on them.

Endpoint

https://app.monoranks.com/api/mcp

Streamable HTTP over POST, JSON responses, no session to keep. Send a key as Authorization: Bearer mr_ws_… (a website key mr_site_… works too), or let the client sign you in with OAuth 2.1 (below). Scopes, the hourly limit (1,200 calls per key) and the key owner’s access are checked on every tool call, as for the REST API.

Connect

Claude Code

claude mcp add --transport http monoranks https://app.monoranks.com/api/mcp \
  --header "Authorization: Bearer mr_ws_…"

Claude.ai and Claude Desktop: add the URL above as a custom connector (unverified: the menu names in those apps change often). Where the client lets you set a header, send the key as a bearer header; otherwise it signs you in with OAuth.

ChatGPT and other OAuth clients: add https://app.monoranks.com/api/mcp as an MCP server. Without a key, the endpoint answers 401 and points the client to /.well-known/oauth-protected-resource. The client registers itself (/api/oauth/register), sends you to sign in and approve access (/oauth/authorize, with PKCE), and gets its token from /api/oauth/token. It can only ask for the read scopes and issues:recheck; audits:run and actions:apply are never granted this way, so start_audit, the apply tools and update_outreach_target need a key. See API keys and scopes.

Tools

Read

Tool Does Scope
list_sites Websites the key covers, with ids sites:read
portfolio Every website in one call: scores and their change, issues, actions, last and next audit, and Search Console clicks (with search:read) sites:read
site_summary Scores, last audit, open issues, WordPress access, how fresh each connection is sites:read
speed_results Speed per tested page: lab test and real-visitor data sites:read
audit_status The latest audits, or one audit by audit_id, with pages crawled and the page budget sites:read
list_issues Issues, the same list as the Issues screen issues:read
issue_detail One issue with pages, evidence, explanation and suggested new values (100 at a time, suggestions_offset for more) issues:read
list_actions Prioritized actions with estimated gain and how long each has been open issues:read
page_findings Findings for one page, by id or address pages:read
page_history What changed on one page from one audit or recheck to the next, by id or address pages:read
search_summary Search Console totals, top pages and queries search:read
search_rows Search Console rows for a date range, by query, page, query and page, or day (pass nextCursor back as cursor; CSV export is in the REST API only) search:read
near_page_one Your query and page pairs sitting just off page one (positions 8 to 20 by default), most impressions first, with the extra clicks a top-3 position could bring search:read
topics The website’s pages grouped into topics, with clicks, top queries and whether each topic is strong, weak or gets no clicks search:read
analytics_pages Conversions and revenue per landing page from Google Analytics (GA4), next to Search Console clicks analytics:read
keywords Keywords as the Keywords screen lists them, with demand, position, opportunity and the relevance review; off-topic suggestions left out search:read
competitors The competitor set with a match score, the AI review of each suggestion, which ones drive gaps, shared keywords, keywords where they rank above you, strength and visibility search:read
competitor_gaps Each competitor’s position and yours per keyword (gaps, content, lost, lead). Each row also names the page where each competitor ranks. search:read
content_ideas The keyword gaps grouped into topics, most opportunity first: whether to write a new page or expand one, your pages already in the topic, the competitor pages that rank, and the top keywords search:read
backlinks The backlink summary and the referring domains of one view (all, new, lost, review, strong) search:read
list_outreach_targets Pages and sites worth asking for a link or a mention, ranked, with why and their status search:read
ai_visibility What AI assistants answered to your tracked questions, per week, with the pages each answer cites ai:read
answer_gaps Questions where AI answers name other websites but not yours ai:read
geo_access AI crawler access, llms.txt and entity signals from the last audit ai:read
llms_txt The live llms.txt and a ready-to-publish draft ai:read
ai_crawler_rules What robots.txt says to each AI crawler now ai:read
agentic_results Agentic browsing results with what to fix, or one re-run by job_id ai:read

Act

Tool Does Scope
recheck Queue a recheck of an issue issues:recheck
run_agentic_check Re-run the Agentic browsing check for one page issues:recheck
start_audit Start a full audit now, with an optional page budget audits:run
apply Approve an action’s new SEO titles, descriptions, canonicals or noindex and write them to WordPress actions:apply
apply_llms_txt Approve a new llms.txt and write it to WordPress actions:apply
apply_ai_crawler_rules Approve allow or deny rules for AI crawlers and write them into robots.txt actions:apply
update_competitors Pick, dismiss or add a competitor; picking or adding looks up its keyword gaps within your data limit actions:apply
update_outreach_target Set the status (to contact, contacted, added, declined) and note of an outreach target actions:apply

Example conversation

“Which of my websites lost the most clicks this month, and what is the top action for it?”

The assistant calls portfolio once, picks the website with the biggest drop, then calls list_actions for it, and answers with the action and its estimated gain. If you say “apply it”, it reads the suggested values with issue_detail, calls apply, and the change shows up in the app’s activity with Undo.

Common questions

Which clients work?

Anything that supports MCP over Streamable HTTP: Claude Code, Claude.ai, Claude Desktop, ChatGPT (developer mode connectors), Cursor, Windsurf and others.

Can the assistant break my site?

Only three tools change your website: apply, apply_llms_txt and apply_ai_crawler_rules. They follow the same rules as the buttons in the app: connected WordPress websites only, the key owner recorded as approver, a check afterwards and Undo in the app for 30 days. recheck, run_agentic_check and start_audit only read your website again. update_outreach_target and update_competitors only change data inside MonoRanks: a target's status and note, or which competitors you follow.

Why does ChatGPT not need a key?

Clients that discover sign-in themselves use OAuth 2.1: they send you to sign in and approve access once. The token they receive stands for a workspace key with the read scopes and rechecks you approved, never audits or writes. It is listed and revocable under Settings → API and MCP.