# CallAI SEO (remote · api.callaiapi.com)

Live SEO data: Google/Bing SERP, AI Overview sources, keyword difficulty, backlinks, page audits.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.callaiapi.com`: 63/100 (this document), [markdown](https://verifymcp.io/servers/com-callaiapi-seo/api.md), [page](https://verifymcp.io/servers/com-callaiapi-seo/api)

## Channel facts

- Endpoint: `https://api.callaiapi.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 1 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2683 tokens (~134/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the CallAI SEO MCP server?

CallAI SEO is a hosted endpoint at https://api.callaiapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-callaiapi-seo 'https://api.callaiapi.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-callaiapi-seo": {
      "url": "https://api.callaiapi.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-callaiapi-seo": {
      "type": "http",
      "url": "https://api.callaiapi.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-callaiapi-seo]
url = "https://api.callaiapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-callaiapi-seo": {
      "type": "remote",
      "url": "https://api.callaiapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-callaiapi-seo --url 'https://api.callaiapi.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-callaiapi-seo:
    url: "https://api.callaiapi.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-callaiapi-seo": {
      "Transport": "http",
      "Url": "https://api.callaiapi.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-callaiapi-seo -t streamable-http -u 'https://api.callaiapi.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-callaiapi-seo": {
      "type": "http",
      "url": "https://api.callaiapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 63, +30)

- [security regression] Authorization: fail → unverified
- [security improvement] Transport: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100

### 2026-11-03 (score 33)

First indexed and scored.

## MCP tools (20)

### `google_serp` (~200 tokens)

Google SERP

Live Google organic search results for a keyword in a given country and language: ranks, titles, URLs, snippets, plus the AI Overview text and the sources it cites. Billed per call (about $0.002 for depth 10).

Input parameters:

- `depth` (integer): Number of results to fetch, 10–100 (default 10). Cost grows with depth.
- `device` (string): Default desktop.
- `keyword` (string, required): Search query. Supports operators such as site:example.com.
- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.

### `bing_serp` (~189 tokens)

Bing SERP

Live Bing organic search results for a keyword in a given country and language: ranks, titles, URLs, snippets. Billed per call (about $0.002 for depth 10).

Input parameters:

- `depth` (integer): Number of results to fetch, 10–100 (default 10). Cost grows with depth.
- `device` (string): Default desktop.
- `keyword` (string, required): Search query. Supports operators such as site:example.com.
- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.

### `keyword_overview` (~158 tokens)

Keyword metrics

Google search volume, CPC, competition, keyword difficulty (0–100) and main search intent for up to 100 keywords in one call. About $0.01 per call plus $0.0001 per keyword.

Input parameters:

- `keywords` (array, required): Keywords to look up (max 100).
- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.

### `keyword_ideas` (~197 tokens)

Long-tail keyword ideas

Long-tail keywords that contain the seed keyword, with search volume, CPC, keyword difficulty and intent. Use it to find low-difficulty commercial keywords. About $0.01 per call plus $0.0001 per keyword returned.

Input parameters:

- `keyword` (string, required): Seed keyword.
- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `limit` (integer): Keywords to return, 1–200 (default 50).
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.
- `max_difficulty` (integer): Only return keywords with keyword difficulty at or below this value (0–100).

### `ranked_keywords` (~176 tokens)

Keywords a domain ranks for

Google organic keywords a domain (or URL) currently ranks for, sorted by estimated traffic: keyword, volume, difficulty, position, ranking URL and estimated traffic. About $0.01 per call plus $0.0001 per row.

Input parameters:

- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `limit` (integer): Rows to return, 1–200 (default 50).
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.
- `target` (string, required): Domain such as example.com.

### `domain_overview` (~140 tokens)

Domain organic traffic overview

Estimated Google organic traffic, number of ranking keywords and their position distribution for a domain, plus paid search totals. About $0.01 per call.

Input parameters:

- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.
- `target` (string, required): Domain such as example.com.

### `keyword_gap` (~176 tokens)

Competitor keyword gap

Keywords the competitor ranks for on Google that your domain does not, sorted by search volume: the content gap to target. About $0.01 per call plus $0.0001 per row.

Input parameters:

- `competitor` (string, required): Competitor domain.
- `language_code` (string): Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN.
- `limit` (integer): Rows to return, 1–200 (default 50).
- `location_code` (integer): DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil.
- `your_domain` (string, required): Your domain.

### `backlinks_summary` (~63 tokens)

Backlink profile summary

Backlink totals for a domain: domain rank (0–1000), backlinks, referring domains, nofollow share, broken backlinks, spam score and first-seen date. About $0.02 per call.

Input parameters:

- `target` (string, required): Domain such as example.com.

### `referring_domains` (~75 tokens)

Referring domains

Domains linking to the target, strongest first: rank, backlink count, spam score and first-seen date. About $0.02 per call plus a small per-row fee.

Input parameters:

- `limit` (integer): Rows to return, 1–200 (default 50).
- `target` (string, required): Domain such as example.com.

### `page_audit` (~77 tokens)

On-page SEO audit

Fetches one URL and reports its on-page SEO: status code, title, meta description, canonical, headings, word count, link and image counts, load timing, on-page score and all on-page checks. About $0.0002 per call.

Input parameters:

- `url` (string, required): Absolute URL starting with https:// or http://.

### `dataforseo_request` (~187 tokens)

Any DataForSEO v3 endpoint

Calls any DataForSEO v3 endpoint directly when no dedicated tool fits (Google Maps, YouTube, Amazon keywords, Google Trends, LLM mentions, WHOIS, technologies, task_post/task_get and more). Body and response follow the DataForSEO v3 docs at https://docs.dataforseo.com/v3/. Billed at the endpoint's DataForSEO price; task_get and tasks_ready calls are free. Always set a limit or filters: endpoints without them can be expensive.

Input parameters:

- `body` (array): Array of task objects for POST requests.
- `method` (string): POST for live and task_post endpoints (default), GET for task_get and tasks_ready.
- `path` (string, required): Path below /v3/, e.g. "serp/google/maps/live/advanced" or "serp/google/organic/task_get/advanced/<task_id>".

### `keyword_suggestions` (~127 tokens)

Search-box keyword suggestions

Autocomplete suggestions from Google, Bing, YouTube, Amazon, Baidu, DuckDuckGo, Yahoo and Yandex, merged and de-duplicated. No search volume; pass the results to keyword_overview for metrics. Free: needs an API key but no balance.

Input parameters:

- `engines` (array): Default google and bing.
- `keyword` (string, required): Seed keyword.
- `market` (string): Default us.
- `mode` (string): seed: the keyword only (default). questions: with question words. az: with each letter a–z, the most results.

### `check_robots` (~50 tokens)

Read robots.txt

Fetches a site's robots.txt and returns its status and contents. Free: needs an API key but no balance.

Input parameters:

- `url` (string, required): URL or domain, such as https://example.com/page.

### `check_sitemap` (~69 tokens)

Find and read sitemaps

Finds a site's sitemaps through robots.txt (falling back to /sitemap.xml) and returns each one's status, number of URLs and a sample. Free: needs an API key but no balance.

Input parameters:

- `url` (string, required): URL or domain, such as https://example.com/page.

### `page_meta` (~126 tokens)

Read a page’s SEO tags

Fetches one URL and returns its status, final URL, title, meta description, canonical, meta robots, X-Robots-Tag, hreflang and H1s, as a browser or as Googlebot. Reads the raw HTML without running JavaScript. For a full audit use page_audit. Free: needs an API key but no balance.

Input parameters:

- `fetch_as` (string): Identify as our bot (default) or with Googlebot’s user agent, to spot cloaking.
- `url` (string, required): URL or domain, such as https://example.com/page.

### `redirect_chain` (~57 tokens)

Trace redirects

Follows a URL's redirects and returns the status and target of every hop, up to 5. Free: needs an API key but no balance.

Input parameters:

- `url` (string, required): URL or domain, such as https://example.com/page.

### `dns_lookup` (~53 tokens)

DNS records

A, AAAA, CNAME, MX, NS and TXT records of a domain, from public resolvers. Free: needs an API key but no balance.

Input parameters:

- `domain` (string, required): Domain such as example.com.

### `email_auth_check` (~103 tokens)

SPF, DKIM and DMARC audit

Checks a domain's MX, SPF, DKIM, DMARC and MTA-STS records and says whether it can be spoofed, with the issues to fix. Without dkim_selector it tries the common selectors, so a missing DKIM result is not proof of absence. Free: needs an API key but no balance.

Input parameters:

- `dkim_selector` (string): The DKIM selector, if known.
- `domain` (string, required): Domain such as example.com.

### `domain_check_start` (~183 tokens)

Start a domain check

Checks up to 100 domains (for buying expired or used domains): web archive history, Baidu index and backlinks, ending in a clean, suspect or rejected verdict with reasons. Charged per domain, about $0.02. Set dry_run first to see the exact cost and show it to the user. Runs in the background; read progress with domain_check_results.

Input parameters:

- `domains` (array, required): Domains to check (max 100).
- `dry_run` (boolean): Only return the cost; nothing is started or charged.
- `rules` (object): Optional pass rules; anything left out uses the defaults. Fields: tlds (string[]), firstSeenBy (year), minStableYears, noHistory (pass|suspect|reject), minBaiduIndexed (0–10), minReferringDomains, ma…

### `domain_check_results` (~124 tokens)

Read a domain check

Progress and per-domain verdicts of a check started with domain_check_start: verdict, reason, first archive year, stable years, Baidu results, referring domains and spam score. A check can take minutes; rows stay pending until their steps finish. Reading is free.

Input parameters:

- `after` (integer): The "next" value of the previous page.
- `check_id` (string, required): The id from domain_check_start.
- `limit` (integer): Rows per page, up to 200 (default 50).
- `verdict` (string): Only rows with this verdict.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-callaiapi-seo/api#diagnostics

## Score history

- 2026-11-05: 63
- 2026-11-04: 33
- 2026-11-03: 33

## Common questions

### What is the CallAI SEO MCP server?

CallAI SEO is an MCP server listed in the public MCP registry as com.callaiapi/seo. Live SEO data: Google/Bing SERP, AI Overview sources, keyword difficulty, backlinks, page audits. This page covers its hosted endpoint (https://api.callaiapi.com/mcp).

### Is the CallAI SEO MCP server safe to use?

CallAI SEO scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the CallAI SEO MCP server expose?

CallAI SEO exposes 20 tools: google_serp, bing_serp, keyword_overview, keyword_ideas, ranked_keywords, and 15 more. Their descriptions and schemas cost roughly 2,530 tokens of context every time the server is loaded.

### Does the CallAI SEO MCP server require authentication?

No. We connected to CallAI SEO without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the CallAI SEO MCP server still maintained?

CallAI SEO is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.callaiapi.com/mcp
- Authorisation metadata: https://api.callaiapi.com/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/hanshengcc/callai-seo-mcp
- Website: https://callaiapi.com/en/integrations/seo-mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-callaiapi-seo/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-callaiapi-seo/api.json
- HTML version of this page: https://verifymcp.io/servers/com-callaiapi-seo/api
