Pricing MCP FAQ Blog

For developers and AI agents

Use RankMeOff from Claude, Cursor, and Codex

RankMeOff runs a Model Context Protocol server at https://rankmeoff.com/mcp. Connect it to any MCP client and your agent can check indexing, verify backlinks, read your balance, and top up, using the same account and tokens as the web app.

Requirements

MCP access is included with any RankMeOff token pack. Create an MCP key from AI agents in your account (sign in or create an account first). Free diagnostic tools are available inside the app with a RankMeOff account; browse the tool descriptionsbefore creating an account.

Paste this into your AI agent

Sign in and create a key from AI agents first, then replace YOUR_RMO_KEY below with it before pasting this into Claude Code, Cursor, or any chat-based agent.

Connect the RankMeOff MCP server so you can use my RankMeOff account.
Server URL: https://rankmeoff.com/mcp
Transport: Streamable HTTP
Auth header: Authorization: Bearer YOUR_RMO_KEY
If you are Claude Code, run: claude mcp add --transport http rankmeoff https://rankmeoff.com/mcp --header "Authorization: Bearer YOUR_RMO_KEY"
Otherwise add it to your MCP config file using the URL and header above. Then call the get_account tool and tell me my token balance to confirm it works.
Rules: before any tool that spends tokens, call estimate_cost and ask me to confirm the amount. Never retry a failed spend automatically, and never open or pay a top-up link yourself.

Tools

Every spending tool requires a max_tokens budget. If the real cost is higher, nothing is charged and the tool returns a quote instead.

get_account

Token balance, this key's daily cap, and today's spend.

free

get_pricing

Live token costs and which paid products are enabled.

free

estimate_cost

Quote a job before running it.

free

check_redirects / check_noindex / check_404 / check_5xx

Single-URL diagnostics, same checks as the free web tools.

free

extract_sitemap

Fetch and parse an XML sitemap or sitemap index.

free

create_index_check

Check whether URLs are indexed on Google, Bing, or Yandex.

free to quote, then per URL

create_backlink_check

Verify source URLs actually link to a target URL.

per donor URL

create_indexing_task

Submit URLs for indexing (fetch-and-verify, or real IndexNow for key-file-verified domains).

per indexed URL

get_task_status / get_task_report / list_tasks

Read back task progress and full reports.

free

list_domains / add_domain / verify_domain

Register a domain, return the exact file an agent should deploy, and verify the required IndexNow key file.

free

create_topup_link

Get a Stripe checkout link for a token package, for you to open yourself.

free

Supported clients

Claude Code, Claude Desktop, Cursor, VS Code / Copilot, Codex, and Windsurf all support remote MCP servers over Streamable HTTP with a custom header today. Connector support for claude.ai and ChatGPT (OAuth) is coming in a later release. Exact setup snippets for each client, pre-filled with your key, are on the AI agents page once you are signed in.

Notifications

Checker and indexer reports settle in about 24h, and drip-fed or multi-day indexing tasks can take days. Instead of polling, turn on email and/or a webhook per MCP key from AI agents. Either fires once, right after a task created through that key finishes settling. Failed deliveries are retried.

A webhook (https only) receives a POST with this JSON body:

{
  "event": "task.report_ready",
  "task_id": "...",
  "type": "checker" | "indexer" | "backlink",
  "engine": "google" | "bing" | "yandex",
  "title": "...",
  "url_count": 10,
  "summary": { "indexed": 8, "not_indexed": 1, "unknown": 1 },
  "tokens_charged": 100,
  "tokens_returned": 10,
  "report_url": "https://rankmeoff.com/app/tasks?task=...",
  "created_at": "2026-01-01T00:00:00.000Z"
}

Each request carries an X-RankMeOff-Signature header: t=<unix seconds>,v1=<hex HMAC-SHA256>, signed over `${t}.${rawBody}` with the webhook secret shown once when you set the URL. Verify it before trusting the payload:

const crypto = require('node:crypto');

function verify(secret, header, rawBody) {
  const parts = Object.fromEntries(
    header.split(',').map((p) => p.split('=')),
  );
  const timestamp = Number(parts.t);
  if (!Number.isSafeInteger(timestamp) ||
      Math.abs(Date.now() / 1000 - timestamp) > 300 ||
      !/^[0-9a-f]{64}$/.test(parts.v1 ?? '')) return false;
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${parts.t}.${rawBody}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(parts.v1),
  );
}

A failed delivery retries with backoff and is marked dead after a handful of attempts; the last delivery status is shown per key on the AI agents page, which also has a "Send test" button.

How the agent should behave

The server tells every connecting agent, in its instructions, to quote a job with estimate_cost and confirm the amount with you before spending, never to retry a failed spend automatically, and never to open or pay a top-up link itself. A successful spend always returns the tokens charged and your new balance; a balance under 1,000 tokens (or under 20% of your last purchase) adds a warning your agent should pass along.