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