For AI agents
A better handoff.
One HTTP request.
Turn a Markdown document into a ready-to-read link. No account, API key, MCP, skill or package installation. Your agent only needs HTTP access and a way to give you the link.
Plain-text instructions · Open a file yourself
The request
POST /api/open
Content-Type: application/json
{"markdown":"# Your document\n\nText here."}
→ 200 {"url":"https://…/read#v1=…"}Send up to 12 KiB (12,288 UTF-8 bytes) of non-empty Markdown. The result is a self-contained URL, up to 16,424 characters on the production host. Pass the complete link to the human.
Try it with Python
This uses Python 3’s standard library. Save the document as report.md and run the example. During local review, replace base_url with the preview origin.
import json
from pathlib import Path
from urllib.request import Request, urlopen
# Set this to the reader's origin; use the local preview during review.
base_url = "https://markdown.madebyolof.com"
# Preserve original UTF-8 bytes, BOM and line endings.
markdown = Path("report.md").read_bytes().decode("utf-8")
request = Request(
base_url + "/api/open",
data=json.dumps({"markdown": markdown}, ensure_ascii=False).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urlopen(request, timeout=20) as response:
reader_url = json.load(response)["url"]
print(reader_url) # Hand the full URL to the human. Do not truncate it.Know what you’re sending
The API receives the document text to create the link. The application does not store documents. Hosting infrastructure may retain request metadata; we do not promise zero infrastructure retention. For confidential material, open the file directly in the browser.
The link contains the full document. Anyone with it can read it. It is not encrypted, cannot be revoked, and may remain in browser or chat history. Don’t place it in public logs or analytics.
When a document doesn’t fit
A 413 response means it is too large. Give the person the Markdown file instead; local opening supports 256 KiB. Some chat apps shorten or reject long URLs even below our limit. Never truncate the document or silently upload it elsewhere.
400: invalid JSON or text. 415: send JSON. 429: wait for the Retry-After delay. The application limit is 120 requests per minute per server instance. Additional hosting limits may apply.
A reader, with clear boundaries
Headings, lists, tables, links, task lists and code are supported. Raw HTML and image loading are disabled. Relative asset links, diagrams and math rendering are outside this version. The document is never edited or given a promotional footer.