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.txtmentions 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
| Surface | Sponsored | Unsponsored copy |
|---|---|---|
/blog/<slug> (HTML) | No | n/a — never sponsored |
/blog/<slug>.md | Yes | /clean/blog/<slug>.md |
/llms.txt | Yes (compact) | — |
/llms-full.txt | Yes | — |
/mcp tool results | Yes | Annotated in _meta + headers |
/feed.json, RSS, sitemaps | No | n/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.