aio-geo

AIO.GEO: audit, dry-run fixes, rescore, doctor. Remote + stdio. Not LLM rankings.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
80%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'check_health' description lacks action verbin check_health

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,681Tokens (tool definitions)
~2.7 KBTypical response size
Moderate attention impact (1.31% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "aio-geo": {
      "command": "npx",
      "args": [
        "@aio-geo/mcp-server"
      ]
    }
  }
}

Runnable packages

npm@aio-geo/mcp-server0.3.7stdio

Remote endpoints

https://www.aiogeoprotocol.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢audit_url(url, domain)

Run a structural AI Search Readiness audit for a public URL or domain. Returns pillar scores, recommendations, a brief link, and a CLI command. Not an LLM ranking. No API key required.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public domain or https URL to inspect (for example example.com or https://example.com). Localhost and private IPs are blocked."
    },
    "domain": {
      "type": "string",
      "description": "Alias of url. Use either url or domain, not both."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "True when the audit completed"
    },
    "domain": {
      "type": "string",
      "description": "Normalized hostname"
    },
    "overallScore": {
      "type": "number",
      "description": "Structural readiness score 0-100. Not an LLM ranking."
    },
    "methodology": {
      "type": "string",
      "description": "Scoring methodology id"
    },
    "pillars": {
      "type": "array",
      "description": "Per-pillar structural scores",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "summary": {
            "type": "string"
          }
        }
      }
    },
    "recommendations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ranked structural gaps to fix"
    },
    "confidence": {
      "type": "number",
      "description": "0-1 crawl confidence"
    },
    "isSynthetic": {
      "type": "boolean",
      "description": "True only if the crawl failed closed"
    },
    "persisted": {
      "type": "boolean",
      "description": "True if the scan was saved"
    },
    "briefUrl": {
      "type": "string",
      "description": "Shareable public brief URL"
    },
    "cli": {
      "type": "string",
      "description": "Matching CLI command"
    },
    "refusal": {
      "type": "string",
      "description": "Ranking-refusal copy"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "domain",
    "overallScore"
  ]
}
🟢list_fixes(url, domain)

Return a dry-run structural fix pack (robots, schema, anchors) for a public domain. No files are written. No API key required.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public domain or https URL to inspect (for example example.com or https://example.com). Localhost and private IPs are blocked."
    },
    "domain": {
      "type": "string",
      "description": "Alias of url. Use either url or domain, not both."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "dryRun": {
      "type": "boolean",
      "description": "Public endpoint always true — no files are written"
    },
    "domain": {
      "type": "string"
    },
    "files": {
      "type": "array",
      "description": "Proposed files in the dry-run pack",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "action": {
            "type": "string"
          }
        }
      }
    },
    "error": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "dryRun"
  ]
}
🟢apply_fix(url, domain, dryRun)

Generate a structural fix pack for a public domain. Public calls stay dry-run (no writes). Set dryRun false only with an operator key.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public domain or https URL to inspect (for example example.com or https://example.com). Localhost and private IPs are blocked."
    },
    "domain": {
      "type": "string",
      "description": "Alias of url. Use either url or domain, not both."
    },
    "dryRun": {
      "type": "boolean",
      "default": true,
      "description": "When true (default) only preview the pack. Writes stay off on the public endpoint."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "dryRun": {
      "type": "boolean",
      "description": "Public endpoint always true — no files are written"
    },
    "domain": {
      "type": "string"
    },
    "files": {
      "type": "array",
      "description": "Proposed files in the dry-run pack",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "action": {
            "type": "string"
          }
        }
      }
    },
    "error": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "dryRun"
  ]
}
🟢rescore_url(url, domain)

Run a fresh public structural audit (rescore) for a URL or domain. Same engine as audit_url. Not an LLM ranking. No API key required.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public domain or https URL to inspect (for example example.com or https://example.com). Localhost and private IPs are blocked."
    },
    "domain": {
      "type": "string",
      "description": "Alias of url. Use either url or domain, not both."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "True when the audit completed"
    },
    "domain": {
      "type": "string",
      "description": "Normalized hostname"
    },
    "overallScore": {
      "type": "number",
      "description": "Structural readiness score 0-100. Not an LLM ranking."
    },
    "methodology": {
      "type": "string",
      "description": "Scoring methodology id"
    },
    "pillars": {
      "type": "array",
      "description": "Per-pillar structural scores",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "summary": {
            "type": "string"
          }
        }
      }
    },
    "recommendations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ranked structural gaps to fix"
    },
    "confidence": {
      "type": "number",
      "description": "0-1 crawl confidence"
    },
    "isSynthetic": {
      "type": "boolean",
      "description": "True only if the crawl failed closed"
    },
    "persisted": {
      "type": "boolean",
      "description": "True if the scan was saved"
    },
    "briefUrl": {
      "type": "string",
      "description": "Shareable public brief URL"
    },
    "cli": {
      "type": "string",
      "description": "Matching CLI command"
    },
    "refusal": {
      "type": "string",
      "description": "Ranking-refusal copy"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "domain",
    "overallScore"
  ]
}
🟢check_health

Return environment and API health. Never returns secrets. No API key required.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {
    "version": {
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "description": "set or unset — never the raw secret"
    },
    "health": {
      "type": "object",
      "description": "Ops health without secrets"
    },
    "refusal": {
      "type": "string"
    }
  },
  "required": [
    "version",
    "api_key"
  ]
}
🟢get_brief(url, domain)

Return an executive structural brief for a domain: score, top gaps, and a shareable brief path. Not an LLM ranking. No API key required.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public domain or https URL to inspect (for example example.com or https://example.com). Localhost and private IPs are blocked."
    },
    "domain": {
      "type": "string",
      "description": "Alias of url. Use either url or domain, not both."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "domain": {
      "type": "string"
    },
    "overallScore": {
      "type": "number"
    },
    "pillars": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "recommendations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sharePath": {
      "type": "string",
      "description": "Relative brief path, for example /brief?domain=example.com"
    },
    "refusal": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "domain",
    "overallScore",
    "sharePath"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools