# StaticX > API-token-first deployment for static websites. > > Humans use the dashboard. > AI agents use the API, CLI, MCP server, and scoped tokens. Append `.md` to any product page or documentation page URL for a Markdown version. Examples: http://staticx.site/react-hosting.md http://staticx.site/documentation/api.md ## Machine-readable files - Canonical OpenAPI: http://staticx.site/openapi.json - API v1 OpenAPI alias: http://staticx.site/api/v1/openapi.json - The OpenAPI alias is byte-identical to the canonical file. - Full agent playbook: http://staticx.site/llms-full.txt - API base URL: http://staticx.site/api/v1 ## MCP package - npm package: staticx-mcp-server - GitHub: https://github.com/madprodworks-coder/staticx-mcp-server - npm: https://www.npmjs.com/package/staticx-mcp-server ## Human docs - Each documentation page below also has a `.md` Markdown twin. - Overview: http://staticx.site/documentation - API reference (+ .md): http://staticx.site/documentation/api http://staticx.site/documentation/api.md - CLI guide (+ .md): http://staticx.site/documentation/cli http://staticx.site/documentation/cli.md - MCP quick start (+ .md): http://staticx.site/documentation/mcp http://staticx.site/documentation/mcp.md - MCP clients (+ .md): http://staticx.site/documentation/mcp-clients http://staticx.site/documentation/mcp-clients.md - MCP tools (+ .md): http://staticx.site/documentation/mcp-tools http://staticx.site/documentation/mcp-tools.md - Agent guide (+ .md): http://staticx.site/documentation/agents http://staticx.site/documentation/agents.md - DNS Connect (+ .md): http://staticx.site/documentation/cloudflare-connect http://staticx.site/documentation/cloudflare-connect.md ## Product features - GitHub Action: http://staticx.site/github-action - JavaScript Apps: http://staticx.site/javascript-apps - Analytics: http://staticx.site/website-analytics - Airtable workflows: http://staticx.site/airtable - HTML File Upload: http://staticx.site/html-file-upload - Free Website Hosting: http://staticx.site/free-website-hosting - Free Image Hosting: http://staticx.site/image-hosting - Static Website Form: http://staticx.site/static-form - Upload PDF Online: http://staticx.site/upload-pdf - Free Zip File Hosting: http://staticx.site/host-zip ## Developer tools - HTML Encode: http://staticx.site/html-encode - HTML Decode: http://staticx.site/html-decode - HTML Viewer: http://staticx.site/html-viewer - HTML to Markdown: http://staticx.site/html-to-markdown - Markdown to HTML: http://staticx.site/markdown-to-html - JSON Beautifier: http://staticx.site/json-beautifier - JSON to XML: http://staticx.site/json-to-xml - XML to JSON: http://staticx.site/xml-to-json - SSL Checker: http://staticx.site/ssl-checker - URL Parser: http://staticx.site/url-parser - HTML Formatter: http://staticx.site/html-formatter - HTML Minifier: http://staticx.site/html-minifier - HTML Validator: http://staticx.site/html-validator - HTML Tester: http://staticx.site/html-test - CSS Minifier: http://staticx.site/css-minifier - CSS Formatter: http://staticx.site/css-formatter - JS Minifier: http://staticx.site/js-minifier - JS Formatter: http://staticx.site/js-formatter - JSON Validator: http://staticx.site/json-validator - DNS Lookup: http://staticx.site/dns-lookup ## AI builder hosting - Claude Hosting: http://staticx.site/claude-hosting - ChatGPT Hosting: http://staticx.site/chatgpt-hosting - Gemini Hosting: http://staticx.site/gemini-hosting - Replit Hosting: http://staticx.site/replit-hosting - Cursor Hosting: http://staticx.site/cursor-hosting - Lovable Hosting: http://staticx.site/lovable-hosting - bolt.new Hosting: http://staticx.site/bolt-new-hosting - v0 Hosting: http://staticx.site/v0-hosting - Manus Hosting: http://staticx.site/manus-hosting - Kimi Hosting: http://staticx.site/kimi-hosting ## Framework hosting - React Hosting: http://staticx.site/react-hosting - Node.js Hosting: http://staticx.site/nodejs-hosting - Next.js Hosting: http://staticx.site/nextjs-hosting - Angular Hosting: http://staticx.site/angular-hosting - Vue Hosting: http://staticx.site/vue-hosting - Express Hosting: http://staticx.site/express-hosting - Astro Hosting: http://staticx.site/astro-hosting - Bootstrap Hosting: http://staticx.site/bootstrap-hosting - Designmodo Hosting: http://staticx.site/designmodo-hosting ## Auth rules - Use `Authorization: Bearer STATICX_API_TOKEN`. - Prefer site-scoped tokens for one-site automation. - Prefer workspace-scoped tokens for team or client workspaces. - Never print, log, commit, or return real token values. ## Deployment rules - Archive root must contain `index.html` or `index.htm`. - Archive root must contain `404.html`. - Upload files or a ZIP before publishing a deployment. - Publish with `POST /projects/{project}/deployments`. - Deployment creation is asynchronous: the POST returns the deployment with `status=running`. - Poll `GET /projects/{project}/deployments/{deployment}` until `status` is `succeeded` or `failed`. - Sites default to `versioned_history`: each publish creates a rollback-ready release. - Sites can disable deployment history with `versioning_enabled=false` on create, update, or deploy. - When history is disabled, StaticX keeps one baseline release so analytics, forms, and live serving still work. - Explain write actions before calling them. - Ask for explicit confirmation before rollback or deletion. - If the API returns `PLAN_QUOTA_EXCEEDED`, stop and show the exact message. ## Domain rules - API, CLI, and MCP custom domain tools use the manual one-record DNS flow. - Use `POST /projects/{project}/domain` to start manual setup and return the DNS record. - Use `GET /projects/{project}/domain` to read DNS, SSL, and activation status. - DNS Connect requires browser authorization in the StaticX dashboard. - Agents must not claim they can authorize an external DNS provider silently. - Publishing domains are account settings for future generated site URLs. - Existing site URLs stay unchanged until changed individually. - In the dashboard, Site Settings -> Domain can save a free subdomain on the StaticX default domain. - The same dashboard control can save it on any active account publishing domain. - Generated subdomain names are unique per domain suffix, not globally across every suffix. - API, CLI, and MCP currently expose exact custom-domain setup. - The generated-subdomain suffix selector is dashboard-only. ## Indexing (SpeedyIndex) - Submit and check site URLs against search engines using the account owner's SpeedyIndex key. - The key is set per owning user in Settings -> Indexing and is never returned by the API. - Engines: indexer = google|yandex (bing has NO indexer); checker = google|yandex|bing. - `GET /indexing/balance`: owner SpeedyIndex balance { tokens, indexer, checker }. - `GET /indexing/pages?engine=&status=&site=&workspace=&page=`: account-wide page inventory. Default engine=google, default status=unchecked, status=all returns every status. - `POST /projects/{project}/indexing/submit`: body { engine?=google, type?=indexer, urls? }. Omit urls to submit the sitemap-diff set. Idempotent. Returns { created, submitted, est_tokens }. - `POST /projects/{project}/indexing/check`: body { engine?=google, urls? }. Repeatable. - `GET /projects/{project}/indexing/tasks` and `.../tasks/{task}`: task status + per-URL report. - Indexing error_code values (machine-readable, in the JSON body): no_key (401): no key connected — connect a key in Settings -> Indexing. insufficient_balance (402): top up SpeedyIndex credits. engine_unsupported (422): e.g. bing+indexer; pick a supported engine/type. rate_limited (429): wait and retry. server (502): SpeedyIndex upstream error; retry later. ## Plan limits - Free: 1 site, 500 MB total storage, 500 MB max upload, 1,000 form entries, 1 team seat, last 5 rollback versions. - Plus: 15 sites, 10 GB storage, 50 GB max upload, 20,000 form entries, 5 team seats, last 10 rollback versions. - Pro: 100 sites, 20 GB storage, 50 GB max upload, 100,000 form entries, 10 team seats, last 50 rollback versions. - Unlimited: custom sites, storage, form entries, team seats, and rollback history, with 50 GB max upload. - Upload and storage limits are enforced by the API, CLI, MCP, dashboard, URL import, and hosted form runtime. ## Form rules - StaticX Forms works with normal HTML forms. - Add `data-staticx-form` to each form to collect entries. - Use `data-staticx-form-id="contacts"` only when needed. - Do not wire the form to a custom backend endpoint. - Do not manually add the StaticX script or submit action. - StaticX adds the action, honeypot, and same-page script. - Free plan form collection is capped by the account-level 1,000 stored entries limit. - Optional attributes: `data-staticx-success-message` `data-staticx-error-message` `data-staticx-redirect`