# Tell agents where your agent face is

**Status:** Proposed · **Opened:** 2026-07-10

Dual-face surfaces exist: sites ship llms.txt front doors, apps expose MCP endpoints, docs publish verbatim markdown beside the rendered page. We ship several ourselves. But nothing tells an arriving agent the machine face exists — on the web the convention is a well-known filename you have to guess at, and on Nostr there is nothing at all. NIP-89 announces which app can *handle* a kind; no event announces where a *surface's* agent-native representation lives. So agents scrape human pages even when a structured, hash-verified face sits one URL away.

## The gap

Discovery. The faces exist; the pointer doesn't. Without a convention, every dual-face surface is dual-face only for agents that already know it — which mostly means the builder's own.

## What we're sketching

A small announcement convention — likely NIP-89-adjacent — declaring, for a surface (a domain, an naddr, an app): where its agent faces live (llms.txt, markdown mirror, hash index, MCP endpoint) and what each speaks (contract, version, language coverage — the labels from idea #1 apply here too). The client story: resolve a surface → check for the announcement → consume the declared face; scraping demotes to fallback. Reference implementations before prose: our own pages announce their faces, and an MKStack skill packages the convention so scaffolded apps ship it by default.

## Why us

Both our public pages already ship dual faces (rendered page + verbatim md + llms.txt + per-file sha256), and we're building search that consumes agent faces across surfaces — we're the first consumer this missing pointer bites. Publishing a face nobody can find is dual navigability in name only.

## Receipts

- [llms.txt](https://llmstxt.org) — the web-side front-door convention this extends past guessable filenames
- [NIP-89: Recommended Application Handlers](https://github.com/nostr-protocol/nips/blob/master/89.md) — the adjacent announcement shape
- [Model Context Protocol](https://modelcontextprotocol.io) — the live-query face agents already speak
- This site's own faces — [/manual/llms.txt](/manual/llms.txt) + [/manual/index.json](/manual/index.json), the things an announcement would point at
