tilda-edit-mcp
Provides tools to read and edit Tilda pages through Tilda's editor API, including reading/writing blocks, rendering block HTML, managing repeatable rows, listing page blocks, setting block visibility, and publishing pages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tilda-edit-mcpWhat blocks are on my Tilda page?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tilda-edit-mcp
An MCP server that reads and writes Tilda pages through Tilda's own (undocumented) editor API, authenticating by borrowing the session from your local Firefox — no password, no API key, no token to paste.
Tilda's public API is read-only. Its editor has a full write API; this server wraps it, so an AI agent (or any MCP client) can edit blocks, change block settings, rewrite repeatable rows, add and delete blocks, swap images, duplicate pages, and publish — entirely headlessly.
Why it exists
Driving the Tilda editor UI with a browser automation tool is slow and
unreliable — block-type switches, image swaps, and settings changes silently
revert. The editor's network calls, by contrast, are plain
application/x-www-form-urlencoded POSTs. This server calls them directly, with
a read-modify-write-verify wrapper so a save either provably lands or throws.
Related MCP server: canvas_mcp
Tools
Blocks
Tool | Purpose |
| Read a block's fields ( |
| Write fields (read-modify-write, then verified; pass only what changes) |
| Rendered HTML for one block |
| A repeatable block's rows as an array (decodes Tilda's escaped |
| Replace a repeatable block's rows |
| List a page's blocks in order (recordid, tplid, code, hidden?) + page title/alias |
| Show/hide a block (idempotent) |
| Add a block by Tilda's numeric block-library id ( |
| Delete a block |
| Change a block's image from a URL or a local file: uploads to Tilda's CDN, then assigns it the way the editor's uploader does |
Pages
Tool | Purpose |
| Copy a page inside its project (returns the new pageid) |
| Rename a page |
| Set a page's URL path |
| Publish — headless, no browser needed |
A block is a handful of scalar fields plus one list JSON blob holding every
repeatable row. tplid is the block type; blockbackground the section
background; *_typo JSON strings ({"fontsize":"22px","color":"#fff",…}) drive
typography per field; filteropacity the cover overlay.
Things learned the hard way (all handled by the server)
Every field comes back HTML-escaped from the read endpoint, while the save endpoint stores exactly what it is sent. Echoing untouched fields verbatim double-escapes them on every write (a
<div>in a title becomes literal<div>on the page).write_blockdecodes before echoing.Image fields are ignored by a plain save — the uploader widget owns them.
set_block_imageuploads toupload.tildaapi.com(keys come from the page itself) and saves only that field with the uploader'stuinfoparameters.A save of a partial record blanks every omitted field, so everything is read-modify-write.
Rich-text fields reject
<ul>/<li>/<div>. Posting a<ul>once returned a login page and invalidated the session for every client, Firefox included. Use• item<br />for lists.Legacy scalar colour fields (
buttoncolor,bbuttonbgcolor,title_uppercase, …) are derived or dropped by the server; set the*_styles/*_typoJSON instead.Publish needs no real CSRF token. The editor's
getCSRF()reads a<meta name="csrf">that ships empty, and the server acceptscsrf=empty for publish, duplicate, alias and delete. Earlier versions of this README said publish was browser-only; that was wrong.
How authentication works
Persistent cookies (
hash,userid,deviceid, …) are read from Firefox'scookies.sqlite(unencrypted, unlike Chrome on Windows).Those alone are not enough:
hashis a remember-me token Firefox already consumes on login to mint a session. The real session key,PHPSESSID, is a session cookie Firefox keeps in memory only.So the live
PHPSESSIDis recovered from Firefox's session-restore file (sessionstore-backups/recovery.jsonlz4, mozLz4-compressed — decompressed by a small built-in decoder, no native dependency).Requests carry the persistent cookies + the recovered
PHPSESSID, plus theOrigin/Referer/X-Requested-Withheaders Tilda's origin check requires. The session is then stable across calls.
You must be logged in to tilda.ru in Firefox for the server to work. If a call returns "Tilda rejected the session", log in again in Firefox and retry.
Requirements
Node.js ≥ 22 (uses the built-in
node:sqlite,fetch,FormData; no native modules)Firefox, logged in to tilda.ru
Currently Windows-only (Firefox profile path); the logic ports easily to macOS/Linux by adjusting two paths.
Install
npm installRegister with an MCP client, e.g. Claude Code:
claude mcp add tilda-edit -s user -- node /absolute/path/to/tilda-edit-mcp/index.mjsRestart the client after updating: a running server keeps the old code.
Typical flow
list_records → find the recordids
read_block → see the fields (content and settings)
write_block → change copy / colours / typography / background
set_block_image → swap a photo (URL or local file)
add_block → insert e.g. a full-screen photo block (tplid 160)
publish_pageTo build a redesign side by side with the live page: duplicate_page →
set_page_title → set_page_alias → edit the copy → publish_page.
Test
The contract test does a full read → write → verify → restore round trip and checks the session sustains across calls. Point it at a disposable page and block you own:
TILDA_TEST_PAGEID=123456 TILDA_TEST_RECORDID=7890123 npm testRun it whenever a write mysteriously stops sticking — it is the tripwire for Tilda changing the API.
Privacy
Recovering PHPSESSID means decompressing recovery.jsonlz4, which contains
your entire Firefox session (all open tabs, and every site's in-memory
session cookies). The reader decompresses it transiently and returns only
the tilda.ru PHPSESSID; nothing else leaves that module and nothing is
written to disk. Read recovery-cookies.mjs if you want to see exactly what it
touches.
Caveats
Undocumented API. Tilda can change or break it without notice. The contract test exists to catch that early.
Terms of service. Automating the Tilda editor may not be permitted under Tilda's ToS. Check before relying on it, especially commercially.
Session coupling. Logging out of Tilda in any browser invalidates the account's sessions globally.
delete_blockhas no undo from the API side.Zero Block (Tilda's free-form designer) is not supported; standard blocks only.
License
MIT — see LICENSE.
Not affiliated with or endorsed by Tilda Publishing.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.
Headless browser primitives for AI agents when sites need real JS rendering.
Related MCP Servers
- AlicenseAqualityAmaintenanceDrive Firefox-based browsers (Floorp, LibreWolf, Zen, Waterfox, Mullvad, Firefox) from any MCP client — read pages, screenshot, click, fill forms and manage tabs in your real session, over Marionette/WebDriver. OS input & JS eval locked by default.411051MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading and writing Canvas LMS course content using browser session cookies, without needing an API key.MIT
- AlicenseCqualityAmaintenanceEnables AI assistants to read and drive a real, logged-in Firefox browser, including tabs, cookies, history, and site interactions, all through the Model Context Protocol.5218MIT
- FlicenseNot gradedqualityCmaintenanceEnables reading and writing Notion pages as a guest using browser cookies, bypassing the official API's limitations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dreamkeeper/tilda-edit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server