One page. Two audiences. One source that still holds when interaction begins.
Today we're introducing Markdown Shared Notation (MDSN), a way to build interactive pages that stay readable for people and continuable for agents from the same source.
The Problem
We kept running into the same split:
- Humans need readable, interactive interfaces.
- Agents need structured, machine-readable surfaces.
In most stacks, serving both means building twice: once for the browser, once for machine-facing use. Or worse, building for people and asking agents to scrape the rendered result.
Our Solution
MDSN keeps the page primary through content negotiation. The same route, the same page source, different useful representations:
GET /guestbook HTTP/1.1
Accept: text/html
-> interactive form
GET /guestbook 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 guestbook {
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 MDSN
Try It
npx mdsn init my-app
cd my-app
npm install
npm start
Or open the live demo right now.
MDSN is open source. Star the project on GitHub, join the discussion, or build something cool and share it with us.