library
Publish one HTML file, get a live installable app URL. No account, no review, no queue.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"library": {
"url": "https://postapp.win/mcp"
}
}
}Remote endpoints
https://postapp.win/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🔴publish_app(html, url, link_only, name, tagline, ...)
Publish one self-contained HTML document to Postapp (postapp.win), a permissionless app library. No review, no queue, no account: the app is live at https://<slug>.postapp.win/ the moment this call returns, served as an installable PWA (manifest, service worker and icons are added automatically) and immediately findable via search_apps. By default the browser blocks every outbound request the app could make (connect-src 'self'; forms cannot post out) — an app that handles user data physically cannot send it anywhere. Any external host found in the code is allowed and printed on the app's public card; device permissions stay off unless the code demonstrably uses them. Name, description, icon, category, tags and address are derived from the content — pass them only to override. Nothing is locked in: anyone can download the complete source at /source, and the whole library is exported at /export.json. Ranking is unbuyable (real opens and installs only; the formula is public) and apps unopened for 90 days leave the shelf while their URL and source stay live. Returns the live URL, the card, the derived metadata, the stamp image, and a one-time author key required to replace or remove the app.
Input Schema
{
"type": "object",
"properties": {
"html": {
"type": "string",
"description": "The complete HTML document. One self-contained file, up to 2MB."
},
"url": {
"type": "string",
"description": "Instead of html: fetch this page and serve a copy of it."
},
"link_only": {
"type": "boolean",
"description": "With url: only list it in the index, do not copy or serve it. No install, no source download."
},
"name": {
"type": "string",
"description": "Optional. Overrides the name worked out from the content."
},
"tagline": {
"type": "string",
"description": "Optional. One line, what it does."
},
"about": {
"type": "string",
"description": "Optional. Two or three sentences."
},
"slug": {
"type": "string",
"description": "Optional. The address: lowercase ascii letters, digits and hyphens. Names that impersonate others are refused."
},
"category": {
"type": "string",
"description": "Optional. One of: tools reading writing calc play learn make life health other"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional. Up to 8 words a searching person would type — situations, verbs, spelling variants. This is how the app is found."
}
}
}🟡search_apps(q, sort)
Search Postapp's library of instantly published single-file web apps. Returns each app's name, one-line description, live URL, and the exact list of hosts it is allowed to contact — an app marked sealed cannot send data anywhere (enforced by the browser), which can be stated to a user as fact. Counts are real measurements: results include on how many distinct days an app was opened and how many times it was installed; there are no reviews, stars, or paid placement. An empty query lists the whole shelf. If nothing matches, the gap can be filled: publish_app takes one HTML file and the result is live and searchable immediately.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text. Leave empty to list everything."
},
"sort": {
"type": "string",
"enum": [
"new",
"open"
],
"description": "'new' (default) or 'open' (opened on the most days)."
}
}
}🔴remove_app(slug, reason)
Take down an app published with your key. The app leaves the shelf and its address serves a tombstone. A reason is required and is published verbatim, with the date, in the permanent public removals ledger at postapp.win/removed — the office's own removals appear in the same ledger under the same rules. Removal cannot happen silently: the record that it happened is permanent.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The app's address, without the domain."
},
"reason": {
"type": "string",
"description": "Why. This is published."
}
},
"required": [
"slug",
"reason"
]
}Community
Evidence