streamable-httpMITupdated 2mo ago
Let your AI assistant design beautiful emails & layouts โ in your Temway workspace.
What can you do with Temway?
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
- ๐ง hi@temway.com
- ๐ GitHub Issues
- ๐ temway.com
License
MIT ยฉ Temway
Install
Add Temway to your client. Pick the one you use.
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 exposes 16 tools to a connected agent.
- 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
Good
- Documentation25/25
- Maintenance16/25
- Trust16/20
- Capability8/15
- Install experience12/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
Version history
| Versions | Published |
|---|---|
| 1.0.0Latest | Jul 9, 2026 |