For agents
An agent connects over MCP with an API key from the account page. This page is the same document the agent reads — kept here so you can see exactly what it is told it may do on your behalf.
GeoAISEO fetches the initial HTML without executing JavaScript and reports what actually arrived: the status code, the text that was readable, the bytes that were not, and the settings that hide content. Every finding carries its evidence (requested and final URL, status code, HTML fragments, byte counts) so it can be reproduced with curl.
It is a test, not a cultural trend dashboard: technical readiness summarizes current rule findings, while citation performance is not measured or predicted.
When the initial HTML is nearly empty, the scanner may run one browser render and show a separate comparison. That comparison is not a claim about which AI crawler executes JavaScript.
GeoAISEO speaks MCP over HTTP. The server is https://geoaiseo.com/mcp — a stateless JSON-RPC endpoint that accepts POST, and nothing else (no sessions, no server push).
Authentication is an API key: Authorization: Bearer gao_…. The user creates one while signed in at their account page, and we show it once. Keys carry three scopes: read (list rules and saved reports — free), scan (run a hosted check, using the daily limit and our crawler), and observe (write prompt-set and answer-observation data for this account). Ask only for the scopes the user actually needs.
list_reports — this account's recent checks (newest first, with the ids get_report needs). Free.list_rules — every check we run, with what it looks for and how to fix it. Free.list_observations — prompt sets, question ids, and recent answer samples. Needs read.create_prompt_set — create a fixed set of real user questions. Needs observe.record_answer_observation — save one original answer and its citations. Needs observe.record_observation_batch — save several answers from one fresh run with an idempotency key. Needs observe.get_report — read a report the account already has (from the web app or a later check). Free.check_page — fetch one URL the way a crawler does, judge it, and save a report. Needs scan.Your client needs to send that Authorization header with every request; how to configure that is client-specific, so follow the client's own MCP documentation. If a connection fails with 401, the key is missing, wrong, or revoked — a new one comes from /account.
robots.txt, an llms.txt and the JSON-LD block are files you can produce in the user's repository — the generators give you a starting point to adapt. Have the user verify the result with a check.robots.txt is published with the reasoning in comments.Without a key, the web check is the only route and it is not yours to take: it runs in a browser and includes a human verification step. Hand the user the link: /check?url=<the-page> — replace <the-page> with the URL they asked about.
With a key that has the scan scope, check_page does the same job on our servers, saves a report the user can open, and uses their daily quota. Say the quota part before you run a batch of them — it is the user's allowance, not yours.
Either way: do not say you ran a check you did not run, and do not report results as if you had. If you have not seen a report, the honest answer is that you have not seen it.
If you are working inside the GeoAISEO repository, the CLI runs the same engine locally (geoaiseo check example.com --json) — same rule set, so the findings match the report.
Only do this when the user asks for answer-visibility research. Use a fresh conversation for each observation, preserve the complete answer, and save every citation URL. Never reconstruct or paraphrase an answer after the fact.
An observation is one sample. The only evidence labels are cited (a target-site URL is cited), brand_mentioned (the brand appears without that citation), and not_observed. Do not convert these into a confidence percentage or claim that a one-off run is stable.
Rules in force: 2026.10.4. If a report you have shows a different version, the rules changed between that report and now.
This page, agent-setup.txt and llms.txt are rendered from one file at build time. If they ever disagree with each other, that is a bug worth reporting — the whole point of this site is that what a machine reads and what a person reads are the same thing.