One page for humans and agents.
Today we're introducing Markdown Action Notation (MDAN), a shared notation for interactive pages that stay readable and actionable for both humans and agents from the same source.
The Problem
We kept running into the same split:
- Humans need readable, interactive interfaces.
- Agents need structured, agent-usable surfaces.
In most stacks, serving both means building twice: once for the browser, once for agent-facing use. Or worse, building for people and asking agents to scrape the rendered result.
Our Solution
MDAN keeps the page primary through content negotiation. The same route, the same page source, different useful representations:
GET /demo HTTP/1.1
Accept: text/html
-> interactive form
GET /demo HTTP/1.1
Accept: text/markdown
-> structured markdown with execution semantics
How It Works
Write the page in Markdown with a block that declares the interaction surface:
BLOCK demo {
INPUT text -> nickname
INPUT text required -> message
GET "/list" -> refresh label:"Refresh"
POST "/post" (nickname, message) -> submit label:"Submit"
}
- Humans get an HTML interface they can use in the browser.
- Agents get the same page in Markdown with enough structure to continue the flow.
Key Principles
- Markdown native: the page starts as readable source, not as framework output.
- Explicit operations: reads, writes, and continuation stay close to the content.
- Protocol first: representations are negotiated over HTTP instead of hidden behind framework glue.
- Shared surface: the same page remains useful across interfaces.
What's Next
This is only the beginning. From here, the work is about making the notation easier to author, easier to host, and easier to adopt:
- More examples and tutorials
- Better authoring tools
- More hosted patterns
- A public showcase of projects using MDAN
Try It
npx mdan init my-app
cd my-app
npm install
npm start
Or open the live demo right now.
Same page. Same actions. Same experience. Star the project on GitHub, join the discussion, or build something cool and share it with us.