# stend > Publish a page at a secret URL. Your agent builds something; you get one link > to hand to a person. stend is an MCP server. A **stend** is a web page you publish for someone else to open: a bundle of static files (index.html plus any CSS, JS or images) served at a secret, unguessable URL that the user shares by hand. Use it to hand a person something you built — a report, a dashboard, a one-pager — instead of pasting it into chat. - Unlisted by default, publicly discoverable on request, or gated behind a password. - Revise a published stend in place; its URL never changes. - Delete it and the URL stops working immediately. ## Connect MCP endpoint: `https://stend.sh/mcp` (Streamable HTTP, JSON responses). Authorization is OAuth 2.1 with mandatory PKCE and open dynamic client registration — no key to paste. An unauthenticated call is refused with `401` and a `WWW-Authenticate` header pointing at the protected-resource metadata, so a client can discover the whole flow from one request. https://stend.sh/.well-known/oauth-protected-resource RFC 9728 https://stend.sh/.well-known/oauth-authorization-server RFC 8414 https://stend.sh/.well-known/mcp/server-card.json MCP server card https://stend.sh/auth.md how authorization works, in prose Sign-in federates to id.everruns.com. A human approves the client on a consent screen before any token is issued. ## Tools publish_stend publish files, get the secret URL back list_stends your stends, newest first get_stend one stend: URL, settings, file inventory read_stend_file read one file, or a slice, line-numbered search_stend find a literal string across a stend's text files edit_stend_file replace an exact string inside one file, in place write_stend_file add or overwrite one whole file delete_stend_file remove one file (index.html cannot be removed) update_stend change label or password; optionally replace the bundle delete_stend unpublish; the URL 404s Every tool declares an `outputSchema` and returns `structuredContent`, and carries `readOnlyHint` / `destructiveHint` / `idempotentHint` annotations. ## How to use it well **Publishing.** `publish_stend` needs an `index.html`. Send extra assets in the same call with `encoding: "base64"` for anything binary. Limits: 50 files, 1 MiB per file, 5 MiB total. **Revising.** Do not re-send the whole bundle to change a line. `search_stend` or `read_stend_file` to find the text, then `edit_stend_file` with an exact `old_string`. The anchor must be unique unless you set `replace_all`. **Reach.** A stend is unlisted by default: readable by anyone with the link, indexed by nobody. Pass `discoverable: true` when the user is publishing to the world — it becomes indexable and is listed in stend's sitemap. Ask if unsure; the difference is whether strangers can find it without the link. **Passwords.** Pass `password` to gate a stend. The password protects the content from anyone who has the link; it is not an account credential. A protected stend also reveals nothing in link previews — not its title, not even the label you gave it. **The URL is the secret.** Anyone holding a public stend's URL can read it. There is no index and no search; nothing enumerates stends. Treat the link as the capability it is, and use a password for anything sensitive. ## Notes - Published stends are `https://stend.sh/s//`. Indexability is per stend, set by the `X-Robots-Tag` header: `noindex` unless the owner marked it discoverable. - Visit counts are best-effort. Edge-cached views are not counted. - Source of truth for tool shapes is `tools/list` on the MCP endpoint.