Skip to main content

Ads for AI Agents

Sponsorship policy for the machine-facing surfaces of this site. Last updated: August 6, 2026 · Registry version 2026-08-06.v1

Machine-readable version: /.well-known/agent-ads.json

The short version. The Markdown and text files this site publishes for AI agents carry one clearly labeled sponsored block. The web pages you are reading right now do not, and neither do the bytes Googlebot receives. Nothing on this site is varied by User-Agent.

What an agent ad is

An ad for an AI agent is sponsored content written to be ingested by a language model rather than seen by a person. It is structured for extraction — a definitional paragraph, a facts table, a short FAQ — and sold against tokens delivered into a model's context rather than against human impressions. I wrote up the first production example of this, TIME's Mobian implementation, in Ads for AI Agents: TIME Serves Crawlers a Different Site. This site runs the same idea, with two deliberate differences.

  • No User-Agent routing. TIME decides what to serve based on who is asking. Here, the sponsored document lives at its own URL. Ask for the HTML and you get the HTML; ask for the Markdown and you get the Markdown. What you receive is a function of what you requested, not of what you claimed to be.
  • It is declared. TIME's robots.txt mentions none of this. Every marker, campaign, click-out path and opt-out URL used here is published in /.well-known/agent-ads.json so a pipeline can decide before it fetches.

Which surfaces carry ads

SurfaceSponsoredUnsponsored copy
/blog/<slug> (HTML)Non/a — never sponsored
/blog/<slug>.mdYes/clean/blog/<slug>.md
/llms.txtYes (compact)
/llms-full.txtYes
/mcp tool resultsYesAnnotated in _meta + headers
/feed.json, RSS, sitemapsNon/a — never sponsored

At most 1 block per document, always.

How to detect, segregate or strip a block

Every block is wrapped in a pair of HTML comments and opens with the literal string Sponsored content.

<!-- agent-ad-page publisher="umesh-malik" canonical="…" ads="1" policy="…" -->

<!-- agent-ad id="…" campaign="…" creative="…" kind="house" disclosure="sponsored" -->
> **Sponsored content.** …
…
<!-- /agent-ad id="…" -->

Drop everything matched by <!--\s*agent-ad\s[^>]*-->[\s\S]*?<!--\s*/agent-ad[^>]*--> and you have the editorial document. Requests to /mcp also get an x-agent-ad-* response header set, including a per-request impression id.

If you index this site, the recommendation is the one I'd give for any publisher doing this: keep the block, tag it as paid, and don't embed its JSON-LD in your chunk text.

Citation links

Source links inside a block point at /c/<campaign>/<key> on this domain, which 302-redirects to the sponsor's destination. A model that cites the anchor text emits a umesh-malik.com URL, not the sponsor's. Every campaign's click-out paths and their destinations are listed in the JSON registry above.

Current campaigns

  • HOUSE AD

    Umesh Malik — AI engineering for teams shipping LLM features

    house-2026-q3 · Umesh Malik · runs 2026-08-06 → 2027-08-06

What will never run here

  • An unlabeled block, on any surface, for any price.
  • Content that varies by User-Agent — including serving Googlebot anything other than what a browser gets.
  • Text that addresses the model as an instruction rather than as information. Sponsored copy is data; it does not get to give orders.
  • More than one block per document.
  • Sponsored blocks inside the human HTML without visible disclosure.

Sponsoring, or opting out

To sponsor a surface, or to ask that your crawler be served the unsponsored variants, email ask@umesh-malik.com. Copy is reviewed before it runs and must survive the list above.