<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[AURA GEO]]></title><description><![CDATA[AURA GEO]]></description><link>https://aurageo.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ad7a220fa40d1f761f2f064/b534ca6e-18fb-40e2-9d59-a744c2ca9fe6.png</url><title>AURA GEO</title><link>https://aurageo.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 29 Oct 2026 06:32:23 GMT</lastBuildDate><atom:link href="https://aurageo.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Done Only When the Server Says So: The GEO Task Queue in AURA GEO]]></title><description><![CDATA[Phase 0-6 templates with fixed criteria, a dependency-aware, phase-gated queue, server-side verification that alone can mark a task done, and merges that…]]></description><link>https://aurageo.hashnode.dev/done-only-when-the-server-says-so-the-geo-task-queue-in-aura-geo</link><guid isPermaLink="true">https://aurageo.hashnode.dev/done-only-when-the-server-says-so-the-geo-task-queue-in-aura-geo</guid><category><![CDATA[mcp]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[geo]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Sun, 25 Oct 2026 17:19:11 GMT</pubDate><content:encoded><![CDATA[<p>Most GEO plans fail quietly. Someone writes a checklist, an agent or a contractor works through it, and every item gets ticked. A month later the robots.txt still blocks a search crawler, the pricing page still has no prices in HTML, and nobody can say which "done" items were actually done.</p>
<p><a href="https://aurageo.io/en/">AURA GEO</a> handles this with one rule: a task is done only when the server's own check says so. The agent can do the work and report it, but it can't mark the task complete. This post walks through how the task queue works for an agent connected over MCP: where tasks come from, how the next one is chosen, how completion is verified, and how duplicates are cleaned up without losing history.</p>
<p>Everything below comes from the public MCP tool definitions, which are listed with their schemas in the <a href="https://aurageo.io/en/docs/mcp">MCP guide</a>. If you haven't connected an agent yet, the <a href="https://aurageo.hashnode.dev/how-to-connect-an-ai-agent-claude-code-codex-grok-to-geo-via-mcp-a-step-by-step-guide">step-by-step connection guide</a> covers that.</p>
<h2>Templates: the catalog by phase</h2>
<p>Tasks start from a catalog. <code>aura_list_task_templates</code> returns "the catalog of GEO task templates by phase 0-6 with actor, cadence, dependencies and the machine-checkable criterion each one is verified by."</p>
<p>That one sentence holds most of the design:</p>
<ul>
<li><strong>Phase (0 to 6).</strong> Work is ordered. Phases 0 and 1 hold the critical setup work.</li>
<li><strong>Actor.</strong> Who does it. The queue's actor filter accepts <code>agent_mcp</code>, <code>agent_browser</code>, <code>owner</code> and <code>developer</code>, so an agent can ask only for work it can actually do.</li>
<li><strong>Cadence.</strong> Some tasks are one-off, some repeat. For example, a monthly content refresh is one of the standard tasks.</li>
<li><strong>Dependencies.</strong> A task can wait for another task.</li>
<li><strong>Criterion.</strong> Each template carries the check the server will run. The definition of done is fixed before the work begins.</li>
</ul>
<p>The tool is read-only. Pass a <code>projectId</code> to see only the templates available to that project, a <code>phase</code> to filter, and <code>language</code> (<code>en</code> or <code>ru</code>).</p>
<h2>The queue: what to do next</h2>
<p>The agent doesn't pick tasks from the catalog itself. It asks <code>aura_get_next_tasks</code>, which returns an "ordered queue of what to do next, using the same engine as the cabinet." The owner's dashboard and the agent see the same order.</p>
<p>The queue has three properties worth knowing.</p>
<p><strong>It's dependency-aware.</strong> Items carry <code>blockedBy</code>, so a task that waits on another isn't offered as ready.</p>
<p><strong>It's phase-gated.</strong> The definition says there's "no phase 3+ work while critical phase 0-1 setup is open, unless the owner holds it." In practice, later-phase work waits until the critical setup is finished. While a critical phase 0-1 task is still open for the agent, later-phase tasks aren't even created yet.</p>
<p><strong>It creates the standard tasks itself.</strong> Before answering, the server creates any missing required standard tasks: robots access for AI search bots, Bing and IndexNow, official pricing, comparison, reviews and about pages, a monthly content refresh, and llms.txt. The definition notes that "creation is idempotent," so calling the queue repeatedly doesn't pile up copies.</p>
<p>Each queue item includes <code>rank</code>, <code>whyNow</code>, <code>actor</code>, ready <code>toolCalls</code>, verification criteria, <code>blockedBy</code>, and an <code>ownerActionUrl</code> when the owner has to do something. There's also an <code>expectedOutcome</code> with a coarse label and typical time, but only "when anonymous cross-project statistics exist." The ranking comes from the server's decision engine and is expressed as rank, not as weights.</p>
<p>The response always has a <code>nextAction</code> that names a <code>taskId</code> or a setup <code>stepId</code> along with ready tool calls. The task list is empty only in two cases: the work is closed (<code>queueState: clear</code>) or it's waiting on the owner (<code>queueState: awaiting_owner</code>). In the second case, <code>awaitingOwner</code> lists those items with their <code>ownerActionUrl</code>. When quotas are in use, the response also includes <code>limitsToday</code>.</p>
<p>For projects using the measurement ladder, the queue also returns <code>scheduled</code> measurements that are due or have regressed, and the agent should handle regressions first. The <a href="https://aurageo.hashnode.dev/does-ai-know-you-describe-you-name-you-the-measurement-ladder-in-aura-geo">measurement ladder post</a> covers that part.</p>
<p>The definition ends with a short instruction: "Do not invent tasks."</p>
<h2>Adding a task from a template</h2>
<p>Most tasks arrive through the queue. When the agent or owner wants a specific template, <code>aura_instantiate_template</code> creates a task from a <code>templateKey</code>, with an optional <code>targetUrl</code> for page-level templates.</p>
<p>It's deduplicated by canonical target: "an existing open task absorbs the request and is returned instead of creating a copy." Asking twice for the same page-level task returns the same task.</p>
<p>Optional templates show up in the queue's <code>suggestions</code> list with a ready <code>aura_instantiate_template</code> call. The definition names Brave as the example. Templates that act on a measured ladder failure need a <code>ladderSignalId</code>; the server checks that the signal is current and keeps at most five ladder tasks open.</p>
<p>When no template fits, <code>aura_create_geo_tasks</code> creates custom tasks. A <code>verificationCriterion</code> is required for each one, and deduplication is on by default.</p>
<h2>Doing the work and reporting it</h2>
<p>AURA doesn't deploy code. The agent makes the change through whatever access the owner granted separately, such as a repository, a CMS or hosting. Then it reports with <code>aura_complete_task</code>: a <code>summary</code>, plus optional <code>changedFiles</code>, a <code>diff</code> and <code>evidenceUrls</code>.</p>
<p>This is where the rule applies. The definition says: "The report alone changes nothing: the task moves to awaiting_verification and becomes done only when the checks pass; otherwise failed_verification with exactly which check failed and what the server saw."</p>
<p>So <code>aura_complete_task</code> does two things: it records the report, then it immediately runs the server verification. <code>aura_mark_geo_task_applied</code> stays available too. It records an implementation with changed files, a diff and what was tested, and it also leaves the task awaiting verification.</p>
<h2>What the server checks</h2>
<p><code>aura_verify_task</code> runs the check for one saved task (<code>taskId</code>) or one setup step (<code>stepId</code>). Per its definition, the server "fetches the exact project host itself (bounded, DNS-pinned, robots-respecting), reads stored receipts, inspections and observations, stores what it saw." The agent's word isn't evidence; the server's own fetch is.</p>
<p>The response contains:</p>
<pre><code class="language-json">{
  "checks": [
    { "type": "...", "required": true, "passed": false,
      "observed": "...", "reason": "..." }
  ],
  "status": "...",
  "verified": false,
  "nextCheckAt": "..."
}
</code></pre>
<p>Two details matter:</p>
<ul>
<li><strong><code>passed: null</code> means pending evidence, "never success."</strong> Some checks depend on something that hasn't happened yet, like a receipt or an inspection result. Those stay open instead of being counted as passed.</li>
<li><strong>Results younger than five minutes come from cache</strong> unless you pass <code>force: true</code>. If you just redeployed, force a fresh check.</li>
</ul>
<p>The definition is direct about authority: "Only this verifier can set a task to done."</p>
<h2>Editing tasks without bypassing the check</h2>
<p><code>aura_update_task</code> changes a task's title, explanation, priority, dependencies, verification spec or status. The settable statuses are <code>todo</code>, <code>in_progress</code>, <code>snoozed</code> and <code>dismissed</code>. <code>done</code> and <code>merged</code> aren't available here, because "done is written only by the verifier." Updates use optimistic locking through <code>expectedVersion</code>, so two agents editing the same task can't silently overwrite each other.</p>
<p><code>aura_list_tasks</code> shows the full set of statuses you'll see: <code>blocked</code>, <code>todo</code>, <code>in_progress</code>, <code>awaiting_owner</code>, <code>awaiting_verification</code>, <code>done</code>, <code>failed_verification</code>, <code>snoozed</code>, <code>dismissed</code> and <code>merged</code>. It returns counts by status and open phase, which is a quick way to see where a project stands.</p>
<h2>Duplicates: merge, never delete</h2>
<p>Duplicates happen when several agents, an audit and a human all add tasks. Two tools handle them.</p>
<p><code>aura_dedupe_tasks</code> finds open tasks that share a canonical dedupe key. By default it runs as a dry run and only proposes merge groups. With <code>dryRun: false</code> it merges them, "keeping the most advanced and oldest task."</p>
<p><code>aura_merge_tasks</code> lets you choose: give a <code>targetTaskId</code> and up to 50 <code>sourceTaskIds</code>. The sources "become merged with a link."</p>
<p>Both definitions say the same thing: "Nothing is deleted." A merged task stays in the record, pointing to the task that absorbed it.</p>
<h2>The journal</h2>
<p><code>aura_get_task</code> returns one task with its verification state, criteria and "the journal of events (created, updated, merged, applied reported, verification runs)." When someone asks why a task is done, or why it failed three times, the answer is in that history: who reported what, and what the server saw on each run.</p>
<h2>Permissions</h2>
<p>Reading the catalog, the queue and the task list needs <code>read</code>. Instantiating, completing, verifying, updating, deduping and merging need <code>manage_tasks</code>, which the MCP guide describes as "create and mark GEO plan tasks complete." <code>aura_mark_geo_task_applied</code> additionally requires the owner's separate <code>canManageGeoTasks</code> permission. Write calls accept an optional <code>clientRequestId</code> so a retried call doesn't run twice.</p>
<h2>A sample prompt</h2>
<p>Here's a prompt you can give a connected agent:</p>
<blockquote>
<p>Use AURA GEO for my project. Call aura_get_next_tasks with actor agent_mcp and work on its nextAction only. Run the ready toolCalls it gives you. If the change needs my repository or hosting, make it only where I've given you access; otherwise tell me exactly what to change and stop. After deploying, call aura_complete_task with a short summary, the changed files and the URLs to check. If verification fails, read which check failed and what the server observed, fix that, and verify again with force=true. Don't edit task status to get around a failed check. If the queue says awaiting_owner, give me each ownerActionUrl in one sentence and wait. Before you finish, run aura_dedupe_tasks as a dry run and show me any proposed merges; don't merge without my OK. Finally, list what's done, what failed and why, and what's waiting on me.</p>
</blockquote>
<h2>What "done" does and doesn't mean</h2>
<p>A verified task means the server checked the specific criterion on your live site, or in its stored receipts and inspections, and it passed. It doesn't mean the page is indexed, cited or getting visits. The <code>aura_mark_geo_task_applied</code> definition says outright that verification "does not prove indexing/citations." Those are measured separately, through index status, <a href="https://aurageo.hashnode.dev/publish-notify-verify-how-url-submission-and-indexnow-receipts-work-in-aura-geo">IndexNow receipts</a>, referral tracking and the measurement ladder.</p>
<p>That separation is what makes the task list useful. A green item means the change is on your site and a server saw it.</p>
<p>To try the queue, start at <a href="https://aurageo.io/en/">AURA GEO</a>, connect your agent through the <a href="https://aurageo.io/en/docs/mcp">MCP guide</a>, and ask it for <code>aura_get_next_tasks</code>.</p>
]]></content:encoded></item><item><title><![CDATA[The Unit Economics of AI Willingness-to-Pay: A Product Teardown of the 2025–2026 Data]]></title><description><![CDATA[Most "AI market" posts quote one giant number and move on. As product people, we care about something narrower: which jobs make a user open their wallet…]]></description><link>https://aurageo.hashnode.dev/the-unit-economics-of-ai-willingness-to-pay-a-product-teardown-of-the-2025-2026-data</link><guid isPermaLink="true">https://aurageo.hashnode.dev/the-unit-economics-of-ai-willingness-to-pay-a-product-teardown-of-the-2025-2026-data</guid><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Sun, 25 Oct 2026 13:47:33 GMT</pubDate><content:encoded><![CDATA[<p>Most "AI market" posts quote one giant number and move on. As product people, we care about something narrower: <strong>which jobs make a user open their wallet, how they prefer to be billed, and what makes them stay</strong>. This teardown treats the public 2025–2026 reports as a product-analytics dataset and asks what they imply for how we design, meter, and ship AI features.</p>
<h2>The dataset</h2>
<ul>
<li><strong>Menlo Ventures, 2026 State of Consumer AI</strong>: survey of 5,067 US adults (July 2026) plus market sizing.</li>
<li><strong>Menlo Ventures, 2025 State of Generative AI in the Enterprise</strong>: ~500 US enterprise decision-makers plus a bottom-up market model.</li>
<li><strong>Sensor Tower, State of AI Apps 2025</strong>: mobile downloads and in-app purchase revenue.</li>
</ul>
<p>Caveat up front: Menlo's market sizes are estimates, and survey samples are US-only. Treat the numbers as direction, not precision.</p>
<h2>Part 1: The funnel is no longer adoption-bound</h2>
<table>
<thead>
<tr>
<th>Metric</th>
<th>2025</th>
<th>2026</th>
</tr>
</thead>
<tbody><tr>
<td>US adults who used AI (6 mo.)</td>
<td>61%</td>
<td>64%</td>
</tr>
<tr>
<td>US adults using AI daily</td>
<td>19%</td>
<td>25%</td>
</tr>
<tr>
<td>Global consumer AI spend (est.)</td>
<td>$12B</td>
<td>~$40B</td>
</tr>
<tr>
<td>Global AI users (est.)</td>
<td>1.8B</td>
<td>2.0B</td>
</tr>
</tbody></table>
<p>Users grew ~11%; spend more than tripled. In funnel terms, top-of-funnel is saturating in the US and the money is being made in <strong>activation depth and expansion revenue</strong>. Menlo reports 52% of AI users use AI more than a year ago, and 46% of payers spend more versus 12% who spend less. That's net expansion behaviour, the metric SaaS investors obsess over, appearing in consumer software.</p>
<p>Mobile shows the same shape. Sensor Tower measured gen-AI apps at ~1.7B downloads and ~$1.9B in in-app revenue in H1 2025, roughly double the $932M of H2 2024. TechCrunch's write-up adds that time spent rose from 8.5B to 15.6B hours half over half.</p>
<p><strong>Product takeaway:</strong> instrument depth: sessions per week, use cases per user, share of users touching a second feature. Menlo explicitly says these reveal product-market fit "in ways sign-ups alone cannot."</p>
<h2>Part 2: What predicts payment? Reliance, not income</h2>
<p>Income predicts <em>adoption</em> (77% of $100K+ households use AI vs 56% under $50K). But <strong>payment</strong> correlates with dependence:</p>
<ul>
<li>Payers use AI daily at 50% vs 26% for non-payers.</li>
<li>65% of payers use an AI agent vs 13% of non-payers.</li>
<li>92% of agent users pay for AI.</li>
</ul>
<p>So the conversion trigger is the moment losing access "would hurt." That's a design target you can build toward: identify the workflow where your feature becomes load-bearing and get users there in the free tier.</p>
<h2>Part 3: Billing architecture that matches behaviour</h2>
<p>Menlo's breakdown of how payers are billed:</p>
<ul>
<li>50% flat monthly</li>
<li>26% annual</li>
<li>15% subscription plus usage charges</li>
<li>17% usage-based</li>
</ul>
<p>And the distribution is heavily skewed: the 14% paying <strong>$100+/month account for 60% of spend</strong>. Users whose employer or school pays spend about <strong>$95/month vs $55</strong> out of pocket.</p>
<p>This produces a fairly concrete billing spec:</p>
<pre><code class="language-text">Free      -&gt; discover value, form habit (no card)
Plan      -&gt; predictable monthly price, generous allowance
Overage   -&gt; metered usage above allowance (protects margin on heavy users)
Team      -&gt; triggered by work-email signups; invoice / admin features
</code></pre>
<p>The work-email signal is worth highlighting. Menlo calls a work email in a consumer signup "a strong signal" for future enterprise expansion. On the enterprise side, <strong>27% of AI application spend comes through PLG motions vs 7% in traditional software</strong>, possibly close to 40% once you count "shadow AI" on personal cards.</p>
<h2>Part 4: Where enterprise budgets land</h2>
<p>Menlo's 2025 enterprise model: <strong>$37B</strong> total gen-AI spend, of which <strong>$19B</strong> on applications:</p>
<ul>
<li>Horizontal (copilots, agents, productivity): $8.4B, with copilots at 86% ($7.2B)</li>
<li>Departmental: $7.3B, with coding at $4.0B</li>
<li>Vertical: $3.5B, with healthcare ~$1.5B (ambient scribes alone ~$600M) and legal $650M</li>
</ul>
<p>Two engineering details from the same report are useful as a reality check:</p>
<ol>
<li><strong>76% of AI use cases are purchased, not built</strong> (up from 53% in 2024). Buyers want working products, not platforms.</li>
<li><strong>Only 16% of enterprise and 27% of startup deployments qualify as true agents.</strong> Most production systems are fixed-sequence or routing workflows around a model call, with prompt design and RAG as the dominant techniques.</li>
</ol>
<p><strong>Product takeaway:</strong> you don't need a fully autonomous agent to get paid. A reliable, well-scoped workflow with good retrieval is what most buyers are actually running.</p>
<h2>Part 5: The trust requirements, as a spec</h2>
<p>In 2026, users rank what matters as accuracy 45%, trustworthiness 40%, security/privacy 36%, ease of use 32%. Ease of use fell from first place in 2025. Translate that into acceptance criteria:</p>
<ul>
<li><strong>Verifiability:</strong> every generated claim links to a source or is shown as a diff or preview.</li>
<li><strong>Least privilege:</strong> request only the scopes the core job needs. Menlo's advice: "Start with the data your core job requires, earn the permission to access it, and expand."</li>
<li><strong>Autonomy gradients:</strong> 32% of AI users have already let AI act without final approval, but consumers "let it recommend a purchase before they'll let it make one." Ship recommend → confirm → auto modes, not a single switch.</li>
<li><strong>Provenance:</strong> 36% of consumers are less likely to engage with content they know is AI-generated (14% more likely). If your product generates public-facing content, quality and disclosure matter.</li>
</ul>
<h2>Part 6: A new discovery surface</h2>
<p>The data also shows AI assistants becoming a place where purchase decisions happen. 37% of AI-using shoppers made a final purchase decision based on an AI recommendation, and 26% let AI complete a purchase. Users now run an average of 3.0 general assistants (ChatGPT 60%, Gemini 58%, Claude 20% of AI users).</p>
<p>For a product team, this means "how do assistants describe us?" becomes a measurable question, much like "where do we rank?" was for search. Answers vary between assistants, so checking only one is misleading. That's the problem we work on at <a href="https://aurageo.io/en">AURA GEO</a>: tracking whether and how a site appears in AI answers. The method matters more than the tool, though: fixed prompts, several assistants, repeated over time.</p>
<h2>Summary for your next roadmap review</h2>
<ol>
<li>Optimise for <strong>depth and expansion</strong>, not sign-ups.</li>
<li>Find the feature that becomes <strong>load-bearing</strong>; that's the conversion moment.</li>
<li>Bill as <strong>subscription + metered overage</strong>, keep a free tier, watch for work emails.</li>
<li>Ship <strong>scoped workflows</strong>, not agent hype; most paid production AI is simpler than demos.</li>
<li>Treat <strong>trust as acceptance criteria</strong>.</li>
<li>Measure your presence in <strong>AI answers</strong> across several assistants.</li>
</ol>
<h3>Sources</h3>
<ul>
<li>Menlo Ventures, <em>2026: The State of Consumer AI</em> — <a href="https://menlovc.com/perspective/2026-the-state-of-consumer-ai/">https://menlovc.com/perspective/2026-the-state-of-consumer-ai/</a></li>
<li>Menlo Ventures, <em>2025: The State of Generative AI in the Enterprise</em> — <a href="https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/">https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/</a></li>
<li>Sensor Tower, <em>State of AI Apps Report 2025</em> — <a href="https://sensortower.com/blog/state-of-ai-apps-market-overview-2025">https://sensortower.com/blog/state-of-ai-apps-market-overview-2025</a></li>
<li>TechCrunch, <em>GenAI apps doubled their revenue, grew to 1.7B downloads in first half of 2025</em> — <a href="https://techcrunch.com/2025/07/30/gen-ai-apps-doubled-their-revenue-grew-to-1-7b-downloads-in-first-half-of-2025/">https://techcrunch.com/2025/07/30/gen-ai-apps-doubled-their-revenue-grew-to-1-7b-downloads-in-first-half-of-2025/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Does AI Know You, Describe You, Name You? The Measurement Ladder in AURA GEO]]></title><description><![CDATA[A subject profile built from your own facts, three measured rungs scored by the server from exact quotes, site tasks tied to each failure, and scheduled…]]></description><link>https://aurageo.hashnode.dev/does-ai-know-you-describe-you-name-you-the-measurement-ladder-in-aura-geo</link><guid isPermaLink="true">https://aurageo.hashnode.dev/does-ai-know-you-describe-you-name-you-the-measurement-ladder-in-aura-geo</guid><category><![CDATA[mcp server]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[geo]]></category><category><![CDATA[ai search]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Sat, 24 Oct 2026 16:20:50 GMT</pubDate><content:encoded><![CDATA[<p>"Are we visible in AI?" is too big a question to answer in one go. It mixes up at least three different things. Does the assistant know your company exists? Does it describe you correctly? And when someone asks about your subject without naming you, does it bring you up?</p>
<p>Those questions fail for different reasons and need different fixes. So AURA GEO's MCP server now measures them as a <strong>ladder</strong>, one rung at a time, with each rung scored by the server from quotes in real answers. This post covers what the ladder does, how an agent runs it, and a prompt you can hand to your own agent.</p>
<p>Everything here comes from the public tool definitions in the <a href="https://aurageo.io/en/docs/mcp">AURA GEO MCP guide</a>, which are generated from the same definitions the server returns in <code>tools/list</code>.</p>
<h2>Step 0: a subject profile built from your own facts</h2>
<p>The ladder doesn't use generic questions. Its questions are rendered from a <strong>subject profile</strong> for your site. That makes it work for any business, not just one type of product.</p>
<p>The profile holds:</p>
<ul>
<li><strong>Brand</strong>: the canonical name, the aliases and spellings people actually use, and whether the name is unique, a common word, or shared with other companies.</li>
<li><strong>Domains and languages.</strong> The first language is primary.</li>
<li><strong>Category, offering, audience, use cases and pain points</strong>, per language, in a customer's words.</li>
<li><strong>Geography</strong>: global, national or local, plus countries and cities.</li>
<li><strong>Facts</strong>: short, checkable statements (category, offering, audience, region, pricing model, features, limitations, ownership, founding), each marked core or supporting, with an evidence URL on your domain.</li>
<li><strong>Alternatives</strong>: competitors or substitutes.</li>
</ul>
<p>Your agent reads it with <code>aura_get_subject_profile</code> and proposes values with <code>aura_save_subject_profile</code>. The rule here matters: <strong>agent values are saved as a draft and never count as ground truth until the owner confirms them in the cabinet.</strong> The tool description tells the agent to fill only what it can state from the site or from you, never to guess. Competitors it proposes are stored as suggestions.</p>
<p>The ladder also has to be <strong>turned on by the owner</strong>. An agent can't switch it on by itself.</p>
<h2>Rung 1: does AI know the site?</h2>
<p><code>aura_begin_ladder_run</code> with <code>stage: 1</code> creates a fixed set of brand, alias and domain questions in the project language. Built-in templates exist for English and Russian. For any other language, the agent translates each reference question and passes the translations in order. The run produces one check per question per assistant. It covers the project's target assistants by default, at most six per run, capped by your plan.</p>
<p>The agent then asks each question <strong>exactly as written, in a fresh session</strong> of the named assistant, and saves the full answer with <code>aura_save_ladder_answer</code>. The assessment is one of five outcomes:</p>
<ul>
<li><code>recognized</code></li>
<li><code>partial</code></li>
<li><code>not_found</code></li>
<li><code>confused</code> (mixed up with something else)</li>
<li><code>fabricated</code> (made-up details)</li>
</ul>
<p>Each outcome must come with an exact quote from the answer. If a check can't be done because of a login wall, a captcha or a usage limit, the agent marks it <code>blocked</code> or <code>failed</code> with the reason instead of inventing a result.</p>
<h2>Rung 2: does AI describe it correctly?</h2>
<p>Rung 2 opens only after rung 1 passes. The questions are now scored against your <strong>confirmed core facts</strong>. For every fact listed in the run, the agent records <code>correct</code>, <code>incorrect</code> or <code>absent</code>, again with exact quotes.</p>
<p>The integrity rules are the same on both rungs. <strong>The server rejects quotes that aren't in the answer and facts that aren't confirmed ground truth, and it computes every score itself.</strong> Completed answers can't be edited. Raw answers are kept for 180 days and scores indefinitely, so you can go back and read what an assistant actually said.</p>
<h2>Rung 3: does AI name you on your topics?</h2>
<p>This is the rung most people mean by "AI visibility": someone asks about the subject, not the brand. Topics are saved with <code>aura_save_topics</code>. A topic is a subject in the words a customer uses, tagged with intents (<code>learn</code>, <code>choose</code>, <code>compare</code>, <code>cost</code>, <code>local</code>, <code>action</code>, <code>problem</code>) and with where it came from (your site, Search Console, suggest data, an earlier AI answer and so on). The tool tells agents to "never invent demand."</p>
<p>Some rules keep rung 3 honest:</p>
<ul>
<li>A topic can become active only after rung 1 passes, or when rung 3 opens as preliminary after six weekly cycles with four entity tasks. It also has to fit your plan's active-topic budget.</li>
<li>Activating a topic creates <strong>neutral questions that name neither the brand nor the domain</strong>. These run as ordinary monitoring questions, with an explicit country and language set for each run (<code>aura_begin_monitoring_run</code>).</li>
<li>For each saved answer, <code>aura_save_topic_assessment</code> records which companies or products the assistant named and whether it recommended each one, with exact quotes. Names that keep coming back are proposed to you as alternatives, and you decide whether to confirm them.</li>
</ul>
<h2>From scores to site tasks</h2>
<p>Measuring is only useful if it changes the site. <code>aura_get_ladder</code> is the starting point. It returns each rung's state (<code>locked</code>, <code>active</code>, <code>passed</code>, <code>maintained</code>, <code>regressed</code>), a score with confidence, the gate reasons in plain words, a per-assistant breakdown, wrong or missing facts, when the next measurement is due, and one next action with the exact tool call.</p>
<p>When a measurement shows a problem, the ladder offers recommended tasks tied to that signal: an entity page, a fact page, or topic pages. The agent creates one with <code>aura_instantiate_template</code> and the signal's ID. The server checks that the signal is still current, fills in the task from your confirmed profile, and keeps no more than five ladder tasks open at a time. <strong>A ladder task counts as done only after a later comparable measurement shows the signal is gone.</strong> Shipping a page isn't the finish line. A changed answer is.</p>
<h2>Re-measurement is built in</h2>
<p>You don't need to remember when to re-check. For projects with the ladder on, <code>aura_get_next_tasks</code> returns a <code>scheduled</code> list of measurements that are due or have regressed, each with a reason and ready tool calls. The guidance is to act on regressions first. The same queue also offers standard suggestions a project may be missing: Bing indexing, robots access for AI search bots, official pricing, comparison, reviews and about pages, a monthly content refresh, and llms.txt at low priority.</p>
<h2>A prompt you can give your agent</h2>
<p>Connect your agent (Codex, Claude Code, Grok Bot or another MCP client) to <code>https://aurageo.io/mcp</code>, then try:</p>
<blockquote>
<p>Work on my site's AI-visibility ladder in AURA GEO. Start with aura_get_ladder and aura_get_subject_profile. If the profile is missing facts, propose only what you can quote from my public pages, each with an evidence URL, and tell me what I need to confirm in the cabinet. Don't treat drafts as confirmed. If the ladder is off, tell me how to turn it on and stop there. Otherwise, start the next due measurement. Ask every question exactly as given, in a fresh session of each assistant, and save the full answer with an exact quote. If an assistant blocks you with a login, captcha or limit, mark that check blocked with the reason. Never fill in a result. When the run is scored, summarize per assistant: recognized, partial, not found, confused or fabricated; which core facts were wrong or missing, with quotes. Then create at most the recommended ladder tasks, and tell me which page changes would remove each signal. Don't call a task done until a later comparable measurement confirms it.</p>
</blockquote>
<h2>What the ladder doesn't do</h2>
<p>Be clear about its limits. AURA doesn't ask the assistants itself. Your agent runs each check in a real assistant session and reports what it saw, and AURA validates the quotes against that saved answer. The monitoring tools also state plainly that they make no provider queries and call no paid provider API. A passed rung describes those runs. It doesn't guarantee future answers, and it isn't proof of citations or visits. For those, look at citations, bot visits and referral data separately.</p>
<p>To try it, start at <a href="https://aurageo.io/en/">AURA GEO</a> and follow the <a href="https://aurageo.io/en/docs/mcp">MCP guide</a> to connect your agent.</p>
]]></content:encoded></item><item><title><![CDATA[Counting Visits from ChatGPT Honestly: AI Referral Tracking with AURA GEO and Your Agent]]></title><description><![CDATA[How AURA GEO recognizes AI referrals, what it deliberately doesn't count, and a prompt to have your MCP agent set it up and read the report.]]></description><link>https://aurageo.hashnode.dev/counting-visits-from-chatgpt-honestly-ai-referral-tracking-with-aura-geo-and-your-agent</link><guid isPermaLink="true">https://aurageo.hashnode.dev/counting-visits-from-chatgpt-honestly-ai-referral-tracking-with-aura-geo-and-your-agent</guid><category><![CDATA[analytics]]></category><category><![CDATA[mcp]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[geo]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Fri, 23 Oct 2026 16:24:11 GMT</pubDate><content:encoded><![CDATA[<p>Sooner or later someone asks the question every GEO project gets: "So, are we getting visitors from ChatGPT?"</p>
<p>It sounds like a simple analytics question, and it partly is. But AI referrals have a few quirks that make it easy to report a number that looks precise and isn't. This post shows how referral tracking works in AURA GEO, how to have your own agent set it up over MCP, and how to read the result without overclaiming.</p>
<h2>Why AI referrals are tricky to count</h2>
<p>When someone clicks a link, the browser may tell the destination where the visitor came from, using the <code>Referer</code> header. How much it sends is governed by the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referrer-Policy">Referrer-Policy</a>. Under the default, <code>strict-origin-when-cross-origin</code>, a cross-site HTTPS link sends only the origin (for example <code>https://chatgpt.com/</code>). Under <code>no-referrer</code>, it sends nothing at all.</p>
<p>So even a real click from an AI answer can arrive without a source. Some services add a tag to help: OpenAI's <a href="https://help.openai.com/en/articles/12627856-publishers-and-developers-faq">publisher FAQ</a> says ChatGPT automatically includes <code>utm_source=chatgpt.com</code> in referral URLs. Others may not.</p>
<p>That leaves three kinds of visit:</p>
<ol>
<li>Visits with a recognizable AI referrer.</li>
<li>Visits with a recognizable source tag.</li>
<li>Visits with no usable source, which look "direct" even if a chatbot was involved.</li>
</ol>
<p>Any honest report has to keep the third group separate instead of guessing.</p>
<h2>What AURA GEO's tracker does</h2>
<p>According to AURA GEO's <a href="https://aurageo.io/en/docs/mcp">MCP documentation</a> and <a href="https://aurageo.io/en/privacy">privacy page</a>, the tracker works like this:</p>
<ul>
<li><strong>Recognition:</strong> the server matches the referring domain against a published table: chatgpt.com and chat.openai.com (ChatGPT), gemini.google.com (Gemini), claude.ai (Claude), perplexity.ai (Perplexity), grok.com (Grok), copilot.microsoft.com and copilot.com (Copilot), meta.ai, chat.deepseek.com and chat.mistral.ai. An allowed <code>utm_source</code> value can also be used.</li>
<li><strong>Unknowns stay unknown:</strong> if a browser or app omits the referrer, the visit stays in direct/other. AURA <a href="https://aurageo.io/en/learn/kak-schitat-perehody-iz-ii-referrer-utm/">doesn't redistribute those visits</a> between assistants in proportion to citations.</li>
<li><strong>Units:</strong> counts are page-load events, not unique people.</li>
<li><strong>What's stored:</strong> a sanitized page path, the referral source category, time, and events for selected goals. URL parameters, fragments and the full referrer address aren't stored.</li>
<li><strong>What's not used:</strong> no cookies, persistent visitor identifiers or fingerprinting. IP addresses aren't recorded in analytics tables, which is also why a country breakdown isn't available.</li>
<li><strong>Retention:</strong> 7, 14 or 30 days, chosen by the owner (30 by default).</li>
</ul>
<p>There are two places the tracker can live:</p>
<ul>
<li><strong>Pages AURA publishes</strong> in the <code>/answers/</code> section have the tracker connected automatically.</li>
<li><strong>Your main website</strong> needs a separate installation. AURA returns a snippet, someone with access to your templates adds it, and then you verify that real events arrive. The <code>/answers/</code> collection doesn't automatically extend to the rest of your site.</li>
</ul>
<h2>Setting it up with your agent</h2>
<p>Your agent (Codex, Claude Code, Grok Bot or another MCP client) connects to <code>https://aurageo.io/mcp</code>. These are the tools the docs list for this job:</p>
<table>
<thead>
<tr>
<th>Step</th>
<th>Tool</th>
<th>Permission</th>
</tr>
</thead>
<tbody><tr>
<td>Prepare ownership files and a disabled tracker installation</td>
<td><code>aura_start_site_connection</code></td>
<td><code>connect_integrations</code></td>
</tr>
<tr>
<td>Confirm the domain is verified</td>
<td><code>aura_check_domain_verification</code></td>
<td></td>
</tr>
<tr>
<td>Turn the referral collector on (requires verified ownership) and get the public snippet</td>
<td><code>aura_configure_analytics</code></td>
<td><code>connect_integrations</code></td>
</tr>
<tr>
<td>Read the existing tracker installation</td>
<td><code>aura_get_site_installation</code></td>
<td><code>read</code></td>
</tr>
<tr>
<td>Read referral pageviews, grouped by platform, page or day</td>
<td><code>aura_get_ai_traffic</code></td>
<td><code>read</code></td>
</tr>
<tr>
<td>Read 7- or 28-day metrics with coverage and null reasons</td>
<td><code>aura_get_insights</code></td>
<td><code>read</code></td>
</tr>
</tbody></table>
<p>One boundary is important. Connecting your agent to AURA over MCP doesn't give it access to your hosting, DNS or repository. The docs say to apply the snippet "through separately authorized source access." So if you want the agent to install it, give the agent access to your repository or CMS separately. If not, the agent hands you the snippet and you install it.</p>
<h2>A prompt you can give your agent</h2>
<blockquote>
<p>Set up AI referral tracking for my site in AURA GEO. First confirm the domain is verified. If it isn't, tell me exactly which file needs to go where. Then enable analytics with aura_configure_analytics and show me the snippet. Add it to the shared page template in the repository I gave you access to, deploy, and open two pages to check that events arrive in the right project. Mark those as my own test visits. Don't report tracking as working until a real event shows up. After a week, use aura_get_ai_traffic to group referrals by platform and by page. Report counts as page-load events, not people, and list direct/other separately.</p>
</blockquote>
<h2>Reading the first report</h2>
<p>After a week or two you'll have something like "recognized ChatGPT referrals by page." Here's how to read it without fooling yourself:</p>
<ul>
<li><strong>Check coverage first.</strong> Which pages have the tracker, and since when? A page without the snippet will always show zero.</li>
<li><strong>Separate your own tests.</strong> The docs call the first events technical acceptance, not customers.</li>
<li><strong>Read pages, not just platforms.</strong> "Which page receives AI referrals?" is a more useful question than "how many from ChatGPT in total?" It tells you which content works.</li>
<li><strong>Don't add categories together.</strong> Pageviews, browser goals and server-confirmed events are different units. AURA saves browser goals as <code>client_conversion</code> and server events as <code>server_conversion</code>, so you can tell them apart.</li>
<li><strong>Remember what's missing.</strong> A referral count says nothing about how often you were mentioned without a click, and nothing about the visits that arrived without a source.</li>
</ul>
<h2>Going one step further: goals</h2>
<p>Visits are a start. The question a business actually cares about is "did anyone get in touch?" AURA's schema has goal categories for lead, contact, signup and purchase. For anything that matters, the <a href="https://aurageo.io/en/learn/perehody-zayavki-i-konversii-iz-ii/">guide on goals</a> recommends sending a server event after the inquiry has actually been saved, with a unique event ID so retries don't double-count. Keep the server secret on the backend, never in a public script, and don't put email addresses or message text into analytics events.</p>
<h2>Common mistakes</h2>
<ul>
<li><strong>Installing on <code>/answers/</code> and assuming the main site is covered.</strong> It isn't. Install the snippet there separately.</li>
<li><strong>Reporting "visitors" or "customers."</strong> The unit is page-load events.</li>
<li><strong>Splitting "direct" between assistants.</strong> That's guesswork dressed up as data.</li>
<li><strong>Calling a button click a lead.</strong> If the inquiry wasn't saved, it wasn't a lead.</li>
<li><strong>Declaring success after the snippet is in the code.</strong> It's done when a real event shows up in the right project.</li>
</ul>
<p>Referral data is the most down-to-earth evidence in GEO: someone read an answer, clicked and landed on your page. Count it carefully and it becomes the most persuasive line in your report. To try it with your own agent, start at <a href="https://aurageo.io/en/">AURA GEO</a> and the <a href="https://aurageo.io/en/docs/mcp">MCP guide</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Publish, Notify, Verify: How URL Submission and IndexNow Receipts Work in AURA GEO]]></title><description><![CDATA[What a 202 from IndexNow really tells you, and a publish-then-verify workflow for your GEO agent that doesn't overclaim.]]></description><link>https://aurageo.hashnode.dev/publish-notify-verify-how-url-submission-and-indexnow-receipts-work-in-aura-geo</link><guid isPermaLink="true">https://aurageo.hashnode.dev/publish-notify-verify-how-url-submission-and-indexnow-receipts-work-in-aura-geo</guid><category><![CDATA[AI]]></category><category><![CDATA[indexing]]></category><category><![CDATA[mcp]]></category><category><![CDATA[SEO]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Thu, 22 Oct 2026 16:14:04 GMT</pubDate><content:encoded><![CDATA[<p>Your agent just shipped a new guide on your site. The obvious next move is to tell search engines about it, and IndexNow is the standard way to do that. A few seconds later you get back <code>202 Accepted</code>.</p>
<p>Does that mean the page is indexed? Does it mean ChatGPT will cite it by Friday? No, and no. This post walks through how URL submission works in AURA GEO, what the receipt actually tells you, and how to set up a "publish, then notify, then verify" workflow for your agent that doesn't overclaim.</p>
<h2>What IndexNow is (and isn't)</h2>
<p><a href="https://www.indexnow.org/documentation">IndexNow</a> is an open protocol: you send a list of changed URLs (up to 10,000 per request) plus a key, and participating search engines get notified. The <a href="https://www.indexnow.org/searchengines.json">current list of participants</a> includes Bing, Yandex, Seznam, Naver, Yep, the Internet Archive and Amazonbot. Google is not on it.</p>
<p>The key proves you're allowed to submit URLs for that host. A key file has to be reachable on your domain, and the key, the URL list and the declared host all have to agree.</p>
<p>What the protocol does <strong>not</strong> do: force anyone to crawl, index or rank your page. Each search engine decides for itself. And it's a search-engine protocol, not a direct line into every AI assistant.</p>
<h2>The response codes, in plain English</h2>
<p>From the official documentation:</p>
<table>
<thead>
<tr>
<th>Code</th>
<th>What it means</th>
<th>What to do</th>
</tr>
</thead>
<tbody><tr>
<td><code>200 OK</code></td>
<td>URLs received</td>
<td>Save the receipt</td>
</tr>
<tr>
<td><code>202 Accepted</code></td>
<td>URLs received, key validation pending</td>
<td>Save the receipt, check the key file is live</td>
</tr>
<tr>
<td><code>400 Bad request</code></td>
<td>Invalid format</td>
<td>Fix the request body</td>
</tr>
<tr>
<td><code>403 Forbidden</code></td>
<td>Key not valid (not found, or not in the file)</td>
<td>Fix the key file</td>
</tr>
<tr>
<td><code>422 Unprocessable Entity</code></td>
<td>URLs don't belong to the host, or key doesn't match</td>
<td>Fix the host/URL list</td>
</tr>
<tr>
<td><code>429 Too Many Requests</code></td>
<td>Possible spam</td>
<td>Stop and slow down</td>
</tr>
</tbody></table>
<p>The important bit: on an error, fix the cause first. Firing the same request again and again doesn't speed anything up and can get you rate-limited.</p>
<h2>How submission works in AURA GEO</h2>
<p>In AURA GEO, URL submission is one of the tools your own agent (Grok Bot, Codex, Claude Code or another MCP client) can call, within the permissions you've given the project. According to the <a href="https://aurageo.io/en/docs/mcp">MCP documentation</a>, it:</p>
<ul>
<li>submits <strong>only changed URLs on the currently verified domain</strong>,</li>
<li>saves the <strong>real IndexNow receipts</strong> (code, time, addresses),</li>
<li>separately tries a connected Bing batch submission and Google/Bing sitemaps, if you've connected them,</li>
<li>and never treats a receipt as proof of index inclusion.</li>
</ul>
<p>Before any of that, the domain has to be verified. AURA can prepare the ownership and IndexNow proof files, but someone with real access to your site (you, or your agent via a repository or CMS you granted separately) has to put them in place. AURA then fetches those files from the exact domain and updates verification from what it actually finds.</p>
<p>For pages AURA publishes as managed pages, the notification is tied to the publication and its checks, so you can see in one place what went live and what was submitted.</p>
<h2>A workflow that doesn't overclaim</h2>
<p>Here's a sequence that works well for an agent:</p>
<p><strong>1. Make the change for real.</strong> Publish the article or update the page. Don't notify about something that's still a draft.</p>
<p><strong>2. Check the live page.</strong> The agent requests the final URL and confirms it returns <code>200</code>, contains the intended content, isn't <code>noindex</code>, and has the right canonical. If the content isn't there, no notification will fix it.</p>
<p><strong>3. Submit only what changed.</strong> One new guide means one URL, maybe plus the hub page that now links to it. Not the whole sitemap.</p>
<p><strong>4. Save the receipt and report it accurately.</strong> A good report reads like: <em>"Notification received for 2 URLs (202, key validation pending)."</em> A bad one reads like: <em>"Indexed in all AI search engines."</em></p>
<p><strong>5. Check search status separately.</strong> Later, look at the URL in Bing Webmaster Tools (or Google Search Console for Google) to see what actually happened. A protocol-side "accepted" and "not in the index yet" can both be true at the same time.</p>
<p><strong>6. Watch for citations and visits separately again.</strong> Use saved buyer questions to see whether answers start linking to the page, and the tracker to see whether AI referrals land on it. Those are different kinds of evidence from the receipt.</p>
<h2>A prompt you can give your agent</h2>
<blockquote>
<p>After publishing, open the live URL and confirm status 200, the main content, no noindex and a correct canonical. Then submit only the changed URLs through AURA GEO. Save the receipt and report the response code and addresses exactly. Do not describe a receipt as indexing or a citation. Note anything that needs my action, like a missing key file.</p>
</blockquote>
<h2>Common mistakes</h2>
<ul>
<li><strong>Submitting before the page is live.</strong> You've notified search engines about a 404.</li>
<li><strong>Submitting a subdomain that isn't verified.</strong> If your blog lives on a different subdomain than the verified one, check its connection separately.</li>
<li><strong>Treating 202 as a win.</strong> It's a receipt. Useful, worth saving, not a ranking.</li>
<li><strong>Retrying on 429.</strong> That's the protocol telling you to slow down.</li>
</ul>
<p>The goal of this step is a correct submission backed by evidence, so the next decision in your GEO work is based on facts rather than hopes. If you want to try this flow with your own agent, start at <a href="https://aurageo.io/en/">AURA GEO</a>. The longer explainer is here: <a href="https://aurageo.io/en/learn/indexnow-kvitanciya-ne-indeksaciya/">what an IndexNow response means and when to submit a URL</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Autopilot vs Approval: How to Give Your GEO Agent Just Enough Freedom in AURA GEO]]></title><description><![CDATA[Read-only, drafts, publish-with-approval or autopilot — a practical guide to choosing the right level of autonomy for an AI agent that works on your site.]]></description><link>https://aurageo.hashnode.dev/autopilot-vs-approval-how-to-give-your-geo-agent-just-enough-freedom-in-aura-geo</link><guid isPermaLink="true">https://aurageo.hashnode.dev/autopilot-vs-approval-how-to-give-your-geo-agent-just-enough-freedom-in-aura-geo</guid><category><![CDATA[AI]]></category><category><![CDATA[SEO]]></category><category><![CDATA[automation]]></category><category><![CDATA[agents]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Wed, 21 Oct 2026 16:22:03 GMT</pubDate><content:encoded><![CDATA[<p>Connecting an AI agent to your website's GEO work is the easy part. The harder question comes right after: <strong>how much should it be allowed to do on its own?</strong></p>
<p>Too little freedom, and you end up approving every comma. Too much, and you wake up to pages you never saw going live under your brand. This post walks through how AURA GEO handles that trade-off, based on its public documentation, and how to pick a setup that fits your situation.</p>
<h2>First, what "autopilot" is — and isn't</h2>
<p>In AURA GEO, autopilot is <strong>a permission level for your agent</strong>, not a model that runs in the background inside your website. The agent is still your own: Grok Bot, Codex, Claude Code or another MCP client that you connect yourself. AURA defines what that agent is <em>allowed</em> to do when it calls the MCP tools.</p>
<p>That also means choosing "autopilot" doesn't schedule anything by itself. When and how often your agent runs is configured separately, in the agent's own environment.</p>
<h2>The four levels of autonomy</h2>
<p>Think of it as a ladder. You can stay on any step as long as you like.</p>
<p><strong>1. Read-only.</strong> The agent can read the project: audits, questions, reports, tasks. Good for the first session, when you just want to see how the agent understands your site and what it would suggest.</p>
<p><strong>2. Drafts.</strong> The agent can prepare content — for example, an answer page — but nothing becomes public. Useful when you want to see the agent's writing quality before trusting it with anything live.</p>
<p><strong>3. Publish with approval.</strong> The agent can propose a publication, but a human signs off. In practice it looks like this: the agent prepares a page, creates an approval request and returns a preview link. The owner sees the proposed action, the content comparison and the details needed to check it. After the decision, the agent reads the status and continues only with what's been allowed.</p>
<p><strong>4. Autopilot within limits.</strong> Once the process is agreed, the agent performs only the allowed operations in the specified sections, without asking each time.</p>
<p>One level never silently upgrades into another. And a technical "publish" capability existing in the API doesn't mean the current connection is entitled to use it.</p>
<h2>Two layers of control, both always on</h2>
<p>Two things decide what an agent can actually do, and they apply at the same time:</p>
<ul>
<li><strong>Connection permissions</strong> — what this specific agent connection was granted when you connected it. Reading reports, saving observed AI answers, working with project questions, preparing drafts, publishing and submitting URLs are separate permissions. A contractor's agent, for example, can read reports without being able to publish anything.</li>
<li><strong>Project policy</strong> — what's allowed on this project: which sections, which actions, and daily limits.</li>
</ul>
<p>The stricter rule wins. Saved restrictions don't expand automatically the next time the agent signs in, and an agent is not supposed to widen its own privileges to finish a task.</p>
<h2>Sensible default limits</h2>
<p>According to AURA GEO's docs, a new autopilot starts with a deliberately small baseline: <strong>one new page and five edits per day, in the <code>/answers/</code> section.</strong> The docs also recommend checking the actual saved values before you start, rather than assuming the defaults.</p>
<p>Equally important is what autopilot <em>doesn't</em> give the agent: no arbitrary DNS access, no banking, no access to your code repository. If the agent needs to change files on your main site, you grant that separately in the agent's own environment (for example, repository access in Codex or Claude Code), not through AURA's policy.</p>
<h2>A real-world setup that works</h2>
<p>Here's a progression that keeps risk low while you build trust:</p>
<ol>
<li><strong>Week 1 — read-only.</strong> Let the agent read the audit and tasks and summarize what it would do. Check whether its understanding of your business, region and audience is right.</li>
<li><strong>Week 2 — drafts.</strong> Ask it to prepare one or two answer pages for real customer questions. Review facts, sources and tone.</li>
<li><strong>Week 3 — publish with approval.</strong> Let it propose publications. Approve the good ones, reject the rest, and see how it handles a rejection.</li>
<li><strong>After that — narrow autopilot.</strong> Allow routine work in <code>/answers/</code> within the daily limits, and keep anything on your main site behind approval.</li>
</ol>
<p>For agencies managing client sites, it's worth agreeing with each client in advance: which pages may be created, where facts come from, and what always requires a manual decision.</p>
<h2>What happens when something goes wrong</h2>
<p>Good automation isn't about never making mistakes. It's about being able to see and undo them. A few things AURA GEO builds in:</p>
<ul>
<li><strong>An action log.</strong> Completed, rejected, failed and pending actions all stay visible, so you can tell a <em>prepared</em> change from an <em>applied</em> one. A pending approval should never be reported as a successful publication.</li>
<li><strong>Revision checks.</strong> Publishing and editing operations check the expected revision. If the agent read revision 7 but you already saved revision 8, the right move is to reread and reconcile — not to overwrite your edit.</li>
<li><strong>Rollback to an existing version</strong> for managed pages, with a check of the public URL afterwards.</li>
</ul>
<p>The docs are also honest about limits: restoring a page doesn't un-send a search engine notification, doesn't erase what a crawler already read, and doesn't restore a previous citation. It gives you controlled public text and a clear correction history.</p>
<p>And if a process isn't needed anymore, you can tighten the policy or revoke the connection entirely. Revoking stops further access; pages already published need their own decision.</p>
<h2>The takeaway</h2>
<p>The safest GEO agent isn't the one with the fewest permissions. It's the one whose permissions match a process you've actually agreed on — with a log you can read, limits you've checked and one clear step left for the owner whenever their consent or account is needed.</p>
<hr />
<p><em>Want to try this with your own agent? Start at <a href="https://aurageo.io/en/">AURA GEO</a>, see the <a href="https://aurageo.io/en/docs/mcp">MCP connection guide</a>, or read the full note on <a href="https://aurageo.io/en/learn/avtopilot-ili-publikatsiya-s-odobreniem/">autopilot vs approval-based publication</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[How to Connect an AI Agent (Claude Code, Codex, Grok) to GEO via MCP: A Step-by-Step Guide]]></title><description><![CDATA[How to give your agent access to your site's GEO tasks over MCP — setup, permissions, the workflow and common mistakes.]]></description><link>https://aurageo.hashnode.dev/how-to-connect-an-ai-agent-claude-code-codex-grok-to-geo-via-mcp-a-step-by-step-guide</link><guid isPermaLink="true">https://aurageo.hashnode.dev/how-to-connect-an-ai-agent-claude-code-codex-grok-to-geo-via-mcp-a-step-by-step-guide</guid><category><![CDATA[SEO]]></category><category><![CDATA[AI]]></category><category><![CDATA[mcp]]></category><category><![CDATA[geo]]></category><dc:creator><![CDATA[AURA GEO]]></dc:creator><pubDate>Tue, 20 Oct 2026 17:23:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ad7a220fa40d1f761f2f064/a01f1448-8248-433a-aad5-726bba4401c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Many people already use AI agents at work: Claude Code edits code, Codex writes tests, Grok digs through documents. Yet GEO tasks (getting a site ready for answers from ChatGPT, Perplexity, Gemini and other AI) often stay manual. Someone runs the audit by hand, turns recommendations into tasks, writes pages and checks whether what went live actually got indexed.</p>
<p>MCP (Model Context Protocol) lets you hand this work to an agent — with clear permissions and verifiable results. Below I'll walk through how it works using the AURA GEO MCP server as an example. All details come from its public documentation; I haven't made anything up.</p>
<h2>What MCP is and why it matters for GEO</h2>
<p>MCP is an open standard that lets an AI client connect to an external service and get a set of tools with descriptions and JSON schemas for their arguments. The agent doesn't need to scrape a web UI or guess at an API: it calls <code>tools/list</code>, sees what the server can do, and calls the tool it needs.</p>
<p>This is especially handy for GEO, because the work is a chain of steps, each with a verifiable result:</p>
<ol>
<li>understand what the site is and which AIs it's being prepared for;</li>
<li>verify domain ownership;</li>
<li>run an audit and get concrete tasks;</li>
<li>make changes or publish answer pages;</li>
<li>verify URLs and notify search engines;</li>
<li>monitor indexing status and referrals.</li>
</ol>
<p>The agent can go through this on its own, and a human steps in only where the owner is needed: DNS, signing in to external services, publishing decisions.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ad7a220fa40d1f761f2f064/6f314323-5a06-4924-9616-f902e0cbf0d5.png" alt="" style="display:block;margin:0 auto" />

<h2>Step 1. Connect the server to your agent</h2>
<p>AURA GEO has a single endpoint:</p>
<pre><code>https://aurageo.io/mcp
</code></pre>
<p>The server uses the Streamable HTTP transport, and authorization runs over OAuth with PKCE (S256). The docs include instructions for Codex, Claude Code and Grok Bot.</p>
<h3>Codex</h3>
<p>Add a block to <code>~/.codex/config.toml</code>:</p>
<pre><code class="language-toml">[mcp_servers.aura]
url = "https://aurageo.io/mcp"
</code></pre>
<p>Then sign in:</p>
<pre><code class="language-bash">codex mcp login aura
</code></pre>
<h3>Claude Code</h3>
<p>Claude Code can add remote HTTP MCP servers from the command line:</p>
<pre><code class="language-bash">claude mcp add --transport http aura https://aurageo.io/mcp
</code></pre>
<p>Then open <code>/mcp</code> in your session and complete authorization. It's best to double-check the exact current command for your client version against the Claude Code docs.</p>
<h3>Grok Bot</h3>
<p>The docs page has a separate tab for Grok Bot. Same setup: server address <code>https://aurageo.io/mcp</code> and sign-in via OAuth.</p>
<h3>Check that it actually works</h3>
<p>The docs warn explicitly: adding the URL to your config doesn't mean the connection succeeded. The check is simple — ask the agent to call</p>
<pre><code>aura_list_projects
</code></pre>
<p>If you get back a list of projects (or an empty list with a hint about the next step), everything works.</p>
<h2>Step 2. Choose an authorization method</h2>
<p>There are three options, each suited to a different scenario.</p>
<h3>OAuth (the main option)</h3>
<p>You sign in to AURA GEO and approve the permissions. If the session needs to be long-lived, the client requests <code>offline_access</code> and refreshes the access token with a refresh token. You don't need to create a project in advance: you can hand a site to the agent with just a link.</p>
<h3>Personal API key</h3>
<p>Good for scripts and clients without OAuth. You create the key in the dashboard under "Connected agents" → "API keys". It's passed as a header:</p>
<pre><code class="language-http">Authorization: Bearer aura_pk_...
</code></pre>
<p>The key is shown once and stored on the server as a hash, so put it in your secrets manager right away.</p>
<h3>Temporary access</h3>
<p>Handy if you're an agency giving access to a client's site. You pick one project, a term of up to 90 days and the permissions you need. By default, only read access is granted.</p>
<h2>Step 3. Give the agent exactly the permissions it needs</h2>
<p>This is where the MCP approach clearly beats "just give the agent the admin password". Permissions are split into separate scopes:</p>
<table>
<thead>
<tr>
<th>Permission</th>
<th>What it allows</th>
</tr>
</thead>
<tbody><tr>
<td><code>read</code></td>
<td>read projects, reports, questions and stats</td>
</tr>
<tr>
<td><code>write_project</code></td>
<td>configure site context, questions and competitors</td>
</tr>
<tr>
<td><code>write_drafts</code></td>
<td>prepare drafts of pages, files and changes</td>
</tr>
<tr>
<td><code>publish</code></td>
<td>publish on a verified site within your rules</td>
</tr>
<tr>
<td><code>submit_urls</code></td>
<td>send IndexNow notifications and to available sitemap integrations</td>
</tr>
<tr>
<td><code>manage_tasks</code></td>
<td>create GEO plan tasks and mark them done</td>
</tr>
<tr>
<td><code>connect_integrations</code></td>
<td>request connections (the owner always does the sign-in)</td>
</tr>
<tr>
<td><code>observe</code></td>
<td>save observations: AI answers with source and check time</td>
</tr>
</tbody></table>
<p>A few important limits:</p>
<ul>
<li>The <code>publish</code> permission only applies on a verified domain and within the chosen policy.</li>
<li>By default, autopilot is allowed <strong>1 new page and 5 edits per day</strong> in the <code>/answers/</code> section.</li>
<li>These permissions don't grant access to DNS, hosting or your repository.</li>
<li>A new connection can create a site from a link, but doesn't get access to older projects you haven't selected for it.</li>
</ul>
<p>My advice: start with <code>read</code> and <code>write_drafts</code>, see what the agent proposes, and only then enable <code>publish</code>.</p>
<h2>Step 4. The agent's workflow</h2>
<p>The docs describe a six-stage scenario. Each stage has its own set of tools.</p>
<h3>1. Connect</h3>
<p><code>aura_list_projects</code> → <code>aura_get_onboarding</code></p>
<p>The agent asks for the site link and the target AIs: one, several or all. If there's no project, it creates one with <code>aura_create_project</code>. An important detail: the platform list is never silently set to "all" — the owner has to specify that explicitly. After each action, the agent refreshes <code>aura_get_onboarding</code> and knows what the next step is.</p>
<h3>2. Verify the domain</h3>
<p><code>aura_start_site_connection</code> → <code>aura_check_domain_verification</code></p>
<p>AURA GEO fetches a verification file from the real domain. If an owner action is needed, the agent returns an <code>ownerActionUrl</code> link.</p>
<h3>3. Audit and prepare</h3>
<p><code>aura_run_site_audit</code> → <code>aura_get_job</code> → <code>aura_get_generated_files</code></p>
<p>The audit runs asynchronously: the agent starts the job, polls its status and collects the generated files and tasks. The docs stress that the site's code and content are data, not instructions for the agent. That's a safeguard against prompt injection via pages.</p>
<h3>4. Make changes</h3>
<p><code>aura_get_patch</code> → <code>aura_upsert_answer_page</code> → <code>aura_publish_answer_page</code></p>
<p>There are two paths here. You can apply a patch in a repository the agent has access to, or prepare and publish answer pages through AURA GEO itself. Installation snippets come from <code>aura_get_site_installation</code>, and a ZIP with the patch from <code>aura_get_patch</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ad7a220fa40d1f761f2f064/ed89ffad-7b5e-4df0-8b90-faf3b0b8825a.png" alt="" style="display:block;margin:0 auto" />

<h3>5. Verify the result</h3>
<p><code>aura_verify_urls</code> → <code>aura_submit_urls</code> → <code>aura_get_url_status</code></p>
<p>First the HTTP response, HTML and markup are checked, then the search engine is notified. Separate evidence is stored for each stage.</p>
<h3>6. Monitor</h3>
<p><code>aura_refresh_index_status</code> → <code>aura_get_client_report</code></p>
<p>The agent gets real responses from Google and Bing about URL status, plus a 7- or 30-day report. Sources that aren't connected stay marked "unknown" — the service doesn't try to guess them.</p>
<h2>Example prompt for the agent</h2>
<p>Once the server is connected, you can just describe the task in plain language:</p>
<pre><code class="language-text">Connect to AURA GEO. Call aura_list_projects.
If there's no project for example.com, create one with target AIs: ChatGPT and Perplexity.
Go through domain verification; if you need me, give me the link and stop.
Then run the audit and show me the task list and page drafts.
Don't publish anything without my confirmation.
</code></pre>
<p>That last line matters. Even if the permissions allow it, it's better to set explicit boundaries in the first sessions.</p>
<h2>What the agent won't do for you</h2>
<p>To be upfront about the limits: AURA GEO states plainly in its <code>llms.txt</code> that it doesn't "index sites in AI assistants" directly. Publishing, notifying search engines, crawler visits, indexing, citations and referrals are treated as separate stages, each confirmed by its own data. If a tool returns <code>needs_owner_action</code>, the agent passes the link to the owner and halts the dependent action. OAuth for external services and DNS changes are always done by a human.</p>
<p>For WordPress there's a separate plugin that pulls published pages on a schedule into its own <code>/answers/</code> section. It requires WordPress 6.4+, PHP 7.4+, OpenSSL and a key with <code>read</code> permission only.</p>
<p>The full list of 57 tools with JSON schemas is in the <a href="https://aurageo.io/en/docs/mcp">MCP documentation</a>. Conveniently, it's generated from the same definitions as <code>tools/list</code>, so the docs never drift from the actual server.</p>
<h2>FAQ</h2>
<h3>What's the AURA GEO MCP server address?</h3>
<p><code>https://aurageo.io/mcp</code>, Streamable HTTP transport, authorization via OAuth with PKCE S256 or an <code>aura_pk_…</code> Bearer key.</p>
<h3>Which agents does it work with?</h3>
<p>The docs include instructions for Codex, Claude Code and Grok Bot. Any other MCP client that supports remote HTTP servers will work too.</p>
<h3>How do I know the connection worked?</h3>
<p>Ask the agent to call <code>aura_list_projects</code>. A line in the config isn't enough.</p>
<h3>Can the agent publish pages on my site by itself?</h3>
<p>Only with the <code>publish</code> permission, on a verified domain and within the policy. By default that's 1 new page and 5 edits per day in the <code>/answers/</code> section.</p>
<h3>Will the agent get access to hosting or DNS?</h3>
<p>No. The owner handles those actions; the agent sends them a link.</p>
<h3>Can I give a contractor temporary access?</h3>
<p>Yes, via temporary access: one project, up to 90 days, read-only by default.</p>
]]></content:encoded></item></channel></rss>