{
  "markdown": "<div align=\"center\">\n\n# Temway MCP Server\n\n**Let your AI assistant design beautiful emails & layouts — in your Temway workspace.**\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server that turns Claude, ChatGPT, Cursor and friends into a visual email & layout authoring studio.\n\n[![MCP](https://img.shields.io/badge/MCP-Streamable%20HTTP-6f42c1)](https://modelcontextprotocol.io)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n[![Status](https://img.shields.io/badge/endpoint-live-brightgreen)](https://mcp.temway.com/health)\n\n[Getting Started](#getting-started) · [Clients](#configure-your-client) · [Tools](#tools) · [Temway](https://temway.com)\n\n</div>\n\n---\n\nTemway is a visual builder for **emails** and **layouts**. This MCP server exposes\nyour Temway workspace to any MCP-compatible AI client: the model reads your brand\ntokens, drafts a promo / newsletter / welcome email, previews it, publishes it,\nand even sends a test — all through natural language. **No code, no drag-and-drop,\nno copy-pasting HTML.**\n\nIt is a **hosted remote** MCP server. You point your client at a URL with an API\nkey (or OAuth for web clients) — there is **nothing to install, build, or run\nlocally**. The server speaks the MCP **Streamable HTTP** transport.\n\n> 🔒 **No source here? Correct.** This is the public onboarding repo for the\n> Temway MCP server. The server is operated by Temway and runs at\n> `https://mcp.temway.com/mcp`. This repo holds client configuration, tool\n> reference, and connectivity helpers. Report issues / request tools in\n> [Issues](https://github.com/temway/mcp-server/issues).\n\n## How it works\n\n```\nYour AI client (Claude / ChatGPT / Cursor / Desktop)\n  └─ MCP over HTTPS  →  https://mcp.temway.com/mcp\n                         Authorization: Bearer tmw_live_…   ← API key\n                         (or OAuth token for web connectors)\n                              └─ Temway public API  →  your workspace\n```\n\nThe model authenticates per-request, then drives your workspace through\nbrand-aware templates, block mutations, layout artwork, live previews, and\npublishing.\n\n## Getting started\n\n### 1. Get an API key\n\nAPI keys are minted by a team admin in the Temway dashboard. The key:\n\n- starts with `tmw_live_…`\n- is bound to **one workspace**\n- carries **scopes** (`emails:read`, `emails:write`, `layouts:read`,\n  `layouts:write`) that gate which tools succeed\n\nStore it securely — it's shown **once**.\n\n### 2. Point your client at the server\n\nThe endpoint and a ready-to-paste config for each client are in\n[`examples/`](./examples). The short version:\n\n```bash\n# Claude Code\nclaude mcp add --transport http temway https://mcp.temway.com/mcp \\\n  --header \"Authorization: Bearer tmw_live_xxxxxxxxxxxxxxxx\"\n```\n\nThat's it. The workspace is derived from the key.\n\n### 3. Ask your assistant\n\n> *\"Create a promo email for our summer sale, 25% off, brand colors, a big CTA\n> button, preview it, then publish it.\"*\n\nThe model will `get_branding` → `create_email` → `apply_template` →\n`update_block` → `preview_email_web` → `publish_email` for you.\n\n## Configure your client\n\nThe Temway server speaks the **Streamable HTTP** transport. Pick your client:\n\n| Client | Config | File |\n|--------|--------|------|\n| **Claude Code** | `claude mcp add --transport http …` | [`examples/claude-code.md`](./examples/claude-code.md) |\n| **Claude Desktop** | `mcpServers` JSON | [`examples/claude-desktop.json`](./examples/claude-desktop.json) |\n| **claude.ai** (web) | OAuth connector URL | [`examples/claude-ai-web.md`](./examples/claude-ai-web.md) |\n| **ChatGPT** | OAuth connector URL | [`examples/chatgpt.md`](./examples/chatgpt.md) |\n| **Cursor** | MCP settings | [`examples/cursor.md`](./examples/cursor.md) |\n| **Any MCP client** | Streamable HTTP URL | [`examples/generic.json`](./examples/generic.json) |\n\n### Authentication\n\nTwo credential types — both resolve onto the same workspace context:\n\n- **`tmw_live_…` API keys** — for desktop & programmatic clients (Claude Code,\n  Claude Desktop, Cursor, scripts). Sent as `Authorization: Bearer tmw_live_…`.\n  The workspace is derived from the key. Scope-bound.\n- **OAuth 2.1** — for hosted web connectors (claude.ai, ChatGPT) that reject\n  static keys. No header to paste — the user signs in and picks a workspace on\n  the consent screen; the connector receives its own short-lived token (PKCE /\n  S256). Just enter the URL `https://mcp.temway.com/mcp`.\n\n## Tools\n\nThe server exposes **58 tools** across five groups. Reads need a `*:read`\nscope; mutations need `*:write`.\n\n<details>\n<summary><strong>Discovery &amp; context</strong> — brand tokens, schemas, catalogs</summary>\n\n| Tool | What it does |\n|------|--------------|\n| `get_branding` | Fetch workspace brand tokens (colors, fonts, logo, socials, footer). |\n| `list_block_types` / `get_block_schema` | Email block catalog + per-block editable fields. |\n| `list_layout_element_types` / `get_element_schema` | Layout element catalog + fields. |\n| `get_universal_schema` | Global email style fields. |\n| `list_templates` | Curated email starter templates. |\n| `list_fonts` | Usable fonts (web-safe for emails; + Google/custom for layouts). |\n| `list_concepts` / `get_concept` | Mental-model concept docs (read before authoring). |\n| `list_layout_templates` | Curated layout artwork starters. |\n| `list_shape_presets` / `list_style_presets` | Decorative SVG library + style keys. |\n\n</details>\n\n<details>\n<summary><strong>Emails</strong> — author, mutate, preview, publish, send</summary>\n\n| Tool | What it does |\n|------|--------------|\n| `list_emails` / `get_email` | Browse & read published/draft emails. |\n| `create_email` / `update_email` / `delete_email` / `duplicate_email` | CRUD. |\n| `create_email_from_layout` | Seed an email from a published layout. |\n| `set_content` / `validate_content` | Replace whole content / validate before saving. |\n| `add_block` / `update_block` / `remove_block` / `move_block` | Incremental block edits. |\n| `set_universal` | Merge global email styles. |\n| `apply_template` | Apply a brand-aware starter template. |\n| `preview_email_web` | **Fast** web-target preview (preferred while iterating). |\n| `preview_email_html` | Inbox-target MJML HTML (slower; verifies client rendering). |\n| `publish_email` | Render + store; marks the email published. |\n| `test_send_email` | Send a one-off test copy to an address. |\n\n</details>\n\n<details>\n<summary><strong>Layouts</strong> — free-form pixel-perfect artwork canvas</summary>\n\n| Tool | What it does |\n|------|--------------|\n| `list_layouts` / `get_layout` | Browse & read layouts. |\n| `create_layout` / `update_layout` / `delete_layout` / `duplicate_layout` | CRUD. |\n| `set_layout_content` | Replace the whole layout descriptor. |\n| `add_layout_element` / `update_layout_element` / `remove_layout_element` | Element edits (absolute positioning). |\n| `add_custom_shape` / `add_shape_preset` | Bespoke SVG or curated decorative shapes. |\n| `apply_layout_template` | Apply a layout starter (hero-banner, promo-card, …). |\n| `fit_canvas_to_content` | Tighten canvas bounds to visible elements. |\n| `publish_layout` | Snapshot for embedding in emails. |\n\n> **Note:** layouts rasterize to a single PNG when embedded in an email (text\n> not selectable). Author readable/clickable content as email blocks instead.\n\n</details>\n\n<details>\n<summary><strong>Concurrency locks</strong> — prevent clobbering on shared resources</summary>\n\n`acquire_*` / `get_*_lock_status` / `refresh_*_lock` / `release_*_lock` /\n`force_release_*_lock` for both `email` and `layout` resources.\n\nBlock/element mutations are **not atomic** — never fire two on the same resource\nin parallel. Acquire the edit-lock first on shared resources.\n\n</details>\n\n<details>\n<summary><strong>Search &amp; fetch</strong></summary>\n\n| Tool | What it does |\n|------|--------------|\n| `search` | Search the workspace for emails/layouts by name/subject/tags. |\n| `fetch` | Fetch the full content of a search result by id. |\n\n</details>\n\n### A typical authoring flow\n\n```\nget_branding\n→ create_email { name: \"Spring sale\" }\n→ apply_template { template: \"promo\" }        # brand-aware starter\n→ update_block / add_block                    # tweak copy, CTA, colors\n→ preview_email_web                           # fast preview (preferred)\n→ publish_email                               # renders + marks published\n→ test_send_email { to: \"me@example.com\" }    # optional real send\n```\n\n## Environment variables\n\nThe hosted endpoint is fully managed — **most users never touch env vars.** They\nonly matter if you self-host or run the stdio transport.\n\n| Var | Purpose | Required? |\n|-----|---------|-----------|\n| `TEMWAY_API_URL` | Temway API base URL. | Only when self-hosting. |\n| `TEMWAY_API_KEY` | `tmw_live_…` key (stdio transport). | stdio only. |\n| `TEMWAY_WORKSPACE_ID` | Workspace id (stdio transport; HTTP derives from key). | stdio only. |\n| `LOG_LEVEL` | pino log level (default `info`). | no |\n\n## Connectivity check\n\nVerify the endpoint is reachable from your network before wiring up a client:\n\n```bash\nnode scripts/healthcheck.mjs\n# → OK 200 OK (926ms)\n# → ✓ Temway MCP endpoint is reachable.\n```\n\n(`npx temway-mcp-healthcheck` once published, or `npm run healthcheck`.)\n\n## Self-hosting\n\nThis repo does **not** contain server source. If you need to run the server\nyourself (on-prem, air-gapped, custom auth), contact\n[hi@temway.com](mailto:hi@temway.com) or open an issue.\n\n## FAQ\n\n<details>\n<summary><strong>Is this open source?</strong></summary>\n\nThe **server** is operated by Temway (source currently private). This repo is\nthe public integration surface: client configs, tool reference, and helpers,\npublished under the MIT license so you can copy configs freely.\n</details>\n\n<details>\n<summary><strong>Do I need to install Node / npm / anything?</strong></summary>\n\nNo. The hosted remote transport means your client connects over HTTPS by URL —\nnothing runs locally. The optional `healthcheck.mjs` needs Node ≥ 18.17.\n</details>\n\n<details>\n<summary><strong>Which client should I use?</strong></summary>\n\nFor local/CLI work: **Claude Code** or **Cursor**. For no-install browser use:\n**claude.ai** or **ChatGPT** with the OAuth connector. All configs are in\n[`examples/`](./examples).\n</details>\n\n<details>\n<summary><strong>How are my emails protected from the model?</strong></summary>\n\nCredentials are scope-bound per key (`*:read` / `*:write`). Reads never mutate;\nevery mutation is explicit. Narrow scopes to a read-only key for safe browsing.\n</details>\n\n## Support\n\n- 📧 [hi@temway.com](mailto:hi@temway.com)\n- 🐛 [GitHub Issues](https://github.com/temway/mcp-server/issues)\n- 🌐 [temway.com](https://temway.com)\n\n## License\n\n[MIT](./LICENSE) © Temway\n",
  "bytes": 10766,
  "sha": "07b1ee2ea309f35436eb57286fbd99b98852b1768854f110bbb0b1da02317326",
  "repo_slug": "temway/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_temway_mcp_server_d4d5d0ac/readme"
}