What is MCP
Modulify runs an MCP server, so an AI client can work on your sites for you.
On this page
MCP, the Model Context Protocol, is the standard way an AI client talks to an outside system. Modulify runs an MCP server, so a client like Claude Code, Claude Desktop or Cursor can connect to your Modulify account and work on your sites from wherever you are already working.
The mental model
Your AI assistant becomes a client of your Modulify workspace. It signs in with an access token you create, and from then on it can call Modulify the same way you would click through the dashboard: list your sites, send a prompt to one, watch the build, read the resulting code, publish it.
The token is the whole boundary. It belongs to you, it acts as you, and it can only do the things you ticked when you created it.
What a connected client can do
The server exposes 180 tools, grouped by the part of Modulify they touch:
- Workspaces: read your workspaces, your role in each and your AI credit balance.
- Sites: list, create, duplicate, rename, delete, change the free address, change sharing.
- Chat: send a prompt to the site agent, poll the generation, read the history, manage the queue.
- Code: list, read and write the source files of a site, and read its server logs.
- Publishing: publish, check the publish, list past publishes, take a site offline.
- Domains: add a custom domain, read the DNS records, verify it, remove it.
- Configuration: environment variables, scheduled jobs and webhooks.
- Content: the collections, schemas and rows of a site database, SQL against it, plus its file storage.
- Backups: project snapshots, the code backup history, and storage and database backups, which a client can list, take, delete one or all of, and turn the daily run on or off for. A storage or database backup can never be downloaded or restored through MCP.
- Analytics: visitor numbers for a published site.
Tools lists every one of them with its inputs.
Scopes decide what the client even sees
A token carries a list of scopes. When a client connects, Modulify builds the tool list for that token alone: a tool whose scope the token does not hold is never registered, so the client cannot see it, cannot call it and will not try. Untick data:write and the client behaves as though row editing does not exist.
Each tool is also registered with a read-only hint and a destructive hint. Clients that surface those hints will ask you before running something marked destructive, such as delete_site or clear_collection.
It acts as you, inside your permissions
A token is tied to your user account, not to a workspace. By default it can reach every workspace where you are a member and your role allows API access, and you can narrow it to specific workspaces when you create it.
Every call has to resolve to a workspace, from the workspaceId it names or from the workspace that owns the site it names, and one that resolves to neither is refused before it runs. That workspace then has to be one the token is allowed to reach, and your role in it has to hold the API access permission. Workspace owners hold it already. For anyone else it is a permission the owner grants to a role, described in the product as "Reach this workspace with a token from an AI client".
What it deliberately cannot do
Some things are withheld on purpose, and the riskiest work sits behind scopes that stay unticked until you tick them:
- Environment variable values stay hidden.
list_secretsgives names and flags only. Reading a value back takesget_secretorget_all_secretsand the separatecredentials:revealscope.get_all_secretsleaves the platform-managed rows out, soDATABASE_URLand the storage keys come back only fromget_secret, one at a time. - Webhook destination URLs are stripped to their host, because a webhook URL is itself a credential.
- The data tools never return database credentials.
get_site_databasetells you whether a database exists, whether it is running and which engine it runs, not how to connect to it, andcreate_site_databasereturns no more. The storedDATABASE_URLis reachable only throughget_secret, socredentials:revealis the whole boundary here. - Writing a file skips the site agent.
write_file, behind its owncode:writescope, replaces files straight in the running preview, with no review and no code backup taken first. For a change that depends on the surrounding code, the client describes it withsend_messageand the site agent edits it instead. - Running SQL has its own scope.
execute_sql, behinddata:sql, runs any statement it is sent, including one that drops a table.
Credits and cost
Reading costs nothing. send_message and create_site spend AI credits from the workspace that owns the site, exactly as prompting from the dashboard does. A workspace with no AI credits left refuses both rather than running them part of the way, so a client that checks get_workspace first can tell you before it tries.
Limits
A token may make 240 tool calls per minute. Past that, calls come back with the number of seconds to wait, and the window is per token rather than per account.
A single tool result is capped at 60,000 characters. A larger result is cut off with a note saying so, which is why the paging tools exist: list_rows, list_sites, list_messages and the rest all page.
Next
- Connect a client walks through creating a token and wiring up Claude Code, Claude Desktop or Cursor.
- Tokens and scopes covers every scope and what it permits.
- Tools is the full catalog.