diff --git a/.planning/phases/02-v1-launch-deployment/02-01-SUMMARY.md b/.planning/phases/02-v1-launch-deployment/02-01-SUMMARY.md new file mode 100644 index 0000000..2b85b95 --- /dev/null +++ b/.planning/phases/02-v1-launch-deployment/02-01-SUMMARY.md @@ -0,0 +1,141 @@ +# SquareMCP v1 Launch Deployment — Execution Summary + +**Date:** 2026-06-12 +**Phase:** 02-v1-launch-deployment +**Commit:** `bc58bef` +**Branch:** main +**Executor:** kimi-cli + +--- + +## What was deployed + +### 1. hermes-mcp API (`hermes.squaremcp.com`) +**Image:** `localhost:32000/hermes-mcp@sha256:1ada6f03a81ad53cd3b641b8934ae99e1a29651ac05f0bb7fbed790bb9f9d1ed` + +**Changes:** +- Added 4 Obsidian endpoints to `getOpenApiSpecChatGPT()` in `src/manifest.ts`: + - `GET /api/obsidian/search` + - `GET /api/obsidian/note` + - `PUT /api/obsidian/note` + - `POST /api/obsidian/note/append` + - `GET /api/obsidian/sync` +- Updated ChatGPT OpenAPI description to mention Obsidian, email, and social +- Updated OAuth login subtitle: "One login connects Claude and ChatGPT to your notes, email, and social accounts." +- Fixed `src/Dockerfile` to copy `scripts/` before `npm install` (postinstall `patch-imapflow.cjs` was failing builds) + +**Live verification:** +- `GET /health` → 200, toolCount 55 +- `GET /openapi-chatgpt.json` → 33 paths, Obsidian paths present +- `GET /api/obsidian/search?query=SquareMCP` → returns notes successfully + +### 2. product/site (`squaremcp.com`) +**Image:** `localhost:32000/squaremcp-site@sha256:e07e2020651f058136048e73052b8680caede18bb17596383060c3648900276b` + +**Changes:** +- Added consumer hero section above enterprise hero (mortgage broker / SMB angle) +- Added Twilio logo asset `squaremcp-logo-256.bmp` (256x256, 262KB) +- Updated `Dockerfile` + `server.mjs` to serve BMP with `image/x-ms-bmp` MIME type + +**Live verification:** +- `https://squaremcp.com` contains `consumer-hero` section +- `https://squaremcp.com/squaremcp-logo-256.bmp` → 200, `image/x-ms-bmp` + +### 3. product/app (`app.squaremcp.com`) +**Image:** `localhost:32000/squaremcp-app@sha256:c2bc1ee1bd6eed3981c6cf4c253d61cc1022373720f65debaea03dd8b53ed494` + +**Changes:** +- Added Obsidian card to platform grid +- Reordered platforms: v1 platforms first (Obsidian, Email, Facebook, Instagram) +- Added onboarding banner +- Updated welcome copy and CTA + +**Live verification:** +- `https://app.squaremcp.com` contains "Obsidian" card + +### 4. Infrastructure / K8s +**Manifests updated:** +- `hermes-k8s.yaml` — hermes-mcp image SHA + added `FACEBOOK_DEFAULT_*` and `INSTAGRAM_DEFAULT_*` env var placeholders +- `product/site/squaremcp-k8s-ingress.yaml` — squaremcp-site image SHA +- `product/app/app-k8s.yaml` — squaremcp-app image SHA + +**Applied:** all three manifests to `fetcherpay` namespace. All pods healthy. + +### 5. Twilio WhatsApp webhook (Alex Ferrari pilot prep) +- Configured Messaging Service `MG17ba9689810cc62a20f2bab0cc857035` inbound webhook to `https://hermes.squaremcp.com/webhook/twilio/whatsapp` +- Configured phone number `+19547385805` SMS URL to same webhook +- Verified webhooks return 403 on unsigned requests (correct fail-closed behavior) + +--- + +## What is blocked / remaining + +### Action 3 — Facebook + Instagram credentials +**Status:** BLOCKED — waiting on user + +Current `FACEBOOK_DEFAULT_ACCESS_TOKEN` is expired (expired 2026-05-12). Instagram credentials are empty placeholders. + +**Needed from Facebook Developer Console → Graph API Explorer:** +- Page access token with scopes: `pages_manage_posts`, `pages_read_engagement`, `pages_show_list`, `instagram_basic`, `instagram_content_publish` +- `GET /me/accounts?fields=name,id,instagram_business_account{username,id}` +- Values to deploy: + - `FACEBOOK_DEFAULT_ACCESS_TOKEN` + - `INSTAGRAM_DEFAULT_ACCESS_TOKEN` (same token) + - `INSTAGRAM_DEFAULT_BUSINESS_ACCOUNT_ID` + - `FACEBOOK_DEFAULT_PAGE_ID` (likely unchanged: `1152192567968569`) + +**Optional for v1.1:** `FACEBOOK_APP_ID` + `FACEBOOK_APP_SECRET` to enable long-lived token exchange. + +### Action 4 — Create ChatGPT Custom GPT +**Status:** PENDING — blocked by Action 3 (needs working Facebook/Instagram to test) + +Requires manual browser work in ChatGPT UI: +- Schema URL: `https://hermes.squaremcp.com/openapi-chatgpt.json` +- OAuth client ID/secret from `hermes-k8s.yaml` + +### Action 5 — Apply to Claude.ai marketplace +**Status:** PENDING — blocked by Action 3 + +Requires manual browser work in Claude.ai UI. Also still needs a 512×512 logo. + +--- + +## Verification commands + +```bash +# Health +curl https://hermes.squaremcp.com/health + +# OpenAPI spec includes Obsidian +curl https://hermes.squaremcp.com/openapi-chatgpt.json | jq '[.paths | keys[] | select(startswith("/api/obsidian"))]' + +# Obsidian search works +curl -H "x-api-key: $MCP_API_KEY" "https://hermes.squaremcp.com/api/obsidian/search?query=SquareMCP&limit=2" + +# Site consumer hero +curl -s https://squaremcp.com | grep consumer-hero + +# App Obsidian card +curl -s https://app.squaremcp.com | grep Obsidian + +# Facebook still broken until token refresh +curl -H "x-api-key: $MCP_API_KEY" https://hermes.squaremcp.com/api/facebook/page +``` + +--- + +## Files changed in this deployment + +``` +hermes-k8s.yaml +product/app/app-k8s.yaml +product/app/index.html +product/site/Dockerfile +product/site/index.html +product/site/server.mjs +product/site/squaremcp-k8s-ingress.yaml +product/site/squaremcp-logo-256.bmp +src/Dockerfile +src/index.ts +src/manifest.ts +```