Skip to content
PURE

the one source of truth for publishing · share with the teamPURE Deploy Playbook

Command Center

TL;DR — one call publishes

Publishing PURE to acquisto.biz is a single MCP call: release.publish. It ships to Netlify (live in ~1 min), writes a backup/restore row, and mirrors a copy to GitHub. There is no manual git step, no nested-folder trap, no "which repo" confusion.

release.publishone MCP call Netlify APIgoes LIVE registry rowbackup + rollback GitHub mirrorcold backup
Source of truth = the live Netlify deploy + pure_deploy_registry. GitHub (puremls) is just the cold mirror now — out of the critical path.

The architecture

PieceRole
acquisto.bizThe one public site (static HTML on Netlify). app.acquisto.biz is retired.
pure-mcp Edge FunctionThe publisher + backend. Tools: board.*, memory.*, qa.*, release.*. Every call is audited to audit_log.
Netlify APIPRIMARY release.publish ships files straight here — what's live.
pure_deploy_registryEvery deploy = one row (label, deploy id, url, rollback ref, who, when). The restore points.
GitHub [email protected]COLD MIRROR a full copy committed as backup. If it fails, the deploy still succeeded.

Publish — release.publish

Call the MCP server with your bearer token. Pass a label and the files you want live.

POST https://mbnakfrkfwxinhxlisyq.supabase.co/functions/v1/pure-mcp
Headers:
  apikey: <anon key>
  Authorization: Bearer <anon key>
  x-mcp-key: <your MCP token>
Body:
  { "tool": "release.publish",
    "args": { "label": "my-update",
              "files": { "lane-b/PURE Command Center.html": "<full html>", ... } } }

Returns: netlify_deploy_id, deploy_url, and the mirror status. The registry row is written automatically.

Critical: a Netlify deploy is a full-site manifest. The files you pass become the entire site for that deploy — anything omitted is dropped from that deploy. Always include the complete file set you want live (or use the Batch method below, which assembles the full set). For a single-page tweak, prefer the git path in Manual fallback, which rebuilds the whole repo.

Batch update — the standard each time

To update many pages at once, build the full files object and publish once:

  1. Gather every changed page's HTML into one files map (path contents).
  2. Include unchanged-but-required pages too, or run the git-rebuild path so Netlify pulls the full repo.
  3. Call release.publish with a clear label (e.g. "batch-2026-06-19").
  4. Confirm the returned deploy_url, then check acquisto.biz.
  5. The registry row is your rollback point.
Rule of thumb: many files at once release.publish with the full set. One small page git push (auto-rebuilds the whole repo, nothing dropped).

Revert / rollback — release.revert

Every deploy is restorable. Roll back to any prior deploy id:

{ "tool": "release.revert", "args": { "to_ref": "<netlify_deploy_id from the registry>" } }

It restores that exact deploy on Netlify and logs a new registry row. Find the id you want via release.list.

List & status

{ "tool": "release.list",   "args": { "limit": 15 } }    recent deploys (label, url, status, who)
{ "tool": "release.status", "args": {} }                 current live deploy id + autopilot state

The backup registry

pure_deploy_registry is the permanent record — one row per publish/revert with the rollback ref. It's also visible in the Command Center Releases tab (sortable deploy-log table). This is the "we can't lose anything" guarantee: any past state is one release.revert away.

Hard rules (learned the hard way)

  • DON'T push to pure-deploy expecting it to publish — no Netlify site watches it. Production repo is [email protected].
  • DON'T release.publish a partial files set thinking it's an incremental patch — it replaces the whole deploy.
  • DON'T nest index.html in a subfolder — it must be at repo root.
  • DO keep the MCP token secret (verify_jwt:false, so the bearer is the only guard). Rotate it if it's ever shown.
  • DO verify the deploy_url and check acquisto.biz after every publish.

Manual fallback (git path)

If the MCP server is ever unavailable, publish by committing to [email protected] at repo root — Netlify auto-builds the full repo. This is the safe path for a single-page change because the whole site rebuilds (nothing dropped).

commit changed files  [email protected]  Netlify auto-build  live

Reference / IDs

Live siteacquisto.biz
MCP endpointhttps://mbnakfrkfwxinhxlisyq.supabase.co/functions/v1/pure-mcp
Netlify Site ID245e35a8-a530-4d31-84c3-d0e94904380d
Production repogithub.com/puremlstech/puremls · branch Testin.MikeSupabase
Supabase projectmbnakfrkfwxinhxlisyq
Auditaudit_log (every MCP call) · pure_deploy_registry (every deploy)

This document is the canonical deploy reference, also saved in pure_memory.deploy_playbook. Linked from the Command Center.