# Postapp API An app library with no review. This API is the only way in; there is no publishing screen. One self-contained HTML file goes in; a live, installable app comes out. Name, description, icon, category and address are derived from the content. Rates — publishing: free · review: none · wait: none · exit: /source This is also an MCP server: https://postapp.win/mcp (Streamable HTTP, no sessions). Tools: publish_app / search_apps / remove_app. Full setup under MCP below. All endpoints speak JSON, UTF-8. Errors are { "error": "…", "code": "…" }; the code is stable ASCII, the message is prose. ──────────────────────────────────────────────────────── Keys — anyone can take one. No identity. ──────────────────────────────────────────────────────── GET https://postapp.win/api/keys → { "challenge": "…", "bits": 21, "how": "…" } Find a nonce where sha256(".") begins with 21 zero bits (brute force; some seconds on an ordinary machine). POST https://postapp.win/api/keys { "challenge": "…", "nonce": "…", "name": "optional" } → { "key": "ak_…", "daily_cap": 50 } The plaintext key appears only in this response. One key issues up to 50 apps a day. The computation is what keeps this permissionless. If the office handed out keys, the office would be a gatekeeper. Keys are not bought and not applied for; they are computed. ──────────────────────────────────────────────────────── Publish ──────────────────────────────────────────────────────── POST https://postapp.win/api/put Authorization: Bearer ak_… { "html": "…" } → { "ok": true, "issued": "2026-07-24T09:14:03.000Z", ← time of issue "slug": "…", "name": "…", "tagline": "…", ← what was derived from the content "category": "…", "tags": […], "at": "https://.postapp.win/", ← live URL; this is the PWA "card": "https://postapp.win/a/", "source": "https://.postapp.win/source", "shot": "https://postapp.win/a//shot.jpg", ← real screenshot, captured on issue "connects": [], ← allowed hosts, printed on the card "permits": [], "flags": [], ← printed on the card as Remarks "sealed": true, ← nothing can be sent anywhere "author_key": "…" } ← appears only in this response Optional fields: url instead of html — fetch that page and serve a copy link_only with url, true — index it only; no copy, no install, no source name overrides the derived name tagline one line: what it does about two or three sentences slug lowercase letters, digits, hyphens. Names that could pass for someone else are refused category one of: tools / reading / writing / calc / play / learn / make / life / health / other tags how it is found. Up to 8 words a searching person would type — not restatements of the name: situations ("dinner party", "can't sleep"), verbs ("split", "measure"), spelling variants, and one or two English words icon_svg your own icon (SVG). The office renders it to PNG after issue, so home-screen icons work everywhere including iOS. Without it, a lettermark is derived from the name lang the language the app is written in (BCP 47, e.g. "en", "ja") One self-contained HTML file, up to 2 MB. Multiple files and zips: not yet. ──────────────────────────────────────────────────────── Replace · edit · remove ──────────────────────────────────────────────────────── POST https://postapp.win/api/a/ Authorization: Bearer ak_… ← the key that issued it { "action": "replace", "html": "…" } { "action": "edit", "tagline": "…" } ← any of: name tagline about category tags lang theme icon_svg { "action": "remove", "reason": "…" } With only an author_key, put { "key": "" } in the body. The address, and the icon on anyone's home screen, survive a replace. Every replace re-reads the code for destinations; new ones are printed on the card. Removal requires a reason. The reason is published verbatim, with the date, at https://postapp.win/removed. Removals by the office appear in the same ledger under the same rules. ──────────────────────────────────────────────────────── Read — no key required ──────────────────────────────────────────────────────── GET https://postapp.win/api/search?q=&sort=new|open → each result carries: at, source, connects, sealed, days (distinct days opened in 60), installs, opens — enough to decide, not just find GET https://postapp.win/export.json the whole sheet, as data GET https://.postapp.win/source any app, complete, as one file GET https://postapp.win/api.txt this document GET https://postapp.win/llms.txt this document + the live catalog ──────────────────────────────────────────────────────── MCP ──────────────────────────────────────────────────────── claude mcp add --transport http postapp https://postapp.win/mcp \ --header "Authorization: Bearer ak_…" Tools: publish_app / search_apps / remove_app Streamable HTTP JSON-RPC. No sessions. ──────────────────────────────────────────────────────── What happens to what you publish ──────────────────────────────────────────────────────── * One app, one origin. It stands at .postapp.win with a manifest, a service worker and icons added for you. It is installable without you writing anything. * Outbound network is blocked by default: connect-src 'self'; form-action 'none'; frame-ancestors 'none' Destinations found in the code are allowed automatically and printed on the card. Permission is not required. Lying is not possible. * URLs assembled at runtime (['exa','mple.com'].join('')) cannot be read. What cannot be read is blocked, and that call fails. Replace with the destination written out. * Camera, microphone, location: off by default. Only what the code demonstrably uses is opened, and it is printed on the card. * Addresses cannot carry someone else's name (paypal, apple-support — refused as words and as concatenations). * Pages are not search-indexed until the app is actually used, and every outward link is nofollow. Publishing here earns no backlinks. * The shelf has no ranking: it is shuffled on every visit. Entries opened on 3 different days in 60 carry an "in circulation" mark and print larger. The install count appears with the first install. Apps not opened for 90 days leave the shelf; the URL and the source stay live. * The shelf and the card show a real screenshot of the app, captured when it is issued (and re-captured on every replace). No icon or artwork needs to be authored for the shelf — the app's own face is its face. * iPhone cannot install programmatically (Safari offers no way). Two taps: Share → Add to Home Screen. The card says so. ──────────────────────────────────────────────────────── Take any app back whole: https://.postapp.win/source Take the whole sheet: https://postapp.win/export.json Point your own domain at the same file and this office is not needed. ──────────────────────────────────────────────────────── Live catalog (top 61 by rank; slug | name | what it does | url | network | usage) ──────────────────────────────────────────────────────── lindy-books | Lindy Books | 時代を生き延びた本だけを、静かに読む | https://lindy-books.org/ | talks: external site | 5d onemillioncheckboxes | One Million Checkboxes | A million checkboxes shared by everyone on the internet at once — check, uncheck, repeat | https://onemillioncheckboxes.com/ | talks: external site | 4d crontab | crontab.guru | Type a cron expression, get a plain-English explanation instantly. | https://crontab.guru/ | talks: external site | 4d supply-runway | Supply Runway | Days of supply, cost per milligram, and the date your vial runs out | https://supply-runway.postapp.win/ | talks: glp1.app | 3d labs | Chaotic Pendulum | A tweakable double-pendulum physics toy — drag the parameters and watch chaotic motion unf | https://labs.minutelabs.io/Chaotic-Pendulum/ | talks: external site | 3d thisissand | Thisissand | Click to pour colored digital sand that stacks and drifts like the real thing | https://thisissand.com/ | talks: external site | 3d heropatterns | Hero Patterns | Free repeatable SVG background patterns you can recolor and copy | https://heropatterns.com/ | talks: external site | 3d piskelapp | Piskel | Free browser-based editor for pixel art sprites and animations | https://www.piskelapp.com/ | talks: external site | 3d eggtimer | e.ggtimer | The internet's simplest countdown timer — type a time into the URL and go | https://e.ggtimer.com/ | talks: external site | 3d justtherecipe | JustTheRecipe | Paste a recipe-blog URL, get just the ingredients and steps back | https://www.justtherecipe.com/ | talks: external site | 3d quickdiff | QuickDiff | Paste two blocks of text, see exactly what changed between them | https://quickdiff.net/ | talks: external site | 3d monkeytype | Monkeytype | A minimalistic, highly customizable typing speed test | https://monkeytype.com/ | talks: external site | 3d bundlephobia | BundlePhobia | Type an npm package name, see exactly how much it costs your bundle. | https://bundlephobia.com/ | talks: external site | 3d cubic-bezier | cubic-bezier.com | Drag two control points, get a CSS cubic-bezier() easing curve. | https://cubic-bezier.com/ | talks: external site | 3d fern | Fern | 小さな店の公式サイトを1枚だけ作る | https://fern.yi525tokyo.workers.dev/ | talks: external site | 3d versa | Versa | 用途ごとに最適なAIモデルへ自動で振り分ける | https://versa.yi525tokyo.workers.dev/ | talks: external site | 3d yui | Yui | 貸し借りを記録して、お金なしで回す | https://yui-app.org/ | talks: external site | 3d stackedit | StackEdit | In-browser Markdown editor with live preview, no signup needed | https://stackedit.io/ | talks: external site | 2d colorable | Colorable | Live contrast-ratio checker for picking accessible text/background colors | https://colorable.jxnblk.com/ | talks: external site | 2d firecalc | FIRECalc | Stress-tests a retirement withdrawal plan against 150+ years of market history | https://firecalc.com/ | talks: external site | 2d modularscale | Modular Scale | Generates a proportional typography/spacing scale from a base size and ratio | https://www.modularscale.com/ | talks: external site | 2d explainshell | explainshell | Paste a shell command, get every flag and argument explained inline | https://explainshell.com/ | talks: external site | 2d regexper | Regexper | Turns a regular expression into a visual railroad diagram | https://regexper.com/ | talks: external site | 2d ciechanow | Mechanical Watch | Drag-and-explore WebGL explainer of how a mechanical watch actually works | https://ciechanow.ski/mechanical-watch/ | talks: external site | 2d ncase | The Evolution of Trust | A playable game-theory explainer on why trust breaks down and how it's rebuilt | https://ncase.me/trust/ | talks: external site | 2d pixelthoughts | Pixel Thoughts | Type a worry into a star and watch it shrink to nothing over 60 seconds | https://www.pixelthoughts.co/ | talks: external site | 2d pointerpointer | Pointer Pointer | Move your mouse anywhere and a photo of a stranger appears pointing at your cursor | https://pointerpointer.com/ | talks: external site | 2d sandspiel | Sandspiel | A falling-sand physics sandbox — place sand, water, fire, plant and watch them react | https://sandspiel.club/ | talks: external site | 2d favicon | Favicon.io | Generates a full favicon icon package from text, an image, or an emoji | https://favicon.io/ | talks: external site | 2d fffuel | fffuel | A hand-crafted set of free SVG generators for gradients, noise, patterns and shapes | https://www.fffuel.co/ | talks: external site | 2d textpaint | TextPaint | A drawing canvas where the 'ink' is text, ASCII, Unicode, or emoji | https://textpaint.com/ | talks: external site | 2d asciiflow | ASCIIFlow | Draw simple diagrams and flowcharts using ASCII characters | https://asciiflow.com/ | talks: external site | 2d jspaint | JS Paint | A faithful MS Paint clone that runs entirely in your browser | https://jspaint.app/ | talks: external site | 2d protectedtext | ProtectedText | A free encrypted notepad — pick a page name, set a password, write | https://www.protectedtext.com/ | talks: external site | 2d xkpasswd | XKPasswd | Generates strong, memorable passphrases, XKCD-comic style | https://www.xkpasswd.net/ | talks: external site | 2d bryanbraun | Your Life in Weeks | Enter your birthday, see your whole life laid out as a grid of weeks | https://www.bryanbraun.com/your-life/weeks.html | talks: external site | 2d carbon | Carbon | Paste code, get a beautifully styled screenshot to share. | https://carbon.now.sh/ | talks: external site | 2d uigradients | uiGradients | Browse a huge library of CSS gradients and copy the code with one click. | https://uigradients.com/ | talks: external site | 2d whocanuse | WhoCanUse | Pick two colors, see if they're readable for people with various vision impairments. | https://www.whocanuse.com/ | talks: external site | 2d blobmaker | Blobmaker | Generates a random organic blob shape you can copy as SVG code. | https://www.blobmaker.app/ | talks: external site | 2d patorjk | Text to ASCII Art Generator | Type text, instantly get ASCII-art banner output in dozens of fonts. | https://patorjk.com/software/taag/ | talks: external site | 2d epochconverter | Epoch Converter | Converts Unix timestamps to human dates and back, instantly. | https://www.epochconverter.com/ | talks: external site | 2d astexplorer | AST Explorer | Paste code, see its parsed syntax tree live, pick your parser. | https://astexplorer.net/ | talks: external site | 2d transform | Transform | Paste code in one format (SVG, JSON, GraphQL...), get it converted to another. | https://transform.tools/ | talks: external site | 2d easings | easings.net | Visual cheat-sheet of every CSS/JS easing function with copyable code. | https://easings.net/ | talks: external site | 2d setosa | Markov Chains, explained visually | Interactive playground for building and watching Markov chains run | https://setosa.io/ev/markov-chains/ | talks: external site | 1d everynoise | Every Noise at Once | An algorithmically generated, clickable scatter-map of 1000+ music genres | https://everynoise.com/ | talks: external site | 1d weavesilk | Silk | Draw with your mouse and it turns into flowing, symmetrical generative art | http://weavesilk.com/ | talks: external site | 1d realtimecolors | Realtime Colors | Preview a color palette live on a mock website as you pick it | https://www.realtimecolors.com/ | talks: external site | 1d ascii-magic | ASCII Magic | Turns any photo or video into ASCII art, pixel art, or glitch art in-browser | https://www.ascii-magic.com/ | talks: external site | 1d zenpen | ZenPen | A blank page that blurs everything except the sentence you're writing | https://zenpen.io/ | talks: external site | 1d quicktodolist | Quick Todo List | A fast to-do list you can start typing into immediately, no account | https://quicktodolist.com/ | talks: external site | 1d asoftmurmur | A Soft Murmur | Mix ambient sounds (rain, fire, waves, coffee shop) to focus or relax | https://asoftmurmur.com/ | talks: external site | 1d cryptii | Cryptii | Chain together encodings and ciphers (Base32, Morse, hex, etc.) in the browser. | https://cryptii.com/ | talks: external site | 1d haikei | Haikei | Generate and download unique SVG blobs, waves, and background shapes. | https://app.haikei.app/ | talks: external site | 1d jsoncrack | JSON Crack | Turns JSON/YAML/CSV/XML into an interactive, explorable graph. | https://jsoncrack.com/ | talks: external site | 1d bricolage | Bricolage | 論文を探して、読める言語で読む | https://bricolage.science/ | talks: external site | 1d window-swap | WindowSwap | Watch a real 10-minute window view from a random stranger's home somewhere in the world | https://window-swap.com/ | talks: external site shapedivider | Shape Divider App | Generates responsive SVG section dividers (waves, tilts, curves) for web pages | https://www.shapedivider.app/ | talks: external site weektodo-planner | WeekToDo | A minimalist weekly planner and to-do list, usable right in the browser | https://app.weektodo.me/ | talks: external site svgomg | SVGOMG | Drop in an SVG, drag sliders, download the minified version. | https://svgomg.net/ | talks: external site