Free AEO visibility report MCP — run AI search audits for any domain.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Poll a previously submitted AEO report job once. status is queued, preparing, needs_review or running (keep polling) or complete, partial or failed (terminal); state carries the phase and reason. When complete or partial, returns the structured report (per-engine breakdown with provenance, recommendations, coverage, methodology, the measured questions, competitor evidence, named share of voice), the shareable report_url, and a markdown_summary to read to the user.
job_id from run_aeo_report
Poll a previously submitted AEO report job once. status is queued, preparing, needs_review or running (keep polling) or complete, partial or failed (terminal); state carries the phase and reason. When complete or partial, returns the structured report (per-engine breakdown with provenance, recommendations, coverage, methodology, the measured questions, competitor evidence, named share of voice), the shareable report_url, and a markdown_summary to read to the user.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | job_id from run_aeo_report |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "job_id from run_aeo_report"
}
},
"additionalProperties": false
}Run the free AI-visibility report for a website (ChatGPT, Perplexity, Gemini, Claude coverage, competitor gaps, prioritized fixes). Requires the user's real email — the finished report is emailed there and a shareable report URL is returned. Takes up to ~10 minutes; set wait_seconds up to 50 to wait inline, or poll later with get_aeo_report_status. Never fill the company field.
| Argument | Type | Description |
|---|---|---|
| email* | string | The user's real work email (MX-validated; disposable domains rejected). The report is emailed here. |
| fresh | boolean | Force a fresh run instead of a cached report. |
| domain* | string | Registrable domain or full URL to audit, e.g. example.com |
| market | string | Optional market the report is measured in, as a city and region, e.g. 'Austin, TX'. Same as context.location. |
| context | any | Optional context that scopes the report. A string is the vertical hint. A value that cannot be used is rejected with invalid_context and a reason, never silently dropped: 422 on the public path, 400 with an agency key (including a blank string or a hint over 256 characters). |
| competitor | string | Optional pinned competitor domain to compare. |
| competitors | array | Optional competitor domains to compare (max 5). The public report pins exactly one; send more only with an agency key. |
| wait_seconds | integer | Seconds to wait inline for completion (0-50). Default 0: returns the job to poll. |
| report_profile | string | Report profile / engine cohort. |
| customQuestions | any | Optional 5–20 exact questions, in order, replacing generated questions. Text and order are preserved verbatim; supplied questions are already approved. Omit, null, a blank string or [] to generate questions as before. |
| idempotency_key | string | 16-128 printable chars. Required for a trusted (agency-key) create so retries map to one job. May be sent as the Idempotency-Key HTTP header instead. |
{
"type": "object",
"required": [
"domain",
"email"
],
"properties": {
"email": {
"type": "string",
"description": "The user's real work email (MX-validated; disposable domains rejected). The report is emailed here."
},
"fresh": {
"type": "boolean",
"description": "Force a fresh run instead of a cached report."
},
"domain": {
"type": "string",
"description": "Registrable domain or full URL to audit, e.g. example.com"
},
"market": {
"type": "string",
"description": "Optional market the report is measured in, as a city and region, e.g. 'Austin, TX'. Same as context.location."
},
"context": {
"anyOf": [
{
"type": "string",
"description": "Short free-text vertical hint, e.g. 'medical aesthetics practice'. Same as {vertical_hint: '<text>'} on both the public and the agency-key path."
},
{
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City and region, e.g. 'Austin, TX'."
},
"focus_terms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Named services/products to rank (max 8)."
},
"vertical_hint": {
"type": "string",
"description": "Short vertical hint."
}
},
"additionalProperties": false
}
],
"description": "Optional context that scopes the report. A string is the vertical hint. A value that cannot be used is rejected with invalid_context and a reason, never silently dropped: 422 on the public path, 400 with an agency key (including a blank string or a hint over 256 characters)."
},
"competitor": {
"type": "string",
"description": "Optional pinned competitor domain to compare."
},
"competitors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional competitor domains to compare (max 5). The public report pins exactly one; send more only with an agency key."
},
"wait_seconds": {
"type": "integer",
"description": "Seconds to wait inline for completion (0-50). Default 0: returns the job to poll."
},
"report_profile": {
"enum": [
"public",
"aio"
],
"type": "string",
"description": "Report profile / engine cohort."
},
"customQuestions": {
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"pattern": "^\\s*$"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 0
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "\\S"
},
"maxItems": 20,
"minItems": 5
}
],
"description": "Optional 5–20 exact questions, in order, replacing generated questions. Text and order are preserved verbatim; supplied questions are already approved. Omit, null, a blank string or [] to generate questions as before."
},
"idempotency_key": {
"type": "string",
"description": "16-128 printable chars. Required for a trusted (agency-key) create so retries map to one job. May be sent as the Idempotency-Key HTTP header instead."
}
},
"additionalProperties": false
}