KI-Bereitschaft abrufen
GET
/sites/{siteId}/geo- Berechtigung
ai:read- MCP-Tool
geo_access
AI crawler access, llms.txt and entity signals from the last audit.
Die Beschreibungen kommen aus dem OpenAPI-Dokument und sind auf Englisch.
Parameter
| Name | Ort | Details |
|---|---|---|
siteIdPflicht | Pfad | stringWebsite id, from GET /sites. |
Antwort
200 · application/json
| Feld | Details |
|---|---|
checkedAt | string or null · required; When it was last checked |
robotsTxt | ok | missing | error | · required; What /robots.txt answered |
crawlers | list of object · required |
crawlers[].bot | string · required; Crawler user agent |
crawlers[].owner | string · required; Company behind it |
crawlers[].purpose | string · required; What it is used for |
crawlers[].kind | training | search | both · required; What the crawler feeds: model training, AI search answers, or both |
crawlers[].allowed | true or false or null · required; robots.txt lets it read the home page; null when robots.txt could not be read |
crawlers[].rule | group | default | none · required; group: a robots.txt rule names this crawler; default: the * rules apply; none: no rule applies |
llmsTxt | object or null · required |
llmsTxt.present | true or false · required; A text file is at /llms.txt |
llmsTxt.url | string · required; Address read |
llmsTxt.status | integer or null · required; HTTP status |
llmsTxt.bytes | integer · required; Size in bytes |
llmsTxt.checkedAt | string or null · required; When it was read |
entity | object or null · required; Who the website is, as AI assistants can read it |
entity.organizationSchema | true or false · required; An Organization schema is on the website |
entity.organizationName | string or null · required; Name in that schema |
entity.sameAs | list of string · required; Profiles the schema links (sameAs) |
entity.aboutPage | string or null · required; Path of the About page |
entity.contactPage | string or null · required; Path of the Contact page |
entity.napAgrees | true or false or null · required; Name, address and phone in the schema match the contact page; null: nothing to compare |
note | string · required; How to read the fields |
link | address (URL) · required; The AI readiness screen in the app |
Fehler
| Status | Bedeutung |
|---|---|
401 | Missing, unknown or revoked key. Codes: missing_key, invalid_key. |
403 | The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden. |
404 | Not found. Codes: not_found. |
429 | Too many requests this hour for this key. Codes: rate_limited. |
503 | Switched off for now. Codes: feature_off. |
Beispielanfrage
curl \
-H "Authorization: Bearer mr_ws_…" \
"https://app.monoranks.com/api/v1/sites/SITE_ID/geo"const res = await fetch("https://app.monoranks.com/api/v1/sites/SITE_ID/geo", {
headers: { Authorization: "Bearer mr_ws_…" },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();import requests
res = requests.get(
"https://app.monoranks.com/api/v1/sites/SITE_ID/geo",
headers={"Authorization": "Bearer mr_ws_…"},
)
res.raise_for_status()
data = res.json()<?php
$ch = curl_init("https://app.monoranks.com/api/v1/sites/SITE_ID/geo");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer mr_ws_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);import axios from "axios";
const { data } = await axios.get("https://app.monoranks.com/api/v1/sites/SITE_ID/geo", { headers: { Authorization: "Bearer mr_ws_…" } });Beispielantwort
{
"checkedAt": "2026-10-04T02:18:44.000Z",
"robotsTxt": "ok",
"crawlers": [
{
"bot": "GPTBot",
"owner": "OpenAI",
"purpose": "Training data for OpenAI models",
"kind": "training",
"allowed": false,
"rule": "group"
},
{
"bot": "OAI-SearchBot",
"owner": "OpenAI",
"purpose": "ChatGPT search results and citations",
"kind": "search",
"allowed": true,
"rule": "default"
},
{
"bot": "ChatGPT-User",
"owner": "OpenAI",
"purpose": "Pages a ChatGPT user asks about, fetched live",
"kind": "search",
"allowed": true,
"rule": "default"
},
{
"bot": "ClaudeBot",
"owner": "Anthropic",
"purpose": "Training data for Claude models",
"kind": "training",
"allowed": true,
"rule": "default"
},
{
"bot": "Claude-SearchBot",
"owner": "Anthropic",
"purpose": "Improves the quality of Claude's search results",
"kind": "search",
"allowed": true,
"rule": "default"
},
{
"bot": "Claude-User",
"owner": "Anthropic",
"purpose": "Pages a Claude user asks about, fetched live",
"kind": "search",
"allowed": true,
"rule": "default"
},
{
"bot": "PerplexityBot",
"owner": "Perplexity",
"purpose": "Perplexity search index and citations",
"kind": "search",
"allowed": true,
"rule": "default"
},
{
"bot": "Google-Extended",
"owner": "Google",
"purpose": "Gemini training and grounding (not Google Search)",
"kind": "training",
"allowed": true,
"rule": "default"
},
{
"bot": "Applebot-Extended",
"owner": "Apple",
"purpose": "Apple Intelligence training",
"kind": "training",
"allowed": true,
"rule": "default"
},
{
"bot": "CCBot",
"owner": "Common Crawl",
"purpose": "Open crawl used to train many models",
"kind": "training",
"allowed": false,
"rule": "group"
},
{
"bot": "Bytespider",
"owner": "ByteDance",
"purpose": "ByteDance models",
"kind": "training",
"allowed": false,
"rule": "group"
},
{
"bot": "meta-externalagent",
"owner": "Meta",
"purpose": "Meta AI training and product indexing",
"kind": "both",
"allowed": true,
"rule": "default"
},
{
"bot": "Amazonbot",
"owner": "Amazon",
"purpose": "Improves Amazon products and may train Amazon AI models",
"kind": "both",
"allowed": true,
"rule": "default"
}
],
"llmsTxt": {
"present": false,
"url": "https://acmebikes.com/llms.txt",
"status": 404,
"bytes": 0,
"checkedAt": "2026-10-04T02:18:44.000Z"
},
"entity": {
"organizationSchema": true,
"organizationName": "Acme Bikes",
"sameAs": [
"https://www.instagram.com/acmebikes",
"https://www.youtube.com/@acmebikes"
],
"aboutPage": "/about/",
"contactPage": "/contact/",
"napAgrees": true
},
"note": "From the last audit, or the last check after MonoRanks wrote crawler rules or llms.txt through WordPress.",
"link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/geo"
}{
"error": {
"code": "missing_key",
"message": "Send the key as Authorization: Bearer mr_site_…"
}
}{
"error": {
"code": "missing_scope",
"message": "This key does not have the scope this call needs."
}
}{
"error": {
"code": "not_found",
"message": "Website not found."
}
}{
"error": {
"code": "rate_limited",
"message": "More than 1200 requests this hour for this key."
}
}{
"error": {
"code": "feature_off",
"message": "AI readiness is switched off for now."
}
}Der MCP-Server macht dasselbe mit dem Tool geo_access.