# seogeoaeo.ai: full reference > Make your website SEO, AEO & GEO ready. See how ready your site is for search engines, answer engines and AI search, with prioritized tips. Run it yourself or from your AI agent. ## How it works - Each tool takes a focused input, shows its credit price, runs once, and returns a result with findings (severity, what was observed, why it matters, remediation). - Every succeeded run also returns `improvementTips`: a `status` (`changes`, `clean`, or `incomplete`), a plain-text `summary`, a `tips` list ordered by priority with the change to make and the affected URLs or items, the `unchecked` parts of the analysis, and a `verify` step. Coding agents apply the tips, deploy, and run the tool again until `status` is `clean`. When `rerunVerifies` is `false`, the tips come from the input, so they are applied once. - Credits come from a monthly plan or a one-time credit pack. A run that fails on the platform side is refunded. - Plans: Indie $29/month for 2,000 credits; Startup $69/month for 5,000 credits; Scale $199/month for 22,000 credits; Enterprise $499/month for 130,000 credits. - Tools only fetch public http(s) URLs. Private, local, and non-web addresses are rejected before any request is made. ## Agent access Create an API key at https://seogeoaeo.ai/api-keys. Keys start with `sga_`, are shown once, and spend the workspace's credits. ### MCP Endpoint: https://seogeoaeo.ai/api/mcp (Streamable HTTP, stateless, POST only). Send `Authorization: Bearer ` on every request. Claude Code: ```bash claude mcp add --transport http --scope user seogeoaeo https://seogeoaeo.ai/api/mcp --header "Authorization: Bearer YOUR_API_KEY" ``` Cursor, Windsurf, and other clients that read an `mcpServers` file: ```json { "mcpServers": { "seogeoaeo": { "url": "https://seogeoaeo.ai/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` VS Code (`.vscode/mcp.json`): ```json { "servers": { "seogeoaeo": { "type": "http", "url": "https://seogeoaeo.ai/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` Codex (`~/.codex/config.toml`, with the key in `SEOGEOAEO_API_KEY`): ```toml [mcp_servers.seogeoaeo] url = "https://seogeoaeo.ai/api/mcp" bearer_token_env_var = "SEOGEOAEO_API_KEY" ``` Claude Desktop (`claude_desktop_config.json`, bridged through mcp-remote): ```json { "mcpServers": { "seogeoaeo": { "command": "npx", "args": [ "-y", "mcp-remote", "https://seogeoaeo.ai/api/mcp", "--header", "Authorization:${AUTH_HEADER}" ], "env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" } } } } ``` Every tool below is an MCP tool named by its slug. Tool calls also accept `maxCredits` (refuse a run above that price) and `idempotencyKey` (retry without paying twice). Free tools: `check-credits`, `get-run` and `get-assessment`. `run-assessment`: Checks a website in one call and scores SEO readiness, AEO readiness and AI access from 0 to 100, with the PageSpeed Insights bands: 90 to 100 good, 50 to 89 needs work, 0 to 49 poor. It runs the selected check groups on the URL and up to two more pages on the same site, and combines their fixes into one list ordered by priority. Each assessment is compared with the previous one of the same URL. progress.percentFixed is the share of the earlier issues that are now fixed, next to counts of fixed, still present and new issues. The default checks cost 67 credits for one page and 47 for each extra page. Each check is charged on its own and refunded if it fails. One call runs checks for 40 seconds, or as long as its slowest selected check: about two minutes for performance and three and a half for AI brand descriptions. Allow a client timeout of four minutes. When status is in_progress, continue with the same id to run the rest. Arguments: `url`, `pages` (up to two), `checks`, `questions` (AI answers, charged separately), `brand`, `id` (continue a saved assessment), `compareTo`, `maxCredits`, `idempotencyKey`. Check groups: Default: technical, onPage, schema, content. technical: Indexing, canonicals, robots, redirects and host consistency. onPage: Titles, descriptions and headings on each selected page. schema: JSON-LD validity and relevant schema types. content: Readability, answer structure, dates and authorship signals. images: Image text, dimensions and accessibility on each page. rendering: Rendered content, mobile parity and HTML size. performance: Core Web Vitals field data when available and lab diagnostics. structure: A separate crawl of up to 150 pages for links and sitemap coverage. brand: Visible brand names, organization markup and entity references. narrative: Ask three AI engines how they describe your brand. Separately priced. ### REST API v1 Base URL: https://seogeoaeo.ai/api/v1. OpenAPI: https://seogeoaeo.ai/openapi.json. - `GET /tools`: catalog with prices and JSON Schema inputs (no key needed). - `GET /tools/{slug}`: one tool (no key needed). - `POST /tools/{slug}/runs`: run a tool. Body `{ "input": {...}, "idempotencyKey"?: string, "maxCredits"?: number }`. - `GET /runs?limit=20`: recent runs in the workspace. - `GET /runs/{id}`: one stored run. Each workspace keeps its latest 1,000 runs; older ones return 404. - `POST /assessments`: assess a website. Body `{ "input": { "url", "pages"?, "checks"?, "questions"?, "brand"? }, "compareTo"?, "idempotencyKey"?, "maxCredits"? }`. Returns `{ "assessment" }` with scores, progress and the combined fix list. - `POST /assessments/{id}/continue`: run the checks an assessment has not finished. Body `{ "maxCredits"? }`. - `GET /assessments/{id}`: one assessment. `GET /assessments?limit=10`: recent assessments with their overall score. - `GET /credits`: credit balance. Errors return `{ "error": { "code", "message" } }` with codes invalid_request (400), unauthorized (401), insufficient_credits or max_credits_exceeded (402), not_found (404; a tool merged into another returns the new slug in `replacement`), run_in_progress (409), payload_too_large (413), rate_limited (429, with a Retry-After header), tool_failed (502, the page or input could not be processed), and unavailable (503, a provider such as a search or AI engine is down). Credits for a run that ends in 502 or 503 are refunded. ### Improving a site Every succeeded run returns `run.improvementTips` next to `run.result`: - `status`: `changes` when there are tips, `clean` when the tool checked everything and found nothing to change, and `incomplete` when part of the analysis could not run. - `summary`: a plain-text checklist of every change, ordered by priority. - `tips`: `[{ id, priority, title, action, why, detail, affected, fixIn? }]`, ordered high, medium, low. `action` is the change to make, `affected` lists the URLs, headers, or items it applies to, and `id` names one kind of change and stays the same across runs. `fixIn` is `dns` or `external` when the change is made outside the site's code, in DNS or another service. - `unchecked`: `[{ id, title, detail, action }]`, the parts of the analysis that could not run, such as a data provider outage or an input with nothing to analyze. While it is not empty, the result cannot show that the site is clean. - `rerunVerifies`: `true` when running the tool again with the same input shows whether the changes worked. `false` for generators and for runs on pasted input or search data, whose tips come back on every run with the same input. - `verify`: how to confirm the changes worked. Passing checks, notes about the input, and caveats are left out of `tips`. Failed runs, and runs whose result is no longer available, return `improvementTips: null`. Brand Narrative's `conflicts` are model-flagged candidates for human review, not verified contradictions. Quote matching proves that the text exists, not that the statements disagree. These candidates remain report notes and must not trigger automatic site edits. Product and LocalBusiness markup are conditional on the page's purpose; a missing type alone is not a required fix. llms.txt is optional and is not a Google search or AI visibility requirement. When the user asks to check a site and improve it: 1. Check the credit balance with the check-credits MCP tool or `GET /credits`. Add up the price of each planned run and confirm the total with the user before running more than the core checks. 2. Start with one website assessment: the run-assessment MCP tool, or `POST /assessments` with `{ "input": { "url": "https://example.com/", "pages": [] } }` and up to two key pages. It runs the core checks, `robots-checker`, `redirects-headers-checker` once on the origin (20 credits) and `indexing-checker`, `on-page-seo-checker`, `schema-checker`, `readability-analyzer`, `citability-analyzer`, `content-freshness-checker`, `author-eeat-checker` on each page (47 credits per page), so one page costs 67 credits. It returns `scores` from 0 to 100 for SEO readiness, AEO readiness and AI access with the PageSpeed Insights bands, one combined `improvementTips` list, and `next`. When `status` is `in_progress`, continue it with its id (run-assessment with `id`, or `POST /assessments/{id}/continue`). To answer a focused question, run the single tool instead. 3. Add a conditional check only when its condition holds: - When the site has more than a handful of pages: `xml-sitemap-validator`, `orphan-page-finder`, `broken-internal-link-finder`. - When pages depend on JavaScript, are very large, or differ on mobile: `ai-crawler-view`, `mobile-parity-checker`, `page-size-checker`. - When speed or images matter for the page: `core-web-vitals-snapshot`, `image-seo-checker`. - When the page sells a product: `product-schema-checker`. - When the business serves customers at a location: `local-business-checker`. - When the site has language or country versions: `hreflang-checker`. - When brand recognition, the search result favicon or link previews matter: `brand-entity-checker`, `favicon-checker`, `open-graph-checker`. - When the user asks whether AI browsers and agents can use the site: `ai-agent-readiness`. - When changed URLs should be announced to Bing and other IndexNow engines: `indexnow-checker`. 4. AI answer sampling: `ai-answer-visibility` costs 120 credits per run, `brand-narrative-check` costs 150 credits per run, `fanout-coverage-checker` costs 95 credits per run. Run these only when the user asks how AI assistants answer questions about the market or describe the brand, and agree on the exact questions first. Results are sampled observations that can change between runs; never report them as verified site improvements. 5. Run input-driven tools only when there is input for them, such as a target query, a keyword list, a log file, or markup to generate: `competitor-finder`, `domain-overview`, `backlink-finder`, `competitor-keywords`, `keyword-gap`, `keyword-research`, `keyword-metrics`, `competitor-google-ads`, `meta-ad-finder`, `linkedin-ad-finder`, `ai-citation-finder`, `ai-question-finder`, `http-status-bulk-checker`, `keyword-ideas`, `keyword-clusterer`, `keyword-deduplicator`, `schema-markup-generator`, `organization-entity-markup-builder`, `faq-schema-builder`, `breadcrumb-schema-builder`, `llms-txt-generator`, `ai-bot-log-analyzer`, `question-finder`. 6. Work through each run's tips from high to low. Find the code, template, config, or content that produces each affected URL or item, and make the change `action` describes. Do not invent facts, reviews, prices, or contact details to satisfy a tip. 7. When a tip has `fixIn`, or otherwise needs a change outside the codebase such as DNS, CDN, or hosting settings, tell the user exactly what to change. 8. Deploy, then check again. Tools only fetch public URLs, so they see a change once it is live. For an assessment, run a new one on the same URL: it is compared with the previous one automatically, and `progress` gives `percentFixed` with the counts of `fixed`, `stillPresent` and `new` issues. For a single tool, run the same tool with the same input; a tip whose `id` no longer appears is fixed. Repeat until `status` is `clean` or the remaining tips need the user. 9. When `rerunVerifies` is `false`, apply the tips once and do not re-run for them, because the same input returns the same tips. Where a tip names a checker such as `schema-checker`, run that checker on the live URL instead. 10. When `status` is `incomplete`, follow each `unchecked` item before reporting the site as clean. A provider outage clears on a later run; an input problem needs a different input. 11. Report the scores before and after, `progress.percentFixed`, what remains and why, what could not be checked, and the credits spent. Link the assessment's `reportUrl` so the user can see the report. People who prefer the browser can run the same assessment, with the same scores and comparison, at https://seogeoaeo.ai/check-website. AI-referral filters are free at https://seogeoaeo.ai/guides/ai-referrals, and owner-data measurement guidance is at https://seogeoaeo.ai/guides/search-performance. Example for an on-page-seo-checker run: ```json { "improvementTips": { "status": "changes", "summary": "2 changes to improve this result (2 medium priority):\n1. [medium] Title may truncate: Shorten the title or move the key words to the front. On: https://example.com/pricing.\n2. [medium] Missing meta description: Add one unique meta description in the document head. On: https://example.com/pricing.", "tips": [ { "id": "title.too_long", "priority": "medium", "title": "Title may truncate", "action": "Shorten the title or move the key words to the front.", "why": "Search results cut titles by pixel width, hiding the ending.", "detail": "Title is 74 characters, about 690px wide; desktop results show about 580px.", "affected": [ "https://example.com/pricing" ] }, { "id": "description.missing", "priority": "medium", "title": "Missing meta description", "action": "Add one unique meta description in the document head.", "why": "Without a description, search engines may compose a snippet from body text.", "detail": "No non-empty meta description was found.", "affected": [ "https://example.com/pricing" ] } ], "unchecked": [], "rerunVerifies": true, "verify": "Apply the changes, publish them, then run on-page-seo-checker again with the same input. A fixed tip no longer appears; compare by tip id." } } ``` ### Agent skill Download https://seogeoaeo.ai/skills/seogeoaeo/SKILL.md into your agent's skills folder, for example `~/.claude/skills/seogeoaeo/SKILL.md` for Claude Code. ### FAQ **How long can AI reports take?** Allow four minutes for AI answer, brand narrative and fan-out reports. Some providers take over two minutes to answer. If a request times out, retry with the same idempotencyKey. Check improvementTips.unchecked for any provider data that could not be retrieved. **Can AI agents use seogeoaeo.ai tools?** Yes. Every tool is available over an MCP server at https://seogeoaeo.ai/api/mcp and a REST API at https://seogeoaeo.ai/api/v1. Any MCP client can connect, including Claude Code, Cursor, VS Code, Codex, Windsurf and Claude Desktop. It sends an API key as a bearer token. **How do agents authenticate?** Create an API key at https://seogeoaeo.ai/api-keys. Send it on every request as "Authorization: Bearer ". Keys start with sga_, are shown once, and can be revoked at any time. **Can a coding agent fix what the tools find?** Yes. Every successful run returns improvementTips. They hold a status, a plain-text summary and a list of changes ordered by priority. Each change names the URLs or items it applies to. The tips also list any parts of the analysis that could not run, and how to verify the fix. An agent working in the site's codebase applies the tips, deploys, and runs the same tool again until the status is clean. Tips keep the same id across runs, so a fixed tip is recognized by its absence. Generators and runs on pasted input return the same tips for the same input. They set rerunVerifies to false, so the agent applies their tips once. **How does an agent show that its fixes worked?** It runs a new website assessment of the same URL after deploying. Each assessment is compared with the previous one automatically. progress.percentFixed is the share of the earlier issues that are gone. Next to it are the fixed, still present and new counts, and the scores before and after. Issues are counted per page and item, so a fix applied to two of five pages shows as partly fixed instead of unchanged. Tips marked fixIn need a change in DNS or another service, which the agent hands to you. **What does an agent run cost?** The same credits as a run from the browser. The core checks cost 67 credits for one page and 47 for each extra page. AI answer sampling costs 95 to 150 credits per run, so agents run it only when asked. Agents can pass maxCredits to refuse a run above an expected price, and a run that fails before producing a result is refunded. **How do I stop an agent from paying twice on a retry?** Pass the same idempotencyKey when retrying a run. The API returns the original run instead of charging again, as long as that run is still among the workspace's latest 1,000. **What is the seogeoaeo.ai agent skill?** A SKILL.md file at https://seogeoaeo.ai/skills/seogeoaeo/SKILL.md that tells an agent which tool fits a request, what each one costs, and how to call it. Save it in your agent's skills folder, for example ~/.claude/skills/seogeoaeo/SKILL.md for Claude Code. **Which sites can the tools check?** Public http and https URLs only. Private, local, and non-web addresses are rejected before any request is made. ## SEO tools Technical checks, on-page analysis, keywords, and Core Web Vitals. ### Competitor Finder See which sites compete with yours in Google, so you know whose keywords to study. Find the websites that rank in Google for the same keywords as yours, sorted into close competitors and large general sites by how much of their traffic overlaps. - Page: https://seogeoaeo.ai/tools/competitor-finder - Slug: `competitor-finder` (MCP tool name and REST path segment) - Price: 38 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Competitors for one page or folder; the lookup covers the whole domain - Competitors in the countries you do not choose - Businesses that compete with you offline or through paid ads only - Exact traffic; visits and keyword counts are estimates Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/competitor-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.copy.ai","market":"us"}}' ``` ### Domain Overview Size up any website, yours or a competitor's, by its Google rankings and its links before you decide what to copy or beat. See how many keywords a website ranks for in Google, how many visits that brings, what those visits would cost in ads, and how many sites link to it. - Page: https://seogeoaeo.ai/tools/domain-overview - Slug: `domain-overview` (MCP tool name and REST path segment) - Price: 50 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Overviews for one page or folder; the lookup covers the whole domain - Exact traffic; visits and ad costs are estimates from search data - Google results in the countries you do not choose; links count from every country - Which keywords or links make up the totals; Competitor Keywords and Backlink Finder list them Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/domain-overview/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.hubspot.com","market":"us"}}' ``` ### Backlink Finder See which sites link to a competitor, or to you, so you know who to ask for a link and which links are worth matching. List the strongest sites that link to a website, with how strong each is and whether it looks spammy, and the link texts they use. - Page: https://seogeoaeo.ai/tools/backlink-finder - Slug: `backlink-finder` (MCP tool name and REST path segment) - Price: 70 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Every link; the lookup lists the 100 strongest linking sites and 50 link texts - Links to one page or folder; the lookup covers the whole domain - Contact details for the sites that link in - Which links Google counts; the spam score and rank are the provider's estimates Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/backlink-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.hubspot.com"}}' ``` ### Competitor Keywords See what a competitor ranks for in Google, then pick blog topics and ad keywords from it. List the Google keywords a competitor's site ranks for, with search volume, difficulty and cost per click, sorted into blog topics and keywords worth bidding on. - Page: https://seogeoaeo.ai/tools/competitor-keywords - Slug: `competitor-keywords` (MCP tool name and REST path segment) - Price: 35 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Keywords for one page or folder; the lookup covers the whole domain - Keywords ranked outside the country you choose - Exact traffic; visits and volumes are estimates - Rank tracking for your own site - Keywords a competitor bids on in Google Ads Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/competitor-keywords/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.hubspot.com","market":"us"}}' ``` ### Keyword Gap See the keywords a competitor wins in Google that your site misses, then pick blog topics and ad keywords from them. List the Google keywords a competitor ranks for on the first two pages that your site does not rank for, sorted into blog topics and keywords worth bidding on. - Page: https://seogeoaeo.ai/tools/keyword-gap - Slug: `keyword-gap` (MCP tool name and REST path segment) - Price: 85 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `competitor` (string, required, max 2048 characters). - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Keywords both sites rank for, where you rank lower - Keywords the competitor ranks below position 20 for - Keywords ranked outside the country you choose - Exact traffic; searches and difficulty are estimates - Keywords a competitor bids on in Google Ads Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-gap/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.usageatlas.com","competitor":"https://www.hubspot.com","market":"us"}}' ``` ### Keyword Research Turn one keyword or topic into a list of related Google searches with the data to choose blog topics and ad keywords. Find the Google searches related to a keyword, with monthly searches, difficulty, cost per click and trend, sorted into easy wins, blog topics and keywords worth bidding on. - Page: https://seogeoaeo.ai/tools/keyword-research - Slug: `keyword-research` (MCP tool name and REST path segment) - Price: 34 credits per run Inputs: - `keyword` (string, required, max 80 characters). - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Keywords for a competitor's site; use Competitor Keywords for that - Keywords ranked outside the country you choose - Exact search counts; volumes and difficulty are estimates - Rank tracking for your own site - A content brief for each keyword Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-research/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"keyword":"standing desk","market":"us"}}' ``` ### Keyword Metrics Rank a keyword list you already have by search volume, difficulty and ad cost, so you know which to write about or bid on first. Paste a list of keywords and get each one's monthly Google searches, difficulty, cost per click and yearly trend, sorted into easy wins, blog topics and keywords worth bidding on. - Page: https://seogeoaeo.ai/tools/keyword-metrics - Slug: `keyword-metrics` (MCP tool name and REST path segment) - Price: 33 credits per run Inputs: - `keywords` (string, required, max 20000 characters). Newline-separated keyword list. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Finding new keywords; use Keyword Research for that - More than 100 keywords in one run - Keywords ranked outside the country you choose - Exact search counts; volumes and difficulty are estimates - Rank tracking for your own site Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-metrics/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"keywords":"standing desk\nergonomic chair\nmonitor arm\nbest desk lamp","market":"us"}}' ``` ### Competitor Google Ads See what a competitor says in its Google ads, and which ads it keeps paying for, so you can write stronger ones. Enter a competitor's website to see the Google ads it runs: how many, in which formats, how long each has been showing, and the headlines and descriptions of its longest-running text ads. - Page: https://seogeoaeo.ai/tools/competitor-google-ads - Slug: `competitor-google-ads` (MCP tool name and REST path segment) - Price: 15 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `market` (string, optional, one of all, us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - The keywords a competitor bids on; Google does not publish them, and Competitor Keywords shows the searches it ranks for - What a competitor spends or how its ads perform - Ads on Facebook, Instagram or LinkedIn; use the Meta and LinkedIn ad tools for those - Every ad in the history; the 100 most recently shown are sampled, and the copy of up to 10 text ads is read Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/competitor-google-ads/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.semrush.com","market":"all"}}' ``` ### Meta Ad Finder See the Facebook and Instagram ads your competitors keep running, and the wording and offers behind them. Find the Facebook and Instagram ads a competitor is running right now, or every active ad that mentions a keyword: the wording, call to action, landing page, start date and where each ad shows. - Page: https://seogeoaeo.ai/tools/meta-ad-finder - Slug: `meta-ad-finder` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `query` (string, required, max 120 characters). Search query or seed keyword. - `mode` (string, optional, one of page, keyword). - `market` (string, optional, one of all, us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - What an advertiser spends, or how many people an ad reached - Ads that have stopped running; only active ads are listed - Ad images and videos; the report shows the wording and links to each ad in the Meta Ad Library - Ads on Google or LinkedIn; use the Google and LinkedIn ad tools for those - More than the 30 most recently started ads for one search Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/meta-ad-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"query":"Semrush","mode":"page","market":"all"}}' ``` ### LinkedIn Ad Finder See what a company says in its LinkedIn ads, which ones it keeps running, and which ad types it relies on. Enter a company name to see the ads it runs on LinkedIn: the ad types, headlines and descriptions, when each started and stopped, and the impressions range LinkedIn publishes for it. - Page: https://seogeoaeo.ai/tools/linkedin-ad-finder - Slug: `linkedin-ad-finder` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `company` (string, required, max 120 characters). - `market` (string, optional, one of all, us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - What a company spends, or who saw its ads - Ad images and videos; the report links to each ad in the LinkedIn Ad Library - Ads on Google, Facebook or Instagram; use the Google and Meta ad tools for those - More than the 24 most recently started ads for one search Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/linkedin-ad-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"company":"Semrush","market":"all"}}' ``` ### Indexing & Canonical Checker See whether Google and Bing may crawl, index and quote a page in search and AI answers, which signal blocks it, and the exact tag or header to change. Check whether a URL can be crawled, indexed and quoted: status, robots.txt, meta robots, X-Robots-Tag, the canonical and its target, and snippet controls for Google and Bing. - Page: https://seogeoaeo.ai/tools/indexing-checker - Slug: `indexing-checker` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Search Console confirmation that the URL is in Google’s index - JavaScript rendering or meta-refresh crawling - Full robots.txt audits or sitemap coverage Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/indexing-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Robots.txt & AI Crawler Checker See every robots.txt rule that blocks search or AI crawlers, the rule that matches a given path, and the exact line to change. Audit a site's robots.txt, test whether a crawler may fetch a path, and see which search and AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended and more) are allowed. - Page: https://seogeoaeo.ai/tools/robots-checker - Slug: `robots-checker` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `path` (string, optional, max 2048 characters). URL path to test, such as /blog/post. Defaults to /. - `userAgent` (string, optional, max 200 characters). Crawler user-agent token, such as Googlebot or GPTBot. Defaults to *. Does not: - Rendering or fetching the tested path itself - Sitemap validation or indexation claims - Proof that a crawler obeys robots.txt Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/robots-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Redirects, Headers & Host Checker See every redirect hop, duplicate host version and response header that costs crawl budget or blocks indexing, with the server rule to change. Follow a URL's redirect chain, check that http, https, www and bare hosts all end at one URL, and find response headers that hurt crawling, indexing or previews. - Page: https://seogeoaeo.ai/tools/redirects-headers-checker - Slug: `redirects-headers-checker` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - A full security audit - JavaScript or meta-refresh redirects beyond the first document - DNS record management Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/redirects-headers-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### On-Page SEO Checker See the title, description and heading changes a page needs, how its snippet clips in search, and which query words it is missing. Check a page’s title, meta description, search snippet and H1–H6 outline. Add a target query to grade how well the title, H1, URL and body cover it. - Page: https://seogeoaeo.ai/tools/on-page-seo-checker - Slug: `on-page-seo-checker` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `query` (string, optional, max 200 characters). Search query or seed keyword. Does not: - Live rankings or search volume - Content written for you - Tags injected by JavaScript after load Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/on-page-seo-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### XML Sitemap Validator See whether search engines can read your sitemap, how many entries it has, and which URLs or dates are wrong. Validate a sitemap or sitemap index against the sitemaps.org protocol and Google's limits: well-formed XML, namespace, size, entry count, URL scope, and lastmod. - Page: https://seogeoaeo.ai/tools/xml-sitemap-validator - Slug: `xml-sitemap-validator` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Fetching child sitemaps from an index - Discovering sitemaps from robots.txt - Confirming Google ingested the file - Validating image, video, or news extension tags Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/xml-sitemap-validator/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.sitemaps.org/sitemap.xml"}}' ``` ### HTTP Status Bulk Checker See status, redirect target, and timing for this URL list. Page bodies are not fetched. Check HTTP status, redirect target, and latency for a pasted URL list without storing bodies. - Page: https://seogeoaeo.ai/tools/http-status-bulk-checker - Slug: `http-status-bulk-checker` (MCP tool name and REST path segment) - Price: 20 credits per run Inputs: - `urls` (string, required, max 20000 characters). Newline-separated list of public http(s) URLs. Does not: - Single-URL hop-by-hop header inspection as the primary job - Storing HTML bodies - Soft-404 body heuristics - Sitemap loc expansion - Site-wide crawls Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/http-status-bulk-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"urls":"https://example.com\nhttps://www.example.com"}}' ``` ### Broken Internal Link Finder Find links on one page that lead to broken pages on the same site. Find same-host links on one page and check up to 30 of them for 4xx/5xx failures, main-content links before navigation. - Page: https://seogeoaeo.ai/tools/broken-internal-link-finder - Slug: `broken-internal-link-finder` (MCP tool name and REST path segment) - Price: 15 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Site-wide crawls - Broken external links - Internal link opportunities - Orphan detection - JavaScript-injected links Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/broken-internal-link-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Open Graph & Social Card Checker See the preview LinkedIn, Facebook, Slack and X build, with image size, format and dimension checks against each platform’s limits. Check the og: and twitter: tags behind a page’s link preview, download the share image, and preview the card. - Page: https://seogeoaeo.ai/tools/open-graph-checker - Slug: `open-graph-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Refreshing a platform’s cached preview - Pixel-exact rendering of every platform’s card - Tags injected by JavaScript after load Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/open-graph-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Readability Analyzer See reading level, long-sentence issues, and the sentences most worth rewriting. Check reading level, long sentences, and rewrite targets for a page or pasted copy. - Page: https://seogeoaeo.ai/tools/readability-analyzer - Slug: `readability-analyzer` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `text` (string, optional, max 20000 characters). Pasted content to check instead of fetching url. Does not: - Generating easier copy - Target-query relevance or an on-page score - Entity or semantic coverage - JavaScript-injected body text Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/readability-analyzer/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Keyword Ideas See the keyword suggestions Google shows for a seed in your market. Expand a seed query into live Google autocomplete suggestions, with shared terms and question-shaped ideas. - Page: https://seogeoaeo.ai/tools/keyword-ideas - Slug: `keyword-ideas` (MCP tool name and REST path segment) - Price: 15 credits per run Inputs: - `query` (string, required, max 200 characters). Search query or seed keyword. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - People Also Ask and related-search blocks - Semantic clusters or parent-page suggestions - Keyword-list dedup - Question-only mining - Query-list intent classification - Long-tail template expansion - Search volume, CPC, difficulty, or rank - Scraping Google HTML - Using organic titles as keywords - Storing raw SERP JSON Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-ideas/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"query":"running shoes","market":"us"}}' ``` ### Keyword Clusterer Group a keyword list into topic clusters, with a suggested parent page path for each group. Group a keyword list into token-overlap clusters with a suggested parent page. - Page: https://seogeoaeo.ai/tools/keyword-clusterer - Slug: `keyword-clusterer` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `keywords` (string, required, max 20000 characters). Newline-separated keyword list. Does not: - Exact-duplicate or hyphen/plural merge - Query-list intent classification - Topical maps with site URLs - Embeddings or LLM clustering - Search volume, CPC, difficulty, or rank - Scraping Google HTML - Live SERP fetches Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-clusterer/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"keywords":"running shoes\nbest running shoes\ntrail running shoes\nrunning shoes for beginners\ndress shoes\nemail marketing"}}' ``` ### Keyword Deduplicator See unique keywords after normalization, plus merged duplicates and conflicting spellings. Normalize a keyword list, merge exact duplicates, and flag hyphen or plural variants. - Page: https://seogeoaeo.ai/tools/keyword-deduplicator - Slug: `keyword-deduplicator` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `keywords` (string, required, max 20000 characters). Newline-separated keyword list. Does not: - Semantic clusters or parent-page suggestions - CSV or URL validation - Search volume, difficulty, or SERP data - Language-specific stemming Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/keyword-deduplicator/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"keywords":"Blue Widgets\nblue widgets\nblue-widget"}}' ``` ### Core Web Vitals Snapshot Review field measurements and lab diagnostics separately for one public URL, with clear gaps when data is unavailable. Read real-user Core Web Vitals when field data is available, plus a Lighthouse lab snapshot and its largest opportunities. - Page: https://seogeoaeo.ai/tools/core-web-vitals-snapshot - Slug: `core-web-vitals-snapshot` (MCP tool name and REST path segment) - Price: 20 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `strategy` (string, optional, one of mobile, desktop). PageSpeed Insights device strategy. Defaults to mobile. Does not: - Bulk URL lists - Running Lighthouse in our own browser fleet - Guaranteed Search ranking or traffic claims - Storing Lighthouse screenshots or the full audit JSON Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/core-web-vitals-snapshot/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com","strategy":"mobile"}}' ``` ### Page Size & 2 MB Limit Checker Know whether Googlebot sees the whole page, and exactly which links, JSON-LD and text fall past the 2 MB cutoff when it does not. Measure a page's HTML against Googlebot's 2 MB fetch limit and show what inflates it: inline scripts, styles, base64 images and DOM size. - Page: https://seogeoaeo.ai/tools/page-size-checker - Slug: `page-size-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Images, scripts and styles loaded as separate files - Rendered (JavaScript) DOM size - Core Web Vitals Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/page-size-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Hreflang Checker Find the invalid codes, missing return links, noindex and canonical conflicts that make Google ignore your language versions. Validate a page’s hreflang codes, self-reference and x-default, then fetch each language version to confirm it loads, is indexable and links back. - Page: https://seogeoaeo.ai/tools/hreflang-checker - Slug: `hreflang-checker` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - hreflang in XML sitemaps - Crawling every page of the site - Choosing which markets to target Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/hreflang-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.airbnb.com"}}' ``` ### Favicon & Site Name Checker Check whether your favicon and site name meet the requirements Google uses to show them in search results. Check the favicon and site name Google shows above your search results: the icon is declared on the home page, loads, is square, 48 px or larger and crawlable, and WebSite structured data names the site. Also checks apple-touch-icon and manifest icons. - Page: https://seogeoaeo.ai/tools/favicon-checker - Slug: `favicon-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Generating icon files - Forcing Google to refresh a cached favicon - Browser tab rendering quirks Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/favicon-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### IndexNow Checker & Submitter Notify participating engines about changed URLs and see whether the submission was accepted. Crawling and indexing timing are not guaranteed. Verify your IndexNow key file and submit up to 100 changed URLs to Bing, Yandex, Naver and Seznam in one request. Without a key, get a new one and the file to serve. - Page: https://seogeoaeo.ai/tools/indexnow-checker - Slug: `indexnow-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `key` (string, optional). IndexNow key to verify, 8 to 128 letters, digits or dashes. When omitted, a new key and its file are generated. - `keyLocation` (string, optional, max 2048 characters). URL of the IndexNow key file on the same host, when it is not at /.txt. - `urls` (string, optional, max 20000 characters). Newline-separated list of public http(s) URLs. Does not: - Submitting to Google, which does not support IndexNow - Guaranteeing that submitted URLs are indexed - Scheduled or automatic submissions Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/indexnow-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Mobile Parity Checker Find content, links and markup missing from the mobile version of a page, which is the version Google indexes. Fetch a page as a phone and as a desktop and compare what Google's mobile-first indexing sees: content, headings, structured data, title, description, robots, canonical, links, images, hreflang and the viewport. - Page: https://seogeoaeo.ai/tools/mobile-parity-checker - Slug: `mobile-parity-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Rendering JavaScript - Measuring mobile speed (use the Core Web Vitals Snapshot) - Visual layout or tap-target checks Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/mobile-parity-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Product Schema Checker Find the Product markup fields missing or wrong for Google's price, availability and rating rich results. Check a product page's Product markup (JSON-LD or microdata) against Google's product snippet and merchant listing requirements: price format, ISO currency, availability, GTIN check digit, brand, shipping, return policy, ratings, and whether the marked-up price appears on the page. - Page: https://seogeoaeo.ai/tools/product-schema-checker - Slug: `product-schema-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Merchant Center feed validation - Checking every product on a site - Competitor pricing Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/product-schema-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.allbirds.com/products/mens-tree-runners"}}' ``` ### Local Business Checker Check that your LocalBusiness markup is complete and that its address and phone match what the page shows. Check a location or contact page's LocalBusiness markup against Google's local business guide (specific type, full address, phone, coordinates, opening hours, listing profiles) and confirm the marked-up address and phone also appear on the page. - Page: https://seogeoaeo.ai/tools/local-business-checker - Slug: `local-business-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Google Business Profile audits - Citation or directory listing checks - Local rank tracking Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/local-business-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com/contact"}}' ``` ### Image SEO Checker Find images missing alt text or dimensions, broken image files, and heavy or oversized images slowing the page down. Check every image on a page for alt text, width and height, lazy-loading of the main image, srcset and sizes, and script-only loading. The first 12 image files are downloaded to catch broken links, JPEG or PNG files that could be WebP or AVIF, heavy files and images far larger than they are shown. - Page: https://seogeoaeo.ai/tools/image-seo-checker - Slug: `image-seo-checker` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Images added by JavaScript after load - Stylesheet background images - Compressing or converting files Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/image-seo-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://web.dev/articles/browser-level-image-lazy-loading"}}' ``` ### Orphan Page Finder Find pages nothing links to, pages buried too deep, and sitemap entries that fail, within one 150-page crawl. Crawl up to 150 pages from your homepage the way Googlebot follows links, read your XML sitemap, and compare the two. Find sitemap pages nothing links to, indexable pages missing from the sitemap, pages four or more clicks deep, broken internal links and sitemap URLs that redirect, fail or are noindex. - Page: https://seogeoaeo.ai/tools/orphan-page-finder - Slug: `orphan-page-finder` (MCP tool name and REST path segment) - Price: 20 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Sites larger than one 150-page crawl - Links added by JavaScript after load - Backlinks from other sites Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/orphan-page-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ## AEO tools Structured data, entity markup, and answer formatting. Content checks also support answer readiness. ### Schema Markup Checker See which JSON-LD blocks fail to parse, which required and recommended properties are missing, and which types the page is missing. Validate a page’s JSON-LD against Google’s rich result rules and see which schema.org types the page should add. Paste JSON-LD to check markup before it ships; pasted markup is checked instead of the live page. - Page: https://seogeoaeo.ai/tools/schema-checker - Slug: `schema-checker` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `jsonld` (string, optional, max 50000 characters). Raw JSON-LD to check instead of fetching url. Does not: - Microdata or RDFa - Google’s Rich Results Test itself - Writing the markup for you Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/schema-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.wikipedia.org"}}' ``` ### Schema Markup Generator Get valid JSON-LD for a documented type from the fields you supply. Nothing is fetched. Build JSON-LD from a schema type and fields, then preview it against the validator rules. - Page: https://seogeoaeo.ai/tools/schema-markup-generator - Slug: `schema-markup-generator` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `type` (string, required). - `name` (string, optional, max 500 characters). - `headline` (string, optional, max 500 characters). - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `description` (string, optional, max 2000 characters). - `image` (string, optional, max 2048 characters). - `author` (string, optional, max 500 characters). - `datePublished` (string, optional, max 40 characters). - `publisher` (string, optional, max 500 characters). - `dateModified` (string, optional, max 40 characters). - `logo` (string, optional, max 2048 characters). - `telephone` (string, optional, max 40 characters). - `price` (string, optional, max 40 characters). - `priceCurrency` (string, optional, max 8 characters). - `ratingValue` (string, optional, max 10 characters). - `ratingCount` (string, optional, max 12 characters). - `applicationCategory` (string, optional, max 100 characters). - `operatingSystem` (string, optional, max 200 characters). - `startDate` (string, optional, max 40 characters). - `endDate` (string, optional, max 40 characters). - `location` (string, optional, max 500 characters). - `streetAddress` (string, optional, max 500 characters). - `addressLocality` (string, optional, max 200 characters). - `addressRegion` (string, optional, max 200 characters). - `postalCode` (string, optional, max 40 characters). - `addressCountry` (string, optional, max 80 characters). - `thumbnailUrl` (string, optional, max 2048 characters). - `uploadDate` (string, optional, max 40 characters). - `faqs` (string, optional, max 10000 characters). One question per line, written as `Question | Answer`. - `breadcrumbs` (string, optional, max 10000 characters). One crumb per line from the root, written as `Name | URL`. - `steps` (string, optional, max 10000 characters). One step per line. - `ingredients` (string, optional, max 10000 characters). One ingredient per line. Does not: - Recommending schema types - Dedicated Organization, Product, FAQ, or breadcrumb builders - Fetching a live page - Google’s Rich Results Test Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/schema-markup-generator/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"type":"SoftwareApplication","name":"Example App","url":"https://example.com/app","applicationCategory":"BusinessApplication","operatingSystem":"Web","price":"0","priceCurrency":"USD"}}' ``` ### Organization Entity Markup Builder Get Organization JSON-LD from the details you supply. Nothing is fetched. Build Organization JSON-LD from entity details, then preview it against the validator rules. - Page: https://seogeoaeo.ai/tools/organization-entity-markup-builder - Slug: `organization-entity-markup-builder` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `name` (string, required, max 500 characters). - `legalName` (string, optional, max 500 characters). - `alternateName` (string, optional, max 500 characters). - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `logo` (string, optional, max 2048 characters). - `description` (string, optional, max 2000 characters). - `email` (string, optional, max 200 characters). - `telephone` (string, optional, max 80 characters). - `sameAs` (string, optional, max 10000 characters). Newline-separated profile URLs for the entity. - `foundingDate` (string, optional, max 40 characters). - `taxID` (string, optional, max 80 characters). - `vatID` (string, optional, max 80 characters). - `streetAddress` (string, optional, max 500 characters). - `addressLocality` (string, optional, max 200 characters). - `addressRegion` (string, optional, max 200 characters). - `postalCode` (string, optional, max 40 characters). - `addressCountry` (string, optional, max 80 characters). - `contactType` (string, optional, max 200 characters). Does not: - Picking an arbitrary schema.org type - Recommending schema types - Product, FAQ, breadcrumb, or local builders - Fetching a live page - Google’s Rich Results Test Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/organization-entity-markup-builder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"name":"Example Inc.","url":"https://example.com"}}' ``` ### FAQ Schema Builder Get FAQPage JSON-LD from the questions you supply. Nothing is fetched. Build FAQPage JSON-LD from questions and answers, with a note on Google FAQ rich-result limits. - Page: https://seogeoaeo.ai/tools/faq-schema-builder - Slug: `faq-schema-builder` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `faqs` (string, required, max 10000 characters). One question per line, written as `Question | Answer`. - `name` (string, optional, max 500 characters). - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Picking an arbitrary schema.org type - Recommending schema types - Organization, Product, breadcrumb, or local builders - Fetching a live page - Google’s Rich Results Test Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/faq-schema-builder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"faqs":"What is SEO? | Search engine optimization.\nWhat is JSON-LD? | A JSON syntax for linked data."}}' ``` ### Breadcrumb Schema Builder Get BreadcrumbList JSON-LD from a trail or a page URL path. Nothing is fetched. Build BreadcrumbList JSON-LD from a trail or a page URL path. Nothing is fetched. - Page: https://seogeoaeo.ai/tools/breadcrumb-schema-builder - Slug: `breadcrumb-schema-builder` (MCP tool name and REST path segment) - Price: 3 credits per run Inputs: - `breadcrumbs` (string, optional, max 10000 characters). One crumb per line from the root, written as `Name | URL`. - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Picking an arbitrary schema.org type - Recommending schema types - Organization, Product, FAQ, or local builders - Fetching a live page - Google’s Rich Results Test Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/breadcrumb-schema-builder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"breadcrumbs":"Home | https://example.com/\nDocs | https://example.com/docs"}}' ``` ### Content Freshness Checker Find missing or conflicting date signals and review whether dated claims need a substantive update. Inspect dates in JSON-LD, meta tags, microdata, time elements and visible labels for conflicts or impossible values. Older dates and title years are prompts for editorial review. - Page: https://seogeoaeo.ai/tools/content-freshness-checker - Slug: `content-freshness-checker` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Deciding what content to update - Rewriting content - Tracking changes over time Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/content-freshness-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://developers.google.com/search/blog/2023/08/howto-faq-changes"}}' ``` ### Author & E-E-A-T Checker Check whether a page clearly shows who wrote it and who stands behind it, in visible text and markup. Check the authorship and trust signals behind E-E-A-T: a visible byline, Article author markup with a clean name, url and sameAs, an author page that loads with a real bio and Person markup, a publisher, and About and Contact links. - Page: https://seogeoaeo.ai/tools/author-eeat-checker - Slug: `author-eeat-checker` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Judging the author's actual expertise - Rewriting bios - Checking every article on the site Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/author-eeat-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://developers.google.com/search/blog/2023/08/howto-faq-changes"}}' ``` ### Question Finder See the questions Google shows for a topic and which ones your page leaves unanswered. Collect questions from Google's autocomplete suggestions, grouped by intent, and check which ones a page already answers. - Page: https://seogeoaeo.ai/tools/question-finder - Slug: `question-finder` (MCP tool name and REST path segment) - Price: 15 credits per run Inputs: - `query` (string, required, max 120 characters). Search query or seed keyword. - `market` (string, optional, one of us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. - `url` (string, optional, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - People Also Ask and related-search blocks - Search volume or difficulty for each question - Writing the answers - Judging whether an answer is correct - Text rendered only by JavaScript Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/question-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"query":"smoke alarm chirping","market":"us"}}' ``` ## GEO tools AI access, content signals, sampled brand mentions and citations. Optional agent utilities are separate from search requirements. ### AI Citation Finder Find the pages AI answers quote, so you know what to write, what to keep current, and which sites to get mentioned on. See which pages Google's AI Overviews and ChatGPT cite for a topic, or how often they cite a website, with the sites cited most and the searches behind the answers. - Page: https://seogeoaeo.ai/tools/ai-citation-finder - Slug: `ai-citation-finder` (MCP tool name and REST path segment) - Price: 160 credits per run Inputs: - `mode` (string, optional, one of topic, site). - `query` (string, required, max 2048 characters). A topic such as standing desk when mode is topic, or a website such as hubspot.com when mode is site. - `platform` (string, optional, one of all, google, chat_gpt). - `market` (string, optional, one of all, us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Every AI answer; the provider tracks the questions people ask most, and far fewer on ChatGPT than on Google - Perplexity, Gemini or other assistants; only Google AI Overviews and ChatGPT are tracked - What each answer says; use AI Question Finder for the questions and answers - Whether an AI answer sends visitors to the site Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-citation-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"mode":"topic","query":"standing desk","platform":"all","market":"us"}}' ``` ### AI Question Finder Find the questions AI answers respond to, so you know what to write and which pages the answers lean on. List the questions people ask Google's AI Overviews or ChatGPT about a topic, or that cite a website, with the searches behind each, the start of the answer and the sources it lists. - Page: https://seogeoaeo.ai/tools/ai-question-finder - Slug: `ai-question-finder` (MCP tool name and REST path segment) - Price: 160 credits per run Inputs: - `mode` (string, optional, one of topic, site). - `query` (string, required, max 2048 characters). A topic such as standing desk when mode is topic, or a website such as hubspot.com when mode is site. - `platform` (string, optional, one of google, chat_gpt). - `market` (string, optional, one of all, us, gb, ca, au, ie, in, sg, nz, za, de, fr, es, it, nl, se, pl, br, mx, jp, ae). Market code for localized results. Does not: - Every question; the provider tracks the ones people ask most, and far fewer on ChatGPT than on Google - Both platforms in one run; pick one, then run again for the other - The full text of each answer; only the start is shown - Exact matches; a short phrase or a single word such as a brand name can return questions that only loosely relate, so use a full phrase - Whether an AI answer sends visitors to the site Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-question-finder/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"mode":"topic","query":"standing desk","platform":"google","market":"us"}}' ``` ### AI Agent Readiness Checker Check whether AI browsers and agents can read and use a site, with each page attribute, llms.txt line or discovery file to fix. Check whether AI agents and browsers can read and use a site: llms.txt syntax and links, Lighthouse’s Agentic Browsing checks, WebMCP form coverage, Markdown responses for Accept: text/markdown, and MCP or A2A agent cards. Paste an llms.txt draft to validate it before it ships. - Page: https://seogeoaeo.ai/tools/ai-agent-readiness - Slug: `ai-agent-readiness` (MCP tool name and REST path segment) - Price: 10 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `llmsTxt` (string, optional, max 50000 characters). Does not: - Layout shift (use the Core Web Vitals Snapshot) - A full accessibility audit - Testing JavaScript-registered tools end to end Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-agent-readiness/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://developer.chrome.com"}}' ``` ### llms.txt Generator Get a draft llms.txt built only from pages this run could fetch, ready to edit and publish. Draft an llms.txt from a fetched homepage using only verified public URLs. - Page: https://seogeoaeo.ai/tools/llms-txt-generator - Slug: `llms-txt-generator` (MCP tool name and REST path segment) - Price: 15 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `site` (string, optional, max 200 characters). Site name to use in the generated file. Defaults to the page title. Does not: - Validating a published llms.txt - Per-crawler robots access maps - Inventing docs URLs that were not fetched - JavaScript-rendered DOM - Ranking or mention claims Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/llms-txt-generator/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Citability Analyzer Find passages that may need clearer answers or context, with suggestions to review before editing. Review sections with English-language heuristics for clear answers, context and supporting evidence. The score is an editorial aid, not an engine ranking or citation probability. - Page: https://seogeoaeo.ai/tools/citability-analyzer - Slug: `citability-analyzer` (MCP tool name and REST path segment) - Price: 5 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Rewriting the content - Predicting whether a specific engine will cite the page - Text rendered only by JavaScript Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/citability-analyzer/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://developers.google.com/search/docs/fundamentals/seo-starter-guide"}}' ``` ### AI Bot Log Analyzer See what GPTBot, ClaudeBot, PerplexityBot and ChatGPT-User actually fetch from your site, and catch impostors. Paste your server or CDN access log to see which AI crawlers and assistants visit, which pages they read, which requests your server refused or broke, and which visits used a crawler's name from an IP its operator does not publish. - Page: https://seogeoaeo.ai/tools/ai-bot-log-analyzer - Slug: `ai-bot-log-analyzer` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `log` (string, required, max 750000 characters). Raw web server access log lines (combined, common, W3C or JSON lines), at most 750,000 characters. Does not: - Connecting to your server or CDN - Reverse DNS checks for crawlers with no published IP list - Human visits referred by AI assistants Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-bot-log-analyzer/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"log":"20.171.207.2 - - [28/Sep/2026:10:15:32 +0000] \"GET /pricing HTTP/1.1\" 200 5120 \"-\" \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)\""}}' ``` ### AI Crawler View Find the content AI crawlers miss because it loads with JavaScript. See a page the way GPTBot, ClaudeBot and PerplexityBot see it. The raw HTML is compared with the page rendered in a headless browser, to find content, headings, prices, structured data, links and metadata that only appear after JavaScript runs. - Page: https://seogeoaeo.ai/tools/ai-crawler-view - Slug: `ai-crawler-view` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Checking whether robots.txt allows AI crawlers (use the Robots.txt & AI Crawler Checker) - Proving what a specific bot fetched (use the AI Bot Log Analyzer) - Visual layout or screenshot comparison Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-crawler-view/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://example.com"}}' ``` ### Brand Entity Checker Check whether your brand name, logo, Organization markup and profiles consistently tie your brand to your site. Check the signals search and AI engines use to recognize your brand as one entity: the same name across Organization and WebSite markup, og:site_name, the manifest and llms.txt; Organization markup with url, a logo that loads and sameAs profiles that exist; and a Wikidata item that lists your site. - Page: https://seogeoaeo.ai/tools/brand-entity-checker - Slug: `brand-entity-checker` (MCP tool name and REST path segment) - Price: 8 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `brand` (string, optional, max 120 characters). Brand name as people write it, such as Linear. Read from the home page when omitted. Does not: - Creating Wikidata or Wikipedia entries - Checking what AI answers say about the brand (use Brand Narrative Check) - Monitoring brand mentions on other sites Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/brand-entity-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://stripe.com"}}' ``` ### Fan-out Coverage Checker Find the related searches AI engines run behind a query that your page does not answer yet. See the searches AI engines run behind a query and which of them your page answers. ChatGPT is asked the query with web search on and reports its searches; a model adds likely related, comparative, recent and implicit searches; and each search is judged against your page's sections by meaning. - Page: https://seogeoaeo.ai/tools/fanout-coverage-checker - Slug: `fanout-coverage-checker` (MCP tool name and REST path segment) - Price: 95 credits per run Inputs: - `query` (string, required, max 200 characters). Search query or seed keyword. - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. Does not: - Writing the missing sections - Tracking rankings or citations over time - Text rendered only by JavaScript Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/fanout-coverage-checker/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"query":"is sourdough bread healthier than white bread","url":"https://www.healthline.com/nutrition/sourdough-bread"}}' ``` ### AI Answer Visibility Sample ChatGPT, Perplexity and Gemini answers to one question and see whether they mention or cite your brand, and who they name instead. Ask ChatGPT, Perplexity and Gemini the question your customers ask, with web search on, and see whether each answer names your brand, where it ranks among the brands named, whether it cites your site, and which brands and sites it recommends instead. - Page: https://seogeoaeo.ai/tools/ai-answer-visibility - Slug: `ai-answer-visibility` (MCP tool name and REST path segment) - Price: 120 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `prompt` (string, required, max 300 characters). The question customers ask an AI assistant, such as What is the best CRM for a small team? - `brand` (string, optional, max 120 characters). Brand name as people write it, such as Linear. Read from the home page when omitted. Does not: - Tracking answers over time - Google AI Overviews and AI Mode - Checking what the answers say about the brand (use Brand Narrative Check) Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/ai-answer-visibility/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://www.hubspot.com","prompt":"What is the best CRM for a 5-person startup?"}}' ``` ### Brand Narrative Check See what ChatGPT, Perplexity and Gemini tell people about your brand, with quoted evidence for potential discrepancies. Ask ChatGPT, Perplexity and Gemini what your brand is, with web search on. See recognition, descriptions, tone, strengths, weaknesses, alternatives, cited sources, and potential discrepancies to review against your home page. - Page: https://seogeoaeo.ai/tools/brand-narrative-check - Slug: `brand-narrative-check` (MCP tool name and REST path segment) - Price: 150 credits per run Inputs: - `url` (string, required, max 2048 characters). Public http(s) URL. Private, local, and non-web addresses are rejected. - `brand` (string, optional, max 120 characters). Brand name as people write it, such as Linear. Read from the home page when omitted. Does not: - Tracking answers over time - Checking whether answers recommend the brand for a question (use AI Answer Visibility) - Checking facts on pages other than the home page Example: ```bash curl -X POST https://seogeoaeo.ai/api/v1/tools/brand-narrative-check/runs \ -H "Authorization: Bearer $SEOGEOAEO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":{"url":"https://linear.app"}}' ```