Authenticated tools (reserve, upload, clear, release) require a token. Sign in, then copy the token below and add it to your MCP client as Authorization: Bearer <token>.
Copy this token and add it to your MCP client (e.g. Cursor) as a header: Authorization: Bearer <token>
Your site API key
Embed this key in your static site and call https://api.demo.st/v1 with Authorization: Bearer dk_.... Shown only if you have a reserved subdomain and the document API is configured.
Reserve a subdomain first to get a site API key.
How to add demo.st MCP in your agent
Sign in on this site (register if needed).
Open this MCP page while signed in and copy your MCP token from the section above (or open GET /api/mcp/token in the browser and copy token from the JSON).
In your MCP client (e.g. Cursor): add a new MCP server with URL = the endpoint above (e.g. ).
Add a header: Authorization = Bearer <your token> (paste the token you copied).
Restart or reload the MCP client. You can then reserve a subdomain, upload a zip, and use document API tools (get_site_api_key, collections, records).
Example config (e.g. Cursor .cursor/mcp.json): {"mcpServers":{"demo-st":{"url":"<endpoint>","headers":{"Authorization":"Bearer <token>"}}}}
Transport
Streamable HTTP — POST to the endpoint URL. For reserve, upload, clear, and release you must send Authorization: Bearer <token> on every request (token from step 2 above).
Hosting
Subdomain hosting is static files (HTML, CSS, JavaScript, images) via Nginx — no PHP or custom backends. For data, use the optional document API at https://api.demo.st/v1 with a per-site public key from get_site_api_key.
Document API
After reserving a subdomain, get your site key (below or via get_site_api_key). From your site, call https://api.demo.st/v1/:collection with Authorization: Bearer dk_.... Collections are created automatically on first use. Isolation is by site key (Postman without your key cannot read your data). Browser CORS also requires Origin https://{your-subdomain}.demo.st.
const API = 'https://api.demo.st/v1';
const KEY = 'dk_...'; // from this page or get_site_api_key
fetch(API + '/todos', {
method: 'POST',
headers: { Authorization: 'Bearer ' + KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ title: 'Ship it', done: false })
});
Tools
check_subdomain_availability — Check if a subdomain name is available (no token).
reserve_subdomain — Reserve a subdomain (requires token).
upload_site — Upload a .zip as site content; use file_url for a public zip URL (requires token).
list_records / upsert_record / delete_record — Manage records via MCP (requires token).
For agents (AI clients)
Use GET /.well-known/mcp or GET /mcp.json for the endpoint URL and auth details. Call POST /mcp with Streamable HTTP. Authenticated tools require the user to add an MCP token: the user must sign in on this site, obtain a token (e.g. from GET /api/mcp/token), and configure the client to send Authorization: Bearer <token> on every request. Without that header, reserve/upload/clear/release will fail with a message telling the user to get a token.