Check whether ChatGPT, Gemini and Perplexity recommend a business, and get fixes for its website.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional geoa connector key (platform.geoa.app, Integrations). Without it, the free tools work.
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.
Your geoa plan and usage (articles used/remaining this month). Requires sign-in to a geoa account.
This tool takes no arguments.
Your geoa plan and usage (articles used/remaining this month). Requires sign-in to a geoa account.
No arguments.
{
"type": "object",
"properties": {}
}Your brand's AI visibility from geoa's stored scans: is your company mentioned when people ask ChatGPT, Claude, Gemini or Perplexity? Returns mention rate per engine, the top visibility gaps, and which competitors are cited instead. Reads stored scan results only (no live engine calls). Requires sign-in to a geoa account.
No arguments.
{
"type": "object",
"properties": {}
}Create a source-verified article draft from an AI-visibility gap (e.g. a question from geoa_ai_visibility). The draft is generated with the customer's Brand Brain, source-verified by the Gate and scored by the Coach — and lands as a DRAFT in Content Studio; nothing is published automatically. Requires a sign-in to a geoa account; counts against the plan's article quota.
| Argument | Type | Description |
|---|---|---|
| language | string | da (default), no, sv or en |
| question* | string | The question/topic the draft should answer |
| cited_instead | array | Competitor domains cited instead (from geoa_ai_visibility) |
{
"type": "object",
"required": [
"question"
],
"properties": {
"language": {
"type": "string",
"description": "da (default), no, sv or en"
},
"question": {
"type": "string",
"description": "The question/topic the draft should answer"
},
"cited_instead": {
"type": "array",
"items": {
"type": "string"
},
"description": "Competitor domains cited instead (from geoa_ai_visibility)"
}
}
}Your current geoa fix queue: the 5 highest-priority GEO fixes served right now (title, effort, impact, delivery channel) plus how many wait in the backlog and how many are verified done. Every fix is closed by MEASUREMENT, never by claim. Read-only — act on fixes in the geoa dashboard. Requires sign-in to a geoa account.
No arguments.
{
"type": "object",
"properties": {}
}GEO score for a domain: how ready the site is to be read, understood and cited by AI search engines, measured across 15 technical dimensions. Returns the total score, a grade, and the 3 weakest dimensions (full 15-dimension report requires a geoa account). Results are cached for 6 hours per domain.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The domain, e.g. 'example.com' |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "The domain, e.g. 'example.com'"
}
}
}The approved geoa fixes that are NOT yet written into this site's code, for sites built or updated with Claude Code. Each item carries the path (url_pattern), the new value to write, and what geoa measured there before, so you can find the right spot in the repo. A human already approved every item in geoa before it appears here. Read-only. Requires sign-in to a geoa account.
No arguments.
{
"type": "object",
"properties": {}
}Enrich a company domain with verified registry data via Nordic Data (CVR/Brønnøysund/Bolagsverket etc.): registered name, company number, industry code, legal form, status. Counts against the plan's monthly lookup quota. Requires sign-in to a geoa account. Company-level data only — never persons.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Company domain |
| country | string | dk (default), no, se, fi … |
| company_name | string | Company name if you know it (improves matching) |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Company domain"
},
"country": {
"type": "string",
"description": "dk (default), no, se, fi …"
},
"company_name": {
"type": "string",
"description": "Company name if you know it (improves matching)"
}
}
}Find B2B prospect companies for a workspace via geoa Radar: discovery by industry+city (or your own seed domains), registry-qualified with Nordic Data (official business registries). Returns a ranked candidate list and a search_id for scoring. Counts against the plan's monthly prospect-search quota. Requires sign-in to a geoa account. Research only — geoa never contacts anyone on your behalf.
| Argument | Type | Description |
|---|---|---|
| city | string | City (optional) |
| country | string | dk (default), no, se or fi |
| industry | string | Industry, e.g. 'vvs' or 'revisor' |
| seed_domains | array | Your own candidate domains instead of discovery |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City (optional)"
},
"country": {
"type": "string",
"description": "dk (default), no, se or fi"
},
"industry": {
"type": "string",
"description": "Industry, e.g. 'vvs' or 'revisor'"
},
"seed_domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Your own candidate domains instead of discovery"
}
}
}GEO-score the prospects in a Radar search (search_id from geoa_radar_find_prospects): healthy company + weak AI visibility = highest sales priority. Scoring runs in the background — call again with the same search_id to fetch results. Requires sign-in to a geoa account.
| Argument | Type | Description |
|---|---|---|
| search_id* | string | Search id from geoa_radar_find_prospects |
{
"type": "object",
"required": [
"search_id"
],
"properties": {
"search_id": {
"type": "string",
"description": "Search id from geoa_radar_find_prospects"
}
}
}Content Studio articles that are approved and ready to go into the site: title, body (markdown and HTML), meta description, FAQ, JSON-LD and the EU AI Act disclosure, for sites built or updated with Claude Code. Read-only. Requires sign-in to a geoa account.
No arguments.
{
"type": "object",
"properties": {}
}Report that a ready article is now published at a live URL. geoa starts measuring the article's effect on that URL and cross-links the other articles in its cluster to it. Without this, the article stays unpublished in geoa and keeps coming back as ready. Writes to the customer's geoa account. Requires sign-in to a geoa account.
| Argument | Type | Description |
|---|---|---|
| url* | string | The live URL the article is published at (https://…) |
| article_id* | string | The article id from geoa_ready_articles |
{
"type": "object",
"required": [
"article_id",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The live URL the article is published at (https://…)"
},
"article_id": {
"type": "string",
"description": "The article id from geoa_ready_articles"
}
}
}Report that you have written the given approved fixes into the site and DEPLOYED them. geoa then fetches the public page as an ordinary visitor and confirms the change is really there — a fix is closed by measurement, never by claim, so a report made before the change is live stays unconfirmed. Writes to the customer's geoa account. Requires sign-in to a geoa account.
| Argument | Type | Description |
|---|---|---|
| commit | string | Optional commit SHA or reference the change landed in |
| fix_ids* | array | The fix_ids you wrote in and deployed (from geoa_pending_fixes) |
| rolled_back | object | Optional {fix_id: reason} for changes you reverted instead of keeping |
| deployed_url | string | Optional URL where the change is now live |
| tool_version | string | Optional client/tool identifier for the report |
{
"type": "object",
"required": [
"fix_ids"
],
"properties": {
"commit": {
"type": "string",
"description": "Optional commit SHA or reference the change landed in"
},
"fix_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The fix_ids you wrote in and deployed (from geoa_pending_fixes)"
},
"rolled_back": {
"type": "object",
"description": "Optional {fix_id: reason} for changes you reverted instead of keeping"
},
"deployed_url": {
"type": "string",
"description": "Optional URL where the change is now live"
},
"tool_version": {
"type": "string",
"description": "Optional client/tool identifier for the report"
}
}
}Verify a numeric claim against its cited source (geoa's Gate). Fetches the source page and checks mechanically whether the number appears there and whether the source is circular; with a geoa account it also checks SEMANTICALLY whether the source actually supports the claim. Returns a verdict: supported | unsupported | self_referential | unverifiable, plus the matched evidence.
| Argument | Type | Description |
|---|---|---|
| claim* | string | The claim containing the number, e.g. '68% of searches end without a click' |
| source_url | string | URL of the source the claim cites |
{
"type": "object",
"required": [
"claim"
],
"properties": {
"claim": {
"type": "string",
"description": "The claim containing the number, e.g. '68% of searches end without a click'"
},
"source_url": {
"type": "string",
"description": "URL of the source the claim cites"
}
}
}