streamable-httpMITupdated 2mo ago
Let your AI assistant design beautiful emails & layouts — in your Temway workspace.
Was kannst du mit Temway machen?
Temway MCP Server
Let your AI assistant design beautiful emails & layouts — in your Temway workspace.
A Model Context Protocol server that turns Claude, ChatGPT, Cursor and friends into a visual email & layout authoring studio.
Getting Started · Clients · Tools · Temway
Temway is a visual builder for emails and layouts. This MCP server exposes your Temway workspace to any MCP-compatible AI client: the model reads your brand tokens, drafts a promo / newsletter / welcome email, previews it, publishes it, and even sends a test — all through natural language. No code, no drag-and-drop, no copy-pasting HTML.
It is a hosted remote MCP server. You point your client at a URL with an API key (or OAuth for web clients) — there is nothing to install, build, or run locally. The server speaks the MCP Streamable HTTP transport.
🔒 No source here? Correct. This is the public onboarding repo for the Temway MCP server. The server is operated by Temway and runs at
https://mcp.temway.com/mcp. This repo holds client configuration, tool reference, and connectivity helpers. Report issues / request tools in Issues.
How it works
Your AI client (Claude / ChatGPT / Cursor / Desktop)
└─ MCP over HTTPS → https://mcp.temway.com/mcp
Authorization: Bearer tmw_live_… ← API key
(or OAuth token for web connectors)
└─ Temway public API → your workspace
The model authenticates per-request, then drives your workspace through brand-aware templates, block mutations, layout artwork, live previews, and publishing.
Getting started
1. Get an API key
API keys are minted by a team admin in the Temway dashboard. The key:
- starts with
tmw_live_… - is bound to one workspace
- carries scopes (
emails:read,emails:write,layouts:read,layouts:write) that gate which tools succeed
Store it securely — it's shown once.
2. Point your client at the server
The endpoint and a ready-to-paste config for each client are in
examples/. The short version:
# Claude Code
claude mcp add --transport http temway https://mcp.temway.com/mcp \
--header "Authorization: Bearer tmw_live_xxxxxxxxxxxxxxxx"
That's it. The workspace is derived from the key.
3. Ask your assistant
"Create a promo email for our summer sale, 25% off, brand colors, a big CTA button, preview it, then publish it."
The model will get_branding → create_email → apply_template →
update_block → preview_email_web → publish_email for you.
Configure your client
The Temway server speaks the Streamable HTTP transport. Pick your client:
| Client | Config | File |
|---|---|---|
| Claude Code | claude mcp add --transport http … |
examples/claude-code.md |
| Claude Desktop | mcpServers JSON |
examples/claude-desktop.json |
| claude.ai (web) | OAuth connector URL | examples/claude-ai-web.md |
| ChatGPT | OAuth connector URL | examples/chatgpt.md |
| Cursor | MCP settings | examples/cursor.md |
| Any MCP client | Streamable HTTP URL | examples/generic.json |
Authentication
Two credential types — both resolve onto the same workspace context:
tmw_live_…API keys — for desktop & programmatic clients (Claude Code, Claude Desktop, Cursor, scripts). Sent asAuthorization: Bearer tmw_live_…. The workspace is derived from the key. Scope-bound.- OAuth 2.1 — for hosted web connectors (claude.ai, ChatGPT) that reject
static keys. No header to paste — the user signs in and picks a workspace on
the consent screen; the connector receives its own short-lived token (PKCE /
S256). Just enter the URL
https://mcp.temway.com/mcp.
Tools
The server exposes 58 tools across five groups. Reads need a *:read
scope; mutations need *:write.
| Tool | What it does |
|---|---|
get_branding |
Fetch workspace brand tokens (colors, fonts, logo, socials, footer). |
list_block_types / get_block_schema |
Email block catalog + per-block editable fields. |
list_layout_element_types / get_element_schema |
Layout element catalog + fields. |
get_universal_schema |
Global email style fields. |
list_templates |
Curated email starter templates. |
list_fonts |
Usable fonts (web-safe for emails; + Google/custom for layouts). |
list_concepts / get_concept |
Mental-model concept docs (read before authoring). |
list_layout_templates |
Curated layout artwork starters. |
list_shape_presets / list_style_presets |
Decorative SVG library + style keys. |
| Tool | What it does |
|---|---|
list_emails / get_email |
Browse & read published/draft emails. |
create_email / update_email / delete_email / duplicate_email |
CRUD. |
create_email_from_layout |
Seed an email from a published layout. |
set_content / validate_content |
Replace whole content / validate before saving. |
add_block / update_block / remove_block / move_block |
Incremental block edits. |
set_universal |
Merge global email styles. |
apply_template |
Apply a brand-aware starter template. |
preview_email_web |
Fast web-target preview (preferred while iterating). |
preview_email_html |
Inbox-target MJML HTML (slower; verifies client rendering). |
publish_email |
Render + store; marks the email published. |
test_send_email |
Send a one-off test copy to an address. |
| Tool | What it does |
|---|---|
list_layouts / get_layout |
Browse & read layouts. |
create_layout / update_layout / delete_layout / duplicate_layout |
CRUD. |
set_layout_content |
Replace the whole layout descriptor. |
add_layout_element / update_layout_element / remove_layout_element |
Element edits (absolute positioning). |
add_custom_shape / add_shape_preset |
Bespoke SVG or curated decorative shapes. |
apply_layout_template |
Apply a layout starter (hero-banner, promo-card, …). |
fit_canvas_to_content |
Tighten canvas bounds to visible elements. |
publish_layout |
Snapshot for embedding in emails. |
Note: layouts rasterize to a single PNG when embedded in an email (text not selectable). Author readable/clickable content as email blocks instead.
acquire_* / get_*_lock_status / refresh_*_lock / release_*_lock /
force_release_*_lock for both email and layout resources.
Block/element mutations are not atomic — never fire two on the same resource in parallel. Acquire the edit-lock first on shared resources.
| Tool | What it does |
|---|---|
search |
Search the workspace for emails/layouts by name/subject/tags. |
fetch |
Fetch the full content of a search result by id. |
A typical authoring flow
get_branding
→ create_email { name: "Spring sale" }
→ apply_template { template: "promo" } # brand-aware starter
→ update_block / add_block # tweak copy, CTA, colors
→ preview_email_web # fast preview (preferred)
→ publish_email # renders + marks published
→ test_send_email { to: "me@example.com" } # optional real send
Environment variables
The hosted endpoint is fully managed — most users never touch env vars. They only matter if you self-host or run the stdio transport.
| Var | Purpose | Required? |
|---|---|---|
TEMWAY_API_URL |
Temway API base URL. | Only when self-hosting. |
TEMWAY_API_KEY |
tmw_live_… key (stdio transport). |
stdio only. |
TEMWAY_WORKSPACE_ID |
Workspace id (stdio transport; HTTP derives from key). | stdio only. |
LOG_LEVEL |
pino log level (default info). |
no |
Connectivity check
Verify the endpoint is reachable from your network before wiring up a client:
node scripts/healthcheck.mjs
# → OK 200 OK (926ms)
# → ✓ Temway MCP endpoint is reachable.
(npx temway-mcp-healthcheck once published, or npm run healthcheck.)
Self-hosting
This repo does not contain server source. If you need to run the server yourself (on-prem, air-gapped, custom auth), contact hi@temway.com or open an issue.
FAQ
The server is operated by Temway (source currently private). This repo is the public integration surface: client configs, tool reference, and helpers, published under the MIT license so you can copy configs freely.
No. The hosted remote transport means your client connects over HTTPS by URL —
nothing runs locally. The optional healthcheck.mjs needs Node ≥ 18.17.
For local/CLI work: Claude Code or Cursor. For no-install browser use:
claude.ai or ChatGPT with the OAuth connector. All configs are in
examples/.
Credentials are scope-bound per key (*:read / *:write). Reads never mutate;
every mutation is explicit. Narrow scopes to a read-only key for safe browsing.
Support
License
MIT © Temway
Installation
Temway zu deinem Client hinzufügen. Wähl den, den du nutzt.
claude mcp add --transport http temway https://mcp.temway.com/mcpcodex mcp add temway --url https://mcp.temway.com/mcp{
"mcpServers": {
"temway": {
"url": "https://mcp.temway.com/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"temway": {
"type": "http",
"url": "https://mcp.temway.com/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"temway": {
"url": "https://mcp.temway.com/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"temway": {
"serverUrl": "https://mcp.temway.com/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
16 Tools
Temway stellt einem verbundenen Agent 16 Tools bereit.
- get_branding
- Fetch workspace brand tokens (colors, fonts, logo, socials, footer).
- get_universal_schema
- Global email style fields.
- list_templates
- Curated email starter templates.
- list_fonts
- Usable fonts (web-safe for emails; + Google/custom for layouts).
- list_layout_templates
- Curated layout artwork starters.
- create_email_from_layout
- Seed an email from a published layout.
- set_universal
- Merge global email styles.
- apply_template
- Apply a brand-aware starter template.
- preview_email_web
- **Fast** web-target preview (preferred while iterating).
- preview_email_html
- Inbox-target MJML HTML (slower; verifies client rendering).
- publish_email
- Render + store; marks the email published.
- test_send_email
- Send a one-off test copy to an address.
- set_layout_content
- Replace the whole layout descriptor.
- apply_layout_template
- Apply a layout starter (hero-banner, promo-card, …).
- fit_canvas_to_content
- Tighten canvas bounds to visible elements.
- publish_layout
- Snapshot for embedding in emails.
Score
77 / 100
Gut
- Dokumentation25/25
- Pflege16/25
- Vertrauen16/20
- Funktionsumfang8/15
- Installation12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 54 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 16 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Versionsverlauf
| Versionen | Veröffentlicht |
|---|---|
| 1.0.0Aktuell | 9. Juli 2026 |