CallAI SEO MCP
Provides live SEO data including Google/Bing SERP results, AI Overview sources, keyword difficulty, backlinks, and page audits. It allows agents to query competitor keyword gaps and perform on-page audits using DataForSEO data, billed per call without a subscription.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.callaiapi.com/mcpWhat its tools do
20 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (19)
Can change data (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to callaiapi.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Query live Google and Bing search results with AI Overview sources
- Analyze keyword volume, difficulty, and competitor keyword gaps
- Retrieve backlink summaries and referring domain data
- Perform on-page audits and domain checks
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- callai-seo 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 20 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
20 advertised
google_serp — 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).
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"depth": {
"type": "integer",
"description": "Number of results to fetch, 10–100 (default 10). Cost grows with depth."
},
"device": {
"enum": [
"desktop",
"mobile"
],
"type": "string",
"description": "Default desktop."
},
"keyword": {
"type": "string",
"description": "Search query. Supports operators such as site:example.com."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}bing_serp — 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).
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"depth": {
"type": "integer",
"description": "Number of results to fetch, 10–100 (default 10). Cost grows with depth."
},
"device": {
"enum": [
"desktop",
"mobile"
],
"type": "string",
"description": "Default desktop."
},
"keyword": {
"type": "string",
"description": "Search query. Supports operators such as site:example.com."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}keyword_overview — 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.
{
"type": "object",
"required": [
"keywords"
],
"properties": {
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Keywords to look up (max 100)."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}keyword_ideas — 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.
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"limit": {
"type": "integer",
"description": "Keywords to return, 1–200 (default 50)."
},
"keyword": {
"type": "string",
"description": "Seed keyword."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
},
"max_difficulty": {
"type": "integer",
"description": "Only return keywords with keyword difficulty at or below this value (0–100)."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}ranked_keywords — 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.
{
"type": "object",
"required": [
"target"
],
"properties": {
"limit": {
"type": "integer",
"description": "Rows to return, 1–200 (default 50)."
},
"target": {
"type": "string",
"description": "Domain such as example.com."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}domain_overview — 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.
{
"type": "object",
"required": [
"target"
],
"properties": {
"target": {
"type": "string",
"description": "Domain such as example.com."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}keyword_gap — 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.
{
"type": "object",
"required": [
"competitor",
"your_domain"
],
"properties": {
"limit": {
"type": "integer",
"description": "Rows to return, 1–200 (default 50)."
},
"competitor": {
"type": "string",
"description": "Competitor domain."
},
"your_domain": {
"type": "string",
"description": "Your domain."
},
"language_code": {
"type": "string",
"description": "Language code, e.g. en (default), de, fr, ja, es, pt, zh-CN."
},
"location_code": {
"type": "integer",
"description": "DataForSEO location code. 2840 = United States (default), 2826 = UK, 2276 = Germany, 2250 = France, 2392 = Japan, 2356 = India, 2076 = Brazil."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}backlinks_summary — 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.
{
"type": "object",
"required": [
"target"
],
"properties": {
"target": {
"type": "string",
"description": "Domain such as example.com."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}referring_domains — 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.
{
"type": "object",
"required": [
"target"
],
"properties": {
"limit": {
"type": "integer",
"description": "Rows to return, 1–200 (default 50)."
},
"target": {
"type": "string",
"description": "Domain such as example.com."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}page_audit — 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.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute URL starting with https:// or http://."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}dataforseo_request — 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.
{
"type": "object",
"required": [
"path"
],
"properties": {
"body": {
"type": "array",
"items": {
"type": "object"
},
"description": "Array of task objects for POST requests."
},
"path": {
"type": "string",
"description": "Path below /v3/, e.g. \"serp/google/maps/live/advanced\" or \"serp/google/organic/task_get/advanced/<task_id>\"."
},
"method": {
"enum": [
"POST",
"GET"
],
"type": "string",
"description": "POST for live and task_post endpoints (default), GET for task_get and tasks_ready."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}keyword_suggestions — 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.
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"mode": {
"enum": [
"seed",
"az",
"questions"
],
"type": "string",
"description": "seed: the keyword only (default). questions: with question words. az: with each letter a–z, the most results."
},
"market": {
"enum": [
"us",
"uk",
"ca",
"au",
"de",
"fr",
"es",
"it",
"br",
"mx",
"jp",
"cn"
],
"type": "string",
"description": "Default us."
},
"engines": {
"type": "array",
"items": {
"enum": [
"google",
"bing",
"youtube",
"amazon",
"baidu",
"duckduckgo",
"yahoo",
"yandex"
],
"type": "string"
},
"description": "Default google and bing."
},
"keyword": {
"type": "string",
"description": "Seed keyword."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}check_robots — Read robots.txt
Fetches a site's robots.txt and returns its status and contents. Free: needs an API key but no balance.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL or domain, such as https://example.com/page."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}check_sitemap — 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.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL or domain, such as https://example.com/page."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}page_meta — 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.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL or domain, such as https://example.com/page."
},
"fetch_as": {
"enum": [
"bot",
"googlebot"
],
"type": "string",
"description": "Identify as our bot (default) or with Googlebot’s user agent, to spot cloaking."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}redirect_chain — 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.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL or domain, such as https://example.com/page."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}dns_lookup — DNS records
A, AAAA, CNAME, MX, NS and TXT records of a domain, from public resolvers. Free: needs an API key but no balance.
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain such as example.com."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}email_auth_check — 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.
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain such as example.com."
},
"dkim_selector": {
"type": "string",
"description": "The DKIM selector, if known."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}domain_check_start — 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.
{
"type": "object",
"required": [
"domains"
],
"properties": {
"rules": {
"type": "object",
"description": "Optional pass rules; anything left out uses the defaults. Fields: tlds (string[]), firstSeenBy (year), minStableYears, noHistory (pass|suspect|reject), minBaiduIndexed (0–10), minReferringDomains, maxSpamScore (0–100)."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Domains to check (max 100)."
},
"dry_run": {
"type": "boolean",
"description": "Only return the cost; nothing is started or charged."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true
}domain_check_results — 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.
{
"type": "object",
"required": [
"check_id"
],
"properties": {
"after": {
"type": "integer",
"description": "The \"next\" value of the previous page."
},
"limit": {
"type": "integer",
"description": "Rows per page, up to 200 (default 50)."
},
"verdict": {
"enum": [
"pending",
"ok",
"suspect",
"bad",
"error"
],
"type": "string",
"description": "Only rows with this verdict."
},
"check_id": {
"type": "string",
"description": "The id from domain_check_start."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1545 ms
- 95th percentile latency
- 1545 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1545 ms · metadata changed · 20 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http callai-seo-mcp https://api.callaiapi.com/mcpCodex
codex mcp add callai-seo-mcp --url https://api.callaiapi.com/mcpCursor
{
"mcpServers": {
"callai-seo-mcp": {
"url": "https://api.callaiapi.com/mcp"
}
}
}Cline
{
"mcpServers": {
"callai-seo-mcp": {
"type": "streamableHttp",
"url": "https://api.callaiapi.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"callai-seo-mcp": {
"type": "http",
"url": "https://api.callaiapi.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http callai-seo-mcp https://api.callaiapi.com/mcpClaude Desktop
https://api.callaiapi.com/mcpWindsurf
{
"mcpServers": {
"callai-seo-mcp": {
"serverUrl": "https://api.callaiapi.com/mcp"
}
}
}Let your agent find its tools
Find servers like CallAI SEO MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run CallAI SEO MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.