stacktree-mcp
MCP server for stacktr.ee. Publish HTML artifacts from any MCP client (Claude Desktop, Claude Code, Cursor, Continue, etc).
Install
Add to your MCP client config:
{
"mcpServers": {
"stacktree": {
"command": "npx",
"args": ["-y", "stacktree-mcp"],
"env": { "STACKTREE_API_KEY": "stk_live_..." }
}
}
}
Generate an API key at https://app.stacktr.ee.
Tools
publish_html | Publish HTML; returns { url, id, expires_at, ... }. |
update_site | Replace the HTML of an existing site in place; URL is preserved. |
get_site | Read a site's current HTML source — edit it, then update_site. |
delete_site | Hard delete a site. |
set_password | Add or clear a basic-auth password. |
set_expiry | Set hours-from-now expiry, or null for never. |
set_email_gate | Restrict viewers to an email domain (one-time magic-link verify). |
set_agentation | Toggle the on-page Agentation feedback toolbar. |
list_sites | List sites owned by this API key. |
link_wallet | Link your wallet so pages you publish are owned by your account. |
Linking a wallet
If your agent pays for publishes from its own wallet (x402 / MPP), link that wallet to your Stacktree account so every page it publishes — past and future — is owned there:
- Your human generates a link code at https://app.stacktr.ee/wallets.
link_wallet({ code }) → returns the exact message to sign.
- Sign it with your wallet (
personal_sign).
link_wallet({ code, wallet, signature }) → links the wallet and adopts the pages it already published.
Privacy defaults
Every site gets an unguessable https://stacktr.ee/p/{token}/ URL. Pass public_slug to opt into https://{slug}.stacktr.ee/.
pii_check defaults to block — uploads matching common secrets and PII shapes (emails, SSNs, credit cards, OpenAI/GitHub/Stripe API-key prefixes) are refused. Pass warn to publish anyway (matches are flagged in the response), or off to skip the scan.