此 MCP 可以做什么
Publishes and manages full-stack applications in persistent workspaces, including versions, files, databases, secrets, sharing, access, and logs.
工具
输入模式
{'type': 'object', 'required': ['name', 'files'], 'properties': {'name': {'type': 'string', 'description': 'What the app is called. Shown in listings.'}, 'slug': {'type': 'string', 'description': 'The readable part of the subdomain to publish at, 3 to 34 characters of a-z, 0-9 and single hyphens. Derived from the name when omitted. A random 5-character tag is always appended, so a name is never taken and two apps may share one.'}, 'type': {'enum': ['app', 'page', 'doc', 'file'], 'type': 'string', 'description': 'The badge on the row. Defaults to app.'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Path inside the app, relative and at most 100 bytes, for example index.html.'}, 'content': {'type': 'string', 'description': "The file's text."}}}, 'description': 'Files to publish as plain text, not base64: HTML, Markdown or JavaScript exporting default { fetch }. A page serves index.html at its URL. Functions declaring db include schema changes as migrations/NNNN_name.sql, run in order when the version goes live.'}, 'access': {'type': 'object', 'required': ['level'], 'properties': {'level': {'enum': ['restricted', 'org_link', 'public_link'], 'type': 'string'}}, 'description': 'Who may open the link. Defaults to org_link.'}, 'message': {'type': 'string', 'description': 'What version 1 contains.'}, 'manifest': {'type': 'object', 'required': [], 'properties': {'env': {'type': 'object', 'description': 'Plain strings bound as env.NAME, visible to anyone who can read the version. Put keys in secrets instead. Names shared with secrets fail publication.'}, 'kind': {'enum': ['page', 'function'], 'type': 'string', 'description': 'page serves files unchanged; function runs a JavaScript module for every request.'}, 'entry': {'type': 'string', 'description': 'Root file for a page, usually index.html; module exporting default { fetch } for a function. Must exist in the resulting files, including files retained by merge.'}, 'secrets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Organization secret names bound as env.NAME for functions. Set values first at reachpad.dev/apps/settings/secrets or with reachpad secrets set NAME. An unset name fails publication with NAME is not set.'}, 'services': {'type': 'array', 'items': {'enum': ['db', 'files'], 'type': 'string'}, 'description': "Function services: db binds the app's SQLite database at env.reachpad.db.query(sql, params) and env.reachpad.db.batch(statements); files binds its file store at env.reachpad.files.put/get/head/delete. Other names are refused. db permits migrations/NNNN_name.sql, run when the version goes live."}}, 'description': "Omit on create_app for a static page; omit on update_app to keep the previous version's manifest. If supplied, replaces the entire manifest: include every field still needed. services, secrets and env apply only to functions. Runtime details and limits: https://reachpad.dev/SKILL.md"}, 'validate': {'type': 'boolean', 'description': 'Check without writing. Validates and returns the resulting file set, total bytes, entry and kind. create_app also validates the slug and returns it with the URL; <tag> stands for five random characters assigned on publish. Does not check the org app limit; publishing can still fail for that.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'How many rows to return. Defaults to 50.'}, 'since': {'type': 'string', 'description': 'RFC 3339 timestamp to read from.'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'How many rows to return. Defaults to 50.'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'cursor': {'type': 'string', 'description': 'next_cursor from a previous call.'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {}}
输入模式
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'How many rows to return. Defaults to 50.'}, 'folder_id': {'type': 'string', 'description': 'The folder to look inside. Omit for the top level.'}}}
输入模式
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The folder name.'}, 'parent_id': {'type': 'string', 'description': 'The folder to create it inside. Omit for the top level.'}}}
输入模式
{'type': 'object', 'required': ['to_folder_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app to move. Name this or folder_id, not both.'}, 'folder_id': {'type': 'string', 'description': 'The folder to move. Name this or app_id, not both.'}, 'to_folder_id': {'type': ['string', 'null'], 'description': 'The destination folder id, or null to move to the top level.'}, 'base_updated_at': {'type': 'string', 'description': "The moved folder's updated_at, from ls or tree. Required when folder_id is given."}}, 'dependentRequired': {'folder_id': ['base_updated_at']}}
输入模式
{'type': 'object', 'required': ['app_id', 'number'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'number': {'type': 'integer', 'minimum': 1, 'description': 'The version number to make live.'}}}
输入模式
{'type': 'object', 'required': ['app_id', 'sql'], 'properties': {'sql': {'type': 'string', 'description': 'One statement, with ? placeholders for every value that comes from somewhere else. A second statement in the same string is refused.'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'params': {'type': 'array', 'items': {'type': ['string', 'number', 'boolean', 'null']}, 'description': 'The values for the ? placeholders, in order. Strings, numbers, booleans and null.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': ['app_id', 'path'], 'properties': {'path': {'type': 'string', 'description': "The path inside the app, as it appears in read_app's files, for example index.html."}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'number': {'type': 'integer', 'minimum': 1, 'description': 'The version number to read from. Defaults to the newest version.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': ['app_id', 'number'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'number': {'type': 'integer', 'minimum': 1, 'description': 'The version number.'}}}
输入模式
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The secret name, from list_secrets.'}}}
输入模式
{'type': 'object', 'required': ['app_id', 'share_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'share_id': {'type': 'string', 'description': 'The share id. Starts with shr_.'}}}
输入模式
{'type': 'object', 'required': ['folder_id'], 'properties': {'folder_id': {'type': 'string', 'description': 'The folder to delete.'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'description': 'Text to match against the name, the slug and the words on the live page.'}, 'type': {'enum': ['app', 'page', 'doc', 'file'], 'type': 'string', 'description': 'Keep only apps carrying this badge.'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'How many rows to return. Defaults to 50.'}, 'created_by': {'type': 'string', 'description': 'Keep only apps owned by this user id or email address.'}, 'updated_by': {'type': 'string', 'description': 'Keep only apps owned by this user id or email address. Version authors are not indexed in v1, so this filters on the owner.'}}}
输入模式
{'type': 'object', 'required': ['app_id', 'level'], 'properties': {'level': {'enum': ['restricted', 'org_link', 'public_link'], 'type': 'string'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'password': {'type': 'string', 'description': 'Set a password on a public link.'}, 'expires_at': {'type': 'string', 'description': 'RFC 3339 timestamp after which a public link stops working.'}, 'clear_expiry': {'type': 'boolean', 'description': 'Remove the expiry.'}, 'clear_password': {'type': 'boolean', 'description': 'Remove the password.'}}}
输入模式
{'type': 'object', 'required': ['name', 'value'], 'properties': {'name': {'type': 'string', 'description': 'The environment variable name the function reads, for example STRIPE_SECRET_KEY. Letters, digits and underscores.'}, 'value': {'type': 'string', 'description': "The value. It is sealed on write: no tool returns it, this one included, and it is never written to a log or to this app's database. Ask the person to paste it themselves rather than repeating a key from earlier in the conversation."}}}
输入模式
{'type': 'object', 'required': ['app_id', 'email', 'role'], 'properties': {'role': {'enum': ['viewer', 'editor'], 'type': 'string', 'description': 'viewer can open it, editor can also publish versions.'}, 'email': {'type': 'string', 'description': 'The address to share with.'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': ['app_id'], 'properties': {'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {}}
输入模式
{'type': 'object', 'required': ['app_id', 'files', 'base_version_id'], 'properties': {'mode': {'enum': ['replace', 'merge'], 'type': 'string', 'description': 'replace, the default, publishes files as the whole file set: anything left out is gone. merge sends only the files that changed and carries every other file of the base version into the new version.'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Path inside the app, relative and at most 100 bytes, for example index.html.'}, 'content': {'type': 'string', 'description': "The file's text."}}}, 'description': 'Files to publish as plain text, not base64: HTML, Markdown or JavaScript exporting default { fetch }. A page serves index.html at its URL. Functions declaring db include schema changes as migrations/NNNN_name.sql, run in order when the version goes live.'}, 'app_id': {'type': 'string', 'description': 'The app id, as returned by search_apps or create_app. Starts with app_.'}, 'remove': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Paths from the base version to leave out of the new one. Merge only, and a path that is not in the base version is refused rather than ignored. A call that only removes files sends an empty files array.'}, 'message': {'type': 'string', 'description': 'What changed in this version.'}, 'publish': {'type': 'boolean', 'description': 'false stages the version instead of putting it on the link. It is built and readable at its own version URL, and publish_app_version makes it live. Defaults to true.'}, 'manifest': {'type': 'object', 'required': [], 'properties': {'env': {'type': 'object', 'description': 'Plain strings bound as env.NAME, visible to anyone who can read the version. Put keys in secrets instead. Names shared with secrets fail publication.'}, 'kind': {'enum': ['page', 'function'], 'type': 'string', 'description': 'page serves files unchanged; function runs a JavaScript module for every request.'}, 'entry': {'type': 'string', 'description': 'Root file for a page, usually index.html; module exporting default { fetch } for a function. Must exist in the resulting files, including files retained by merge.'}, 'secrets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Organization secret names bound as env.NAME for functions. Set values first at reachpad.dev/apps/settings/secrets or with reachpad secrets set NAME. An unset name fails publication with NAME is not set.'}, 'services': {'type': 'array', 'items': {'enum': ['db', 'files'], 'type': 'string'}, 'description': "Function services: db binds the app's SQLite database at env.reachpad.db.query(sql, params) and env.reachpad.db.batch(statements); files binds its file store at env.reachpad.files.put/get/head/delete. Other names are refused. db permits migrations/NNNN_name.sql, run when the version goes live."}}, 'description': "Omit on create_app for a static page; omit on update_app to keep the previous version's manifest. If supplied, replaces the entire manifest: include every field still needed. services, secrets and env apply only to functions. Runtime details and limits: https://reachpad.dev/SKILL.md"}, 'validate': {'type': 'boolean', 'description': 'Check without writing. Validates and returns the resulting file set, total bytes, entry and kind. create_app also validates the slug and returns it with the URL; <tag> stands for five random characters assigned on publish. Does not check the org app limit; publishing can still fail for that.'}, 'base_version_id': {'type': 'string', 'description': 'The base_version_id read_app returned, which is the version this edit was made against. Starts with ver_.'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {}}
近期工具变更
类似的 MCP 服务器
shiply
Publishes and manages web applications with SQL databases, serverless functions, domains, email tests, client intake, contracts, …
Fine Structure
Builds and hosts full-stack applications from prompts and supports agent communication through WhatsApp and email.
mcp
Provisions and manages cloud instances, networks, storage, databases, backups, VPNs, application deployments, and autocoding-agen…
EchoRelay
Manages a hosted API relay runtime, including projects, endpoints, credentials, publishing, keys, delivery logs, and dead-letter …
Supero
Builds, validates, publishes, tests, and deploys multi-tenant applications with schemas, CRUD operations, external data connector…
Replicate
Provides access to Replicate models, versions, collections, hardware, predictions, and deployments for running and managing hoste…
Relin
Configures webhook sources and destinations, monitors delivery health, investigates failures, manages retries, and replays events.
Scalix Cloud
Provides managed databases, SQL tools, container builds, persistent Linux machines, domains, scheduled functions, storage, and pr…