Quickstart · AI SEO · 10 minutes

Add AI SEO to your Lovable, Replit, or Cursor app in 10 minutes.

Two scores instead of one: findable (can an engine reach and index the page) and citable (can it be extracted and attributed). Then the machinery to fix both: robots.txt, sitemap.xml, the head block, llms.txt.

1 — Get a key · 1 minute

Sign in with your email at majr.app/keys, name your product, copy the key. It is shown once. One key works on every MAJR Agent Service. Free during beta, no card.

export MAJR_API_KEY=rn_...   # the key from majr.app/keys

2 — Connect your agent · 2 minutes

The service speaks MCP over Streamable HTTP at https://seo.majr.app/mcp, so any MCP client connects with the same URL and header. Pick your tool:

Cursor

Add to Cursorinstalls the server below; it reads MAJR_API_KEY from your environment.

Or add it to .cursor/mcp.json yourself:

{
  "mcpServers": {
    "majr-seo": {
      "url": "https://seo.majr.app/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MAJR_API_KEY}"
      }
    }
  }
}

Claude Code

The plugin brings all three services and a skill that knows how to use them:

/plugin marketplace add majrdotapp/agent-services
/plugin install majr-services@agent-services

Or register just this server:

claude mcp add --transport http majr-seo https://seo.majr.app/mcp \
  --header "Authorization: Bearer $MAJR_API_KEY"

Lovable, Replit, or any chat-driven builder

No MCP needed. Put the key in your project's secrets as MAJR_API_KEY, then paste this prompt into the chat. The agent reads the contract and writes the integration in your app's own language.

Add AI SEO to this app using the MAJR AI SEO service. Read the contract first: https://seo.majr.app/llms.txt.
Auth: send "Authorization: Bearer <key>" with the key from the MAJR_API_KEY secret. Never hardcode it.
1. POST https://seo.majr.app/v1/audit with {"url": "<our deployed homepage>"} and show me score, findable, citable, and every failing check.
2. Fix each failing check in our templates. Generate the artifacts with the service and serve each at its path:
   robots.txt via POST /v1/robots, sitemap.xml via POST /v1/sitemap, the <head> block via POST /v1/head, llms.txt via POST /v1/llms-txt.
3. After we deploy, run the audit again and report before vs after.

3 — Audit your live page · 2 minutes

One call, one page. Over MCP the tool is audit_page; over HTTP:

curl -sS -X POST https://seo.majr.app/v1/audit \
  -H "Authorization: Bearer $MAJR_API_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://your-app.example/"}'

You get a scorecard of 13 checks, equal weight:

{
  "url": "https://your-app.example/",
  "score": 0.615, "findable": 1.0, "citable": 0.5,
  "findings": [
    {"check": "http_200", "ok": true, "detail": "..."},
    {"check": "meta_description", "ok": false, "detail": "no <meta name=\"description\">"},
    ...
  ]
}

Fix findable failures first: those mean the page is unreachable, or blocked by a noindex tag, an X-Robots-Tag header, or robots.txt. A score of 0.0 means unreachable, not bad.

4 — Fix what failed · 4 minutes

Each generator renders one artifact deterministically from what you send. Serve each at its path and wire the head block into your layout.

# robots.txt that welcomes AI crawlers by default
curl -sS -X POST https://seo.majr.app/v1/robots -H "Authorization: Bearer $MAJR_API_KEY" \
  -H "Content-Type: application/json" -d '{"site_url": "https://your-app.example"}'

# sitemap.xml from the paths you serve
curl -sS -X POST https://seo.majr.app/v1/sitemap -H "Authorization: Bearer $MAJR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site_url": "https://your-app.example", "entries": [{"path": "/"}, {"path": "/pricing"}]}'

# the <head> block: title, description, canonical, Open Graph, JSON-LD
curl -sS -X POST https://seo.majr.app/v1/head -H "Authorization: Bearer $MAJR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Your App — what it does", "description": "One honest sentence.", "canonical_path": "/", "site_url": "https://your-app.example"}'

# llms.txt so answer engines cite you accurately
curl -sS -X POST https://seo.majr.app/v1/llms-txt -H "Authorization: Bearer $MAJR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site_name": "Your App", "summary": "What it is, in one paragraph.", "site_url": "https://your-app.example"}'

Over MCP, audit_html scores the HTML you are about to deploy, so you can verify a template before it is live. Render it first: JavaScript is not executed.

5 — Deploy and verify · 1 minute

Deploy, run the audit from step 3 again, and compare. The loop is audit → fix → verify → deploy → audit. Your calls show up under your product at majr.app/keys.

Reference

Contract for agents (llms.txt)
https://seo.majr.app/llms.txt
MCP endpoint
https://seo.majr.app/mcp
Your keys and usage
majr.app/keys

Errors are RFC 7807 problem+json. A 401 means the key is wrong. A 503 with Retry-After is never a verdict on your key: wait and retry, do not rotate it.