Pay in rupiah

MCP setup

Connect an MCP client to RankMySEO

One endpoint, one config block, and two kinds of key. If you want the plain-language version of what an assistant can do with this, read the overview instead.

Add to your MCP config

{
  "mcpServers": {
    "rankmyseo": {
      "url": "https://api.rankmyseo.com/mcp"
    }
  }
}

Where that goes

Cursor
Settings, then MCP, then Add new server. Or drop the block into .cursor/mcp.json in the project.
Claude
Settings, then Connectors, then Add custom connector, and paste the URL.
ChatGPT and Grok
Add it as a remote MCP connector with the same URL. Neither needs an API key from us to start.
Anything else
The endpoint is https://api.rankmyseo.com/mcp over streamable HTTP. A client that speaks MCP needs nothing else.

Keys

Two kinds of key, and how one becomes the other

A client that has never met us can still get an answer. Everything after that runs on a bearer token tied to a real account.

  1. 1

    Walk-up

    Call register with no Authorization header. You get a key scoped to one site, two keywords, and 48 hours. One per network. The research is deleted after a day if nobody claims it.
  2. 2

    Pairing

    register returns a claim link. A signed-in person opens it and approves. The site and its history move onto that account, and the key starts following that plan's flags.
  3. 3

    Signed-in

    Create a key in the dashboard and send it as a bearer token. It carries the same plan limits the dashboard enforces, and you can revoke it there.

Walk-up: no header at all

POST https://api.rankmyseo.com/mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "register", "arguments": {} } }

Signed-in: bearer token

POST https://api.rankmyseo.com/mcp
Authorization: Bearer rms_live_…

Tools your client will see

A call that your plan does not cover comes back as a refusal naming the plan that does, not as an error. Limits are enforced server side, so a client cannot talk its way past them.

Getting in

register
Mints a walk-up key. The only call that works with no Authorization header.
request_link
Returns a claim URL so a signed-in person can pair the key onto their account.
account_status
What this key is allowed to do, and how much of the plan is left.

Setting up a site

add_project
Starts tracking a domain. Refused once the account is at its plan's project count.
add_keyword
Adds one keyword with a country and language.
add_competitor
Saves a rival domain against a project.
list_projects
The projects on this account.
list_keywords
Tracked keywords for a site, with their locale.
list_competitors
Saved rivals for a project.

Reading positions

project_overview
The project's headline numbers, the same ones the dashboard shows.
keyword_history
Saved checks for one keyword, as far back as the plan keeps them.
check_ranks
Asks for a fresh check. Subject to the daily queue, so it may be refused.

Starter and up

site_issues
On-page problems found in the last crawl.
issue_pages
The URLs behind an issue, rather than just the count.
rank_compare
Your positions next to a saved rival's on the same keywords.
keyword_gap
Keywords a rival ranks for and you do not.
competitor_traffic
Estimated traffic for you and a rival, side by side.
keyword_planner
Keyword ideas with volume, to pick what to track next.
backlink_review
Referring domains and the links worth a second look.

The list an assistant actually receives comes from tools/list and is filtered by the key's plan, so treat that response as the source of truth rather than this table.

Questions people ask

Is there a machine-readable version of this page?
Yes. /llms.txt is the same playbook written for an agent to follow on its own, and it is also served at /index.md and /auth.md. Any page on this site returns markdown if you send Accept: text/markdown.
Where do I create or revoke a signed-in key?
On the Account screen once you are signed in. A key is shown once when it is created, so copy it then. Open your account.
What happens when a call exceeds the plan?
The tool returns a refusal that names the limit and the plan that raises it. Nothing is charged and nothing is partially written.
Can I self-host this instead?
The toolkit is Apache-2.0 and runs against your own database. See Open source.

Paste the config and call register

That is the whole setup. Sign in when you want to keep what your assistant found.