Documentation
Add an SEO tool to Cursor
Install the RankReactorAI Cursor plugin or add the hosted SEO MCP server in mcp.json. Authenticate with a project API key as an Authorization Bearer header.
Every RankReactor plan, including Free, can connect an assistant and create a project API key. Free can generate its one lifetime article through an assistant (the same article as the dashboard). Ongoing generation needs a paid plan. UGC video needs Pro or Ultra.
- Free includes 1 lifetime article, shared across the dashboard and any assistant. After that article is used, ongoing generation needs a paid plan.
- Starter is $39/month and includes a 3-day trial.
- Pro is $79/month.
- Ultra is $159/month.
- Read tools work on every plan. Refreshing metrics through an assistant needs Starter, Pro, or Ultra. Queuing a UGC video needs Pro or Ultra.
Cursor connects to RankReactor over Streamable HTTP at https://www.rankreactor.ai/mcp. Install the RankReactorAI plugin (rankreactorai) from GitHub, or add the same server by hand in mcp.json. The plugin authenticates with a project API key: it sends Authorization: Bearer ${RANKREACTOR_API_KEY}.
Install the RankReactorAI plugin
The package name is rankreactorai. Its plugin.json declares a secret variable RANKREACTOR_API_KEY that you set in Cursor. Its mcp.json points at the hosted server and sends that key as an Authorization Bearer header. The package is manifests and skills only; it does not ship a local server or the key itself.
- In Cursor, open Plugins and install RankReactorAI (
rankreactorai) from the GitHub repo https://github.com/rankreactorai/rankreactorai-mcp. Do not look for it in the Cursor marketplace yet — that listing is coming soon. - Sign in to RankReactor, select the project Cursor should use, and open API Key in the dashboard sidebar (
/dashboard#api-key). Choose Generate. If a key already exists, use the value you saved, or choose Regenerate only when you intend to replace it. RankReactor shows the full key once. - In Cursor, open Plugins → Configure and set
RANKREACTOR_API_KEYto that project key. Never paste the key into chat. - Reload Cursor so the plugin picks up the key.
Manual mcp.json
Cursor’s official MCP docs use a mcpServers object. Put the file in one of these locations if you add the server by hand instead of using the plugin:
- Project:
.cursor/mcp.jsonin the project folder. Commit it if the team should share the server (do not commit a live project key). - Global:
~/.cursor/mcp.jsonin your home directory, for every project. - Both files are merged. If the same server name appears in both, the project file wins.
Use the same header form as the plugin. Cursor fills ${RANKREACTOR_API_KEY} from the value you set under Plugins → Configure. If you paste a key into a private config instead, do not commit that file.
{
"mcpServers": {
"rankreactor": {
"url": "https://www.rankreactor.ai/mcp",
"headers": {
"Authorization": "Bearer ${RANKREACTOR_API_KEY}"
}
}
}
}Save the file and reload Cursor, or reload MCP from Customize. The hosted URL is https://www.rankreactor.ai/mcp.
Available tools
This connection is scoped to one project. Do not ask the assistant to guess another site. Write tools ask for confirmation first.
- List projects (
list_projects) — List the RankReactor project this API key can use. The key is scoped to exactly one project, so the result is that single site. Example: “Which RankReactor site is this connection using?” - Get reactor status (
get_reactor_status) — Read this site's plan, quotas, and recent article or video activity. Example: “How many articles are left on this project today?” - Get metrics (
get_metrics) — Read stored search and site health numbers for this RankReactor project. Example: “Show the stored search metrics for this site.” - Refresh metrics (
refresh_metrics) — Refresh one stored metric for this project (analytics, technical SEO, website audit, or keywords), subject to that metric's plan limit. Confirmation required. Example: “Refresh analytics for this project if that metric is due.” - List articles (
list_articles) — List generated articles for this RankReactor project. Example: “List the generated articles for this site.” - Get article (
get_article) — Get one generated article for this RankReactor project by id, including markdown and HTML. Example: “Get the full article for this id.” - Generate article (
generate_article) — Queue an article for this project. Uses the same article limits as the RankReactor dashboard. Confirmation required. Example: “After I confirm, queue an article for the keyword running shoes.” - List UGC videos (
list_ugc_videos) — List generated short videos for this RankReactor project. Example: “List UGC videos for this project.” - Get UGC video (
get_ugc_video) — Get one generated short video for this RankReactor project by id, including a download URL when the video is ready. Example: “Get the download URL for this video id.” - Generate UGC video (
generate_ugc_video) — Queue a short product video for this project. Uses the same monthly video limits as the RankReactor dashboard. Confirmation required. Example: “After I confirm, queue a short product video about our trail runner.” - Get shop schedule (
get_shop_schedule) — Read whether automatic shop articles are enabled and whether this Shopify shop is eligible. Example: “Is automatic article generation on for this shop?” - Set shop schedule (
set_shop_schedule) — Turn automatic shop article generation on or off for this Shopify shop. Confirmation required. Example: “After I confirm, turn on automatic articles for this shop.” - List Buyer Radar leads (
list_buyer_radar_leads) — List Buyer Radar leads for this RankReactor project. Read-only; nothing is sent automatically. Paid plans only (Starter 5 / Pro 20 / Ultra 40 leads per month). Example: “Show this week's new Buyer Radar leads.” - Get Buyer Radar lead (
get_buyer_radar_lead) — Get one Buyer Radar lead for this RankReactor project by id, including draft text and send links. Read-only; nothing is sent automatically. Open a link to review and send it yourself. Example: “Show the draft reply for this lead id.”
Troubleshooting
- 401, invalid, or revoked key — the server returns 401 when no Authorization header is sent, or when the token is invalid or revoked. Generate a key on the matching project, set
RANKREACTOR_API_KEYunder Plugins → Configure, and reload Cursor. - Regenerated key — the previous key stops working as soon as you confirm Regenerate on the API Key page. Put the new value in
RANKREACTOR_API_KEYand reload Cursor. - Revoke — Revoke on the API Key page stops the current key immediately. Existing header connections are refused until you generate a new key and update Plugins → Configure.
- Wrong project or domain — each key belongs to one project. A domain that names a different site is rejected. Create a key on the project you want, or omit the domain so the keyed site is used.
- Plan-gated tools — Free can generate its one lifetime article through an assistant; that count is shared with the dashboard. Ongoing article generation needs a paid plan. Refreshing metrics through an assistant needs Starter, Pro, or Ultra. Queuing a UGC video needs Pro or Ultra. Read tools still work on Free.
- Article limit — Free has one lifetime article across the dashboard and assistants. Paid plans have a daily article cap (UTC). When a paid daily cap is reached, the tool reports that the article limit has been reached and when it resets.
- Video limit — Pro and Ultra have a monthly UGC video cap (UTC). When it is reached, the tool reports that the monthly video limit has been reached.
- Metrics cooldown — Starter, Pro, and Ultra can refresh one metric at a time, then wait that metric’s interval. Analytics, technical SEO, and website audit wait 7 days on Starter, 1 day on Pro, and 8 hours on Ultra. Keywords wait 21 / 14 / 7 days. Free does not refresh metrics through the assistant.
Cursor-specific notes
- Remote HTTP needs a current Cursor build that speaks Streamable HTTP (Cursor documents this from v0.48.0).
- Set
RANKREACTOR_API_KEYunder Plugins → Configure. Do not paste the key into chat so the model can “remember” it. - Cursor can interpolate values in
urlandheaders. Prefer the plugin secret over committing the key. - Team allowlists can block a URL that is not approved. Ask an admin to allow
https://www.rankreactor.ai/mcp.
Need help?
Email rankreactor@mail.grokbot.com or reach out on X at @rankreactorai if Cursor cannot load the plugin or mcp.json stays disconnected. Include the project domain and which assistant you used.
Questions? Email rankreactor@mail.grokbot.com or reach out on X at @rankreactorai and include your project domain.