> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crakseo.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For SEO data and indexing, start with /seo-mcp/overview.md and /seo-mcp/connect.md, then read the focused server reference.
> The documentation search MCP at https://docs.crakseo.com/mcp searches documentation only. Product tools use https://crakseo.com/mcp/<server>.
> Check tool availability and API credit balance before paid calls. Request owner approval for paid indexing. Never invent prices, indexing guarantees or directory approval.

# SEO Site Audit MCP (On-Page and Technical SEO)

> SEO site audit MCP: on-page and technical SEO checks, Lighthouse and Core Web Vitals scores.

On-page and technical SEO checks for up to 5 pages (status code, on-page score, title, meta description, H1, canonical, word count, links, load time and every failed check), plus Lighthouse scores and Core Web Vitals for a page.

| | |
| - | - |
| Endpoint | `https://crakseo.com/mcp/site-audit` |
| Intended registry name | `com.crakseo/site-audit` |
| Transport | Streamable HTTP |
| Sign-in | OAuth, or an API key as a bearer token |
| Scopes | `seo-data:read` |
| Billing | Pay as you go (API credits) |

## When to use

Use before publishing, after a migration, when a page drops out of the index or when page speed is in question.

## Connect

```bash Claude Code theme={null}
claude mcp add --transport http crakseo-site-audit https://crakseo.com/mcp/site-audit
```

Use `crakseo-site-audit` as the server name and `https://crakseo.com/mcp/site-audit` as the URL. Run `/mcp` in Claude Code to authenticate. For OAuth, scoped API keys and a free test, follow [Connect and test](https://docs.crakseo.com/seo-mcp/connect.md).

Other clients: [ChatGPT](https://docs.crakseo.com/quickstarts/chatgpt.md), [Cursor](https://docs.crakseo.com/quickstarts/cursor.md), [Codex](https://docs.crakseo.com/quickstarts/codex.md), [VS Code](https://docs.crakseo.com/quickstarts/vscode.md), [Cline](https://docs.crakseo.com/quickstarts/cline.md), [Gemini CLI](https://docs.crakseo.com/quickstarts/gemini-cli.md), [Grok](https://docs.crakseo.com/quickstarts/grok.md) and [Muse](https://docs.crakseo.com/quickstarts/muse.md).

A remote connection does not require a marketplace listing. Registry names are distribution identifiers, not a claim of directory approval.

## Verify without spending

```text theme={null}
Use CrakSEO get_api_credit_balance to report my balance and dataCallsEnabled. Do not buy credits or make a paid call.
```

## Tools

| Tool | What it does | Price per call |
| - | - | - |
| `run_seo_site_audit` | SEO site audit for pages | TBD (placeholder) |
| `get_page_speed_scores` | Lighthouse and Core Web Vitals | TBD (placeholder) |
| `get_api_credit_balance` | API credit balance | Free |

> [!NOTE]
>
> Tool names, titles and parameters on this page match the server's `tools/list` response, which stays authoritative. Example values are placeholders, not real measurements. Prices marked TBD are set at launch on [API credits](https://docs.crakseo.com/pricing/api-credits.md).

### `run_seo_site_audit`

**SEO site audit for pages.** SEO site audit: on-page and technical SEO checks for up to 5 pages, with status code, on-page score, title, meta description, H1, canonical, word count, links, load time and every failed check. Costs API credits per page.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `urls` | `string[]` | Yes | Up to 5 page URLs to audit. |
| `javascript` | `boolean` | No | Render JavaScript before auditing (slower, costs more). Default `false`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run_seo_site_audit",
    "arguments": {
      "urls": [
        "https://example.com/"
      ]
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "pages": [
      {
        "url": "https://example.com/",
        "statusCode": 200,
        "onpageScore": 0,
        "title": "Example home page",
        "description": null,
        "h1": [
          "Welcome"
        ],
        "canonical": "https://example.com/",
        "wordCount": 0,
        "internalLinks": 0,
        "externalLinks": 0,
        "loadTimeMs": 0,
        "failedChecks": [
          "no_description"
        ]
      }
    ]
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_page_speed_scores`

**Lighthouse and Core Web Vitals.** Page speed and Core Web Vitals: Lighthouse performance, SEO, accessibility and best-practices scores for a page, with LCP, CLS, TBT and FCP. Costs API credits per call.

* Price per call: TBD (placeholder)
* Annotations: read-only, idempotent
* Limits: Results are cached for 24 hours. Failed calls are free.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `url` | `string` | Yes | Absolute public http(s) URL of the page. |
| `mobile` | `boolean` | No | Test the mobile experience (true) or desktop (false). Default `true`. |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_page_speed_scores",
    "arguments": {
      "url": "https://example.com/",
      "mobile": true
    }
  }
}
```

```json structuredContent theme={null}
{
  "result": {
    "url": "https://example.com/",
    "scores": {
      "performance": 0,
      "seo": 0,
      "accessibility": 0,
      "bestPractices": 0
    },
    "vitals": {
      "lcp": "0.0 s",
      "cls": "0",
      "tbt": "0 ms",
      "fcp": "0.0 s",
      "speedIndex": "0.0 s"
    }
  },
  "billing": {
    "channel": "credits",
    "chargedMicros": 0,
    "chargedUsd": 0,
    "cacheHit": false,
    "balanceMicros": 0
  }
}
```

### `get_api_credit_balance`

**API credit balance.** API credit balance: prepaid credits left for SEO data calls, amount spent, whether spending is suspended, and the per-call pricing rule. Free; no supplier call.

* Price per call: Free
* Annotations: read-only, idempotent
* Limits: Free; reads the wallet only.

| Parameter | Type | Required | Description |
| - | - | - | - |

```json Request theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_api_credit_balance",
    "arguments": {}
  }
}
```

```json structuredContent theme={null}
{
  "availableMicros": 0,
  "availableUsd": 0,
  "spentMicros": 0,
  "frozen": false,
  "dataCallsEnabled": true,
  "pricing": {
    "creditMarkup": 0,
    "minimumPerCallUsd": 0
  }
}
```

## Errors

| Code | Meaning | What to do |
| - | - | - |
| `insufficient_credits` | The API credits wallet can't cover the call's maximum price. | Add credits at [https://crakseo.com/app/indexing/credits](https://crakseo.com/app/indexing/credits), then retry the same call. The failed call isn't charged. |
| `forbidden` | The connection doesn't have the scope this tool needs, for example `seo-data:read` or `console:write`. | Reconnect and grant the scope named in the message, or use an API key that has it. |
| `not_connected` | Google Search Console or Bing Webmaster Tools isn't connected, or no connected property covers the URL. | Open the connect link in the message and sign in with the account that owns the property. |
| `invalid_input` | A parameter is missing or out of range. | Read the message, which names the field, fix the argument and retry. |
| `confirmation_required` | A paid indexing submission doesn't have the account owner's approval for this exact quote. | `submit_indexing_urls` returns `status: "needs_confirmation"` with a `confirmationUrl`. Send the owner there to approve, then retry with the same `quoteId` and `idempotencyKey`. The agent can't approve spend. |
| `wallet_frozen` | API credit spending is suspended on this account after a refund or dispute. | Contact [support@crakseo.com](mailto:support@crakseo.com). |
| `budget_exceeded` | The account's daily API credit spending limit, or the service's daily data budget, is used up. | Retry tomorrow. |
| `disabled` | SEO data calls aren't switched on for this deployment yet. | Use the free Search Console and URL indexing tools meanwhile. `get_api_credit_balance` reports `dataCallsEnabled`. |
| `supplier_unavailable` | The data supplier couldn't be reached or is rate limiting. | Retry later. Failed data calls are free. |
| `supplier_unknown` | The data supplier didn't answer in time or sent an unreadable response. | Retry later. Failed data calls are free. |
| `supplier_error` | The data supplier refused the request or returned no data. | Check the arguments (for example the location name) and retry. Failed data calls are free. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.