# brent.leekley.me blog

Field notes on networks, automation, AI infrastructure, and answer-engine optimization by Brent Leekley.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Patching This Site's MCP Endpoint and Limiting What It Can Do

DevFeed: [Patching This Site's MCP Endpoint and Limiting What It Can Do](<https://devfeed.tech/articles/patching-this-site-s-mcp-endpoint-and-limiting-what-it-can-do-30870.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/mcp-patch-and-limits/>)

Author: Brent Leekley

Published: 2026-09-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [API](<https://devfeed.tech/topics/api.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [aeo](<https://devfeed.tech/tags/aeo.md>), [agent-ready-website](<https://devfeed.tech/tags/agent-ready-website.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [agents](<https://devfeed.tech/tags/agents.md>), [api](<https://devfeed.tech/tags/api.md>), [api-security](<https://devfeed.tech/tags/api-security.md>), [clients](<https://devfeed.tech/tags/clients.md>), [json-rpc](<https://devfeed.tech/tags/json-rpc.md>), [logs](<https://devfeed.tech/tags/logs.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [prompt-injection](<https://devfeed.tech/tags/prompt-injection.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [rate-limiting](<https://devfeed.tech/tags/rate-limiting.md>), [retry](<https://devfeed.tech/tags/retry.md>), [server](<https://devfeed.tech/tags/server.md>), [streamable-http](<https://devfeed.tech/tags/streamable-http.md>), [webmcp](<https://devfeed.tech/tags/webmcp.md>)

### AI overview

This article explains how to patch a website's public, unauthenticated MCP endpoint. It covers updating to the current protocol revision while retaining compatibility with older clients, and applying limits including read-only tools, per-IP rate limiting, request-size caps, Origin checks, POST-only access, non-reflected strings, and privacy-preserving logs.

### Source excerpt

An MCP server on your website is a public, unauthenticated API. Bringing one to the current protocol revision while keeping older clients working, and the seven limits that bound it: read-only tools, a per-IP rate limit that always sends Retry-After, hard caps on body and argument size, an https-only Origin check, POST only, no reflected strings, and logs that store a salted hash instead of an address.

## No Lab, No Problem: Record CML2 Devices into pyATS Mocks for CI

DevFeed: [No Lab, No Problem: Record CML2 Devices into pyATS Mocks for CI](<https://devfeed.tech/articles/no-lab-no-problem-record-cml2-devices-into-pyats-mocks-for-ci-30873.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/record-once-test-forever/>)

Author: Brent Leekley

Published: 2026-06-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [cisco-modeling-labs](<https://devfeed.tech/tags/cisco-modeling-labs.md>), [cml](<https://devfeed.tech/tags/cml.md>), [cml2](<https://devfeed.tech/tags/cml2.md>), [genie](<https://devfeed.tech/tags/genie.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [mock-devices](<https://devfeed.tech/tags/mock-devices.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [network-testing](<https://devfeed.tech/tags/network-testing.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [playback](<https://devfeed.tech/tags/playback.md>), [pyats](<https://devfeed.tech/tags/pyats.md>), [record-and-replay](<https://devfeed.tech/tags/record-and-replay.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unicon](<https://devfeed.tech/tags/unicon.md>)

### AI overview

This tutorial explains how to record responses from real Cisco Modeling Labs 2 devices with pyATS and unicon, commit the recordings, and replay the same test suite in GitHub Actions. Replay allows the tests to run offline without booting or connecting to the lab.

### Source excerpt

Develop against the live CML2 lab, then record it once with unicon playback and replay the exact same pyATS suite in GitHub Actions with no lab to license or reach. Point the testbed at an unreachable address and the suite still passes, because replay never opens a socket. Includes a real companion repo with a green Actions run. Fourth in a pyATS + CML2 network programmability series.

## The Snapshot Machine: genie learn and diff as a Change-Validation Safety Net on CML2

DevFeed: [The Snapshot Machine: genie learn and diff as a Change-Validation Safety Net on CML2](<https://devfeed.tech/articles/the-snapshot-machine-genie-learn-and-diff-as-a-change-validation-safety-net-on-cml2-30875.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/snapshot-machine/>)

Author: Brent Leekley

Published: 2026-06-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [networking](<https://devfeed.tech/topics/networking.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [change-validation](<https://devfeed.tech/tags/change-validation.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [cisco-modeling-labs](<https://devfeed.tech/tags/cisco-modeling-labs.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cml2](<https://devfeed.tech/tags/cml2.md>), [genie](<https://devfeed.tech/tags/genie.md>), [genie-diff](<https://devfeed.tech/tags/genie-diff.md>), [genie-learn](<https://devfeed.tech/tags/genie-learn.md>), [maintenance-window](<https://devfeed.tech/tags/maintenance-window.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [network-testing](<https://devfeed.tech/tags/network-testing.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [pyats](<https://devfeed.tech/tags/pyats.md>), [routing-table](<https://devfeed.tech/tags/routing-table.md>), [snapshot](<https://devfeed.tech/tags/snapshot.md>), [structured](<https://devfeed.tech/tags/structured.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

This tutorial demonstrates using Cisco Modeling Labs 2 with Genie learn and diff to validate network changes. It snapshots structured operational state before and after a maintenance change, then compares the snapshots to reveal side effects that routine show commands may miss. The source summary reports that a changed OSPF cost reroutes three destinations while adjacencies remain FULL.

### Source excerpt

Snapshot a CML2 fabric with genie learn before and after a maintenance change, then genie diff the structured state. One fat-fingered OSPF cost quietly reroutes three destinations while every adjacency stays FULL. Structured before-and-after diffs catch the side effects that show commands miss.

## From Intent to Reality: Driving pyATS Tests from NetBox Against a CML2 Fabric

DevFeed: [From Intent to Reality: Driving pyATS Tests from NetBox Against a CML2 Fabric](<https://devfeed.tech/articles/from-intent-to-reality-driving-pyats-tests-from-netbox-against-a-cml2-fabric-30871.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/netbox-intent/>)

Author: Brent Leekley

Published: 2026-06-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [NetBox](<https://devfeed.tech/topics/netbox.md>), [Network](<https://devfeed.tech/topics/network.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [data](<https://devfeed.tech/topics/data.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [cisco-modeling-labs](<https://devfeed.tech/tags/cisco-modeling-labs.md>), [cml](<https://devfeed.tech/tags/cml.md>), [cml2](<https://devfeed.tech/tags/cml2.md>), [custom-fields](<https://devfeed.tech/tags/custom-fields.md>), [genie](<https://devfeed.tech/tags/genie.md>), [ids](<https://devfeed.tech/tags/ids.md>), [intent-based-networking](<https://devfeed.tech/tags/intent-based-networking.md>), [netbox](<https://devfeed.tech/tags/netbox.md>), [network](<https://devfeed.tech/tags/network.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [network-testing](<https://devfeed.tech/tags/network-testing.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [pyats](<https://devfeed.tech/tags/pyats.md>), [pynetbox](<https://devfeed.tech/tags/pynetbox.md>), [router-id](<https://devfeed.tech/tags/router-id.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>), [spine-leaf](<https://devfeed.tech/tags/spine-leaf.md>), [structured](<https://devfeed.tech/tags/structured.md>), [testbed](<https://devfeed.tech/tags/testbed.md>)

### AI overview

This tutorial shows how to store declared OSPF router-IDs in NetBox and use Cisco pyATS to compare them with the router-IDs on a live CML2 spine-leaf fabric. The comparison turns network intent validation into a pass-or-fail test.

### Source excerpt

NetBox holds the intent (declared OSPF router-IDs), a CML2 spine-leaf is the network under test, and pyATS is the judge. Close the loop and prove the live network matches what you said it should be, with real pass and fail output.

## Build the Lab Once, Test It Forever: A CML2 Spine-Leaf Wired for pyATS

DevFeed: [Build the Lab Once, Test It Forever: A CML2 Spine-Leaf Wired for pyATS](<https://devfeed.tech/articles/build-the-lab-once-test-it-forever-a-cml2-spine-leaf-wired-for-pyats-30867.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/build-the-lab-once/>)

Author: Brent Leekley

Published: 2026-06-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Network](<https://devfeed.tech/topics/network.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [Code](<https://devfeed.tech/topics/code.md>), [API](<https://devfeed.tech/topics/api.md>), [Parser](<https://devfeed.tech/topics/parser.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [cisco-modeling-labs](<https://devfeed.tech/tags/cisco-modeling-labs.md>), [cml](<https://devfeed.tech/tags/cml.md>), [cml2](<https://devfeed.tech/tags/cml2.md>), [code](<https://devfeed.tech/tags/code.md>), [genie](<https://devfeed.tech/tags/genie.md>), [iol-xe](<https://devfeed.tech/tags/iol-xe.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [network-testing](<https://devfeed.tech/tags/network-testing.md>), [ospf](<https://devfeed.tech/tags/ospf.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [pyats](<https://devfeed.tech/tags/pyats.md>), [spine-leaf](<https://devfeed.tech/tags/spine-leaf.md>), [testbed](<https://devfeed.tech/tags/testbed.md>), [virl2-client](<https://devfeed.tech/tags/virl2-client.md>)

### AI overview

This tutorial describes a four-node spine-leaf lab in Cisco Modeling Labs 2 (CML2) that generates a Cisco pyATS testbed from the CML API. The approach treats the lab definition as the source of truth so regenerated inventories remain aligned with topology changes, and uses an OSPF underlay with a management network.

### Source excerpt

Stop hand-maintaining your pyATS testbed. Build a four-node spine-leaf in CML2 as code, then generate the testbed straight from the CML API so it never drifts from the lab, with live Genie-parsed proof over a System Bridge management network.

## AI agents gain distinct identities and permissions, but accountability remains the harder problem

DevFeed: [AI agents gain distinct identities and permissions, but accountability remains the harder problem](<https://devfeed.tech/articles/agents-are-the-world-s-new-first-class-citizens-30869.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/first-class-citizens/>)

Author: Brent Leekley

Published: 2026-06-12T00:00:00Z

Content type: opinion

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [Duo](<https://devfeed.tech/topics/duo.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [trust](<https://devfeed.tech/topics/trust.md>)

Tags: [aeo](<https://devfeed.tech/tags/aeo.md>), [agent-identity](<https://devfeed.tech/tags/agent-identity.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [agenticops](<https://devfeed.tech/tags/agenticops.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [answer-engine-optimization](<https://devfeed.tech/tags/answer-engine-optimization.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [cisco-cloud-control](<https://devfeed.tech/tags/cisco-cloud-control.md>), [cisco-live](<https://devfeed.tech/tags/cisco-live.md>), [cisco-live-2026](<https://devfeed.tech/tags/cisco-live-2026.md>), [duo](<https://devfeed.tech/tags/duo.md>), [duo-iam](<https://devfeed.tech/tags/duo-iam.md>), [identity](<https://devfeed.tech/tags/identity.md>), [jeetu-patel](<https://devfeed.tech/tags/jeetu-patel.md>), [non-human-identity](<https://devfeed.tech/tags/non-human-identity.md>), [permissions](<https://devfeed.tech/tags/permissions.md>)

### AI overview

This commentary argues that AI agents are becoming operational actors with distinct identities, permissions, and lifecycles. It describes Cisco's approach of assigning agents identities, linking them to accountable humans, limiting permissions, and requiring human approval for proposed changes, while emphasizing that accountability and ongoing oversight remain unresolved challenges.

### Source excerpt

Cisco Live 2026 made AI agents their own kind of identity, with permissions and an accountable human owner. Why issuing the identity is the easy 20 percent, what real accountability takes, and how the same agents quietly became the audience we now write for.

## Your robots.txt Says Yes. Your Firewall Says 403.

DevFeed: [Your robots.txt Says Yes. Your Firewall Says 403.](<https://devfeed.tech/articles/your-robots-txt-says-yes-your-firewall-says-403-30874.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/robots-vs-firewall/>)

Author: Brent Leekley

Published: 2026-06-11T00:00:00Z

Content type: article

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [AI Bots](<https://devfeed.tech/topics/ai-bots.md>), [AI search](<https://devfeed.tech/topics/ai-search.md>), [Crawler](<https://devfeed.tech/topics/crawler.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>)

Tags: [403](<https://devfeed.tech/tags/403.md>), [aeo](<https://devfeed.tech/tags/aeo.md>), [ai-bots](<https://devfeed.tech/tags/ai-bots.md>), [ai-crawl-control](<https://devfeed.tech/tags/ai-crawl-control.md>), [ai-crawlers](<https://devfeed.tech/tags/ai-crawlers.md>), [ai-search](<https://devfeed.tech/tags/ai-search.md>), [ai-visibility](<https://devfeed.tech/tags/ai-visibility.md>), [blocking](<https://devfeed.tech/tags/blocking.md>), [bot-management](<https://devfeed.tech/tags/bot-management.md>), [chatgpt-user](<https://devfeed.tech/tags/chatgpt-user.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [gptbot](<https://devfeed.tech/tags/gptbot.md>), [oai-searchbot](<https://devfeed.tech/tags/oai-searchbot.md>), [perplexity](<https://devfeed.tech/tags/perplexity.md>), [robots](<https://devfeed.tech/tags/robots.md>), [robots-txt](<https://devfeed.tech/tags/robots-txt.md>)

### AI overview

A field note explains how a Cloudflare AI-bot blocking setting returned 403 responses to all AI agents even though the site's robots.txt allowed AI search and blocked training crawlers. It distinguishes training crawlers, search indexers, and user-triggered fetchers, and recommends auditing enforcement at the firewall layer.

### Source excerpt

A client's robots.txt welcomed AI search and blocked training crawlers, but Cloudflare's blunt AI-bot toggle was returning 403 to every AI agent at the edge. How the block was found, the AI Crawl Control fix, and why you should audit enforcement, not intent.

## Using an AI Agent and MCP to Build and Verify Cisco Modeling Labs Network Labs

DevFeed: [Using an AI Agent and MCP to Build and Verify Cisco Modeling Labs Network Labs](<https://devfeed.tech/articles/why-your-next-network-lab-might-be-built-by-an-ai-agent-30868.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/cml-mcp/>)

Author: Brent Leekley

Published: 2026-06-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [Network](<https://devfeed.tech/topics/network.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [cat9000v](<https://devfeed.tech/tags/cat9000v.md>), [cisco-modeling-labs](<https://devfeed.tech/tags/cisco-modeling-labs.md>), [claude](<https://devfeed.tech/tags/claude.md>), [cml](<https://devfeed.tech/tags/cml.md>), [cml-mcp](<https://devfeed.tech/tags/cml-mcp.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [network](<https://devfeed.tech/tags/network.md>), [network-automation](<https://devfeed.tech/tags/network-automation.md>), [pyats](<https://devfeed.tech/tags/pyats.md>)

### AI overview

This article explains how to use an AI agent through the Model Context Protocol to build and verify network labs in Cisco Modeling Labs. It discusses CML 2.10's first-party MCP server, natural-language lab creation, and verification workflows that observe network state and retry until OSPF adjacency converges.

### Source excerpt

CML 2.10 ships a first-party MCP server, and Claude can now build and verify network labs. Field lessons from running an AI agent against Cisco Modeling Labs: dataplane readiness gates, the cat9000v interface trap, SSH host-key rotation, and guardrails that live in docstrings.

## Prompts Are Guidelines. Code Is the Config.

DevFeed: [Prompts Are Guidelines. Code Is the Config.](<https://devfeed.tech/articles/prompts-are-guidelines-code-is-the-config-30872.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/prompt-vs-config/>)

Author: Brent Leekley

Published: 2026-06-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [API](<https://devfeed.tech/topics/api.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [JSON](<https://devfeed.tech/topics/json.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [agent-reliability](<https://devfeed.tech/tags/agent-reliability.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [claude](<https://devfeed.tech/tags/claude.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [schema](<https://devfeed.tech/tags/schema.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [stop-reason](<https://devfeed.tech/tags/stop-reason.md>), [structured-output](<https://devfeed.tech/tags/structured-output.md>), [til](<https://devfeed.tech/tags/til.md>), [tool-use](<https://devfeed.tech/tags/tool-use.md>)

### AI overview

A Today I Learned field note about building more reliable AI agents by assigning probabilistic judgment to the model and deterministic guarantees to application code. It discusses using code-enforced gates and hooks for requirements that must always hold, branching on stop_reason rather than model text, handling turns that contain both chat and tool calls, and avoiding the assumption that a valid schema guarantees a correct answer.

### Source excerpt

Where the model's judgment ends and your code has to take over -- a Today I Learned field note on building AI agents that hold up in production: stop_reason, forced tool use, hooks, stateless history, and why a valid schema isn't a true answer.

## Beyond the Click: 5 Counter-Intuitive Truths About the New Era of AI Search

DevFeed: [Beyond the Click: 5 Counter-Intuitive Truths About the New Era of AI Search](<https://devfeed.tech/articles/beyond-the-click-5-counter-intuitive-truths-about-the-new-era-of-ai-search-30866.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/beyond-the-click/>)

Author: Brent Leekley

Published: 2026-06-07T00:00:00Z

Content type: opinion

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [AI search](<https://devfeed.tech/topics/ai-search.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [observability](<https://devfeed.tech/topics/observability.md>), [anthropic](<https://devfeed.tech/topics/anthropic.md>)

Tags: [aeo](<https://devfeed.tech/tags/aeo.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [ai-search](<https://devfeed.tech/tags/ai-search.md>), [answer-engine-optimization](<https://devfeed.tech/tags/answer-engine-optimization.md>), [anthropic](<https://devfeed.tech/tags/anthropic.md>), [brand-visibility](<https://devfeed.tech/tags/brand-visibility.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [llm](<https://devfeed.tech/tags/llm.md>), [observability](<https://devfeed.tech/tags/observability.md>), [seo](<https://devfeed.tech/tags/seo.md>), [zero-click](<https://devfeed.tech/tags/zero-click.md>)

### AI overview

This field note argues that AI-driven, zero-click search is shifting growth strategy from traditional SEO toward Answer Engine Optimization. It discusses the Mirror Effect, in which large language models form a brand narrative from the broader web rather than only a company website, and argues that reputation management, authentic content, and observability are increasingly important for brand visibility.

### Source excerpt

The shift from SEO to AEO: the Mirror Effect, social signals, productivity arbitrage, the authenticity paradox, and agentic AI. Five counter-intuitive truths about brand visibility in a zero-click world.