Croft MCP
← Croft MCP

Tools

Everything your assistant can do in your workspace over MCP. Explore tools are available to anyone you invite; Build & manage tools are owner/admin only.

Explore

read-only
get_platform_conventions
Return the Croft golden-path rules that every app on this workspace must follow.
list_apps
List the apps in this workspace with their URLs, status, and last release.
get_app
Get an app's file manifest, recent releases, and secret key names.
read_file
Read one file from an app's own git repo on this Croft workspace. No external API — the path is resolved inside the app's repository.
status
Reports an app's deploy and health status. `live` is true only when the latest deploy has fully succeeded; `deploy_state` gives the current stage (queued, running, succeeded, or failed). Read-only and safe to call repeatedly — each call returns the current stage, so it can be polled to follow a deploy's progress.
logs
Recent runtime logs for an app (relayed from its box).
list_secret_keys
List an app's secret key names (never values).
list_users
List the people in this workspace and which apps they can access.
list_data_apps
List the apps in this workspace whose data you can query read-only — the ones enabled for assistant access in the panel that you also have access to. Use describe_app_data to see an app's tables, then query_app_data to read it. This is how you answer questions about data held inside the workspace's apps — e.g. 'what stocks are in my portfolio app'.
describe_app_data
Show the tables and column definitions of a queryable app's SQLite database, so you can write a correct read-only SELECT for query_app_data. The app must be enabled for assistant access (in its settings) and you must have access to it.
query_app_data
Run a single READ-ONLY SQL query (SELECT/WITH only) against a queryable app's live SQLite database and get the rows back. Use describe_app_data first to learn the schema. Parameterise values via `params` with ? placeholders. Results are row-limited (max 500). Writes, PRAGMA and ATTACH are rejected. The app must be enabled for assistant access (in its settings) and you must have access to it; every query is audited.
list_connectors
Lists the workspace's API connectors (external services apps can call without holding the credential) and their state. `active` connectors are usable; `draft` ones still need a workspace admin to add the credential.
describe_connector
Returns a connector's full manifest — base URL, auth style, and the named operations (method, path, params) an app can call. Never returns the credential.
list_grants
Lists the connectors an app can reach and each grant's state.

Build & manage

owner / admin
create_app
Provisions an empty app on this workspace: a git repo, subdomain, port, and golden-path scaffold files. It contains no feature implementation and is not yet live.
write_files
Writes files into an app's git repo and commits them (as 'Claude via Croft'). files is a list of {path, content}. Committed files are staged in the repo; they are not built or published until the app is deployed.
deploy
Commits, builds (Nixpacks), and deploys the app. Include a `message` — a short summary of what changed — which becomes this deploy's entry in the app's changelog (shown to the owner in the panel). Returns a deploy job id; the build runs in the background and its deploy_state moves through queued and running before it ends in succeeded or failed. The app is live only once the deploy has succeeded.
rollback
Re-deploy the previous release of an app.
delete_app
Permanently deletes an app: removes its containers, data, and source code from the server, then deletes the app record. Irreversible. Does not affect other apps or the server. Deletes only when confirm is true.
set_secret
Set (or replace) an env secret for an app. Value is stored encrypted and injected at deploy.
set_app_icon
Set the app's icon, shown next to it in the Croft panel. Provide `svg`: complete, self-contained SVG markup for a simple, recognisable icon on a square canvas (use viewBox '0 0 64 64', bold shapes and a filled background, no <script>/<image>/external refs). It's stored and rendered as an image. Optional — without one the panel shows a generated fallback (a gradient tile + the app's initial), so only set an icon when you can make a genuinely representative one.
invite_user
Invite someone by email, set their workspace role, and grant app access. role is member (use apps), creator (can build their own apps), or admin. apps is 'all' or a list of app names.
grant_access
Grant an existing user access to an app.
revoke_access
Revoke a user's access to an app.
set_public_paths
Sets which of an app's paths are reachable WITHOUT login. By default an app is fully private (workspace login required everywhere). Pass the complete desired list of specific paths (e.g. ["/survey"]); each listed path and everything under it becomes public, everything else stays private. An empty list makes the app fully private again. The whole app cannot be made public — root or wildcard paths are rejected.
set_schedules
Sets the app's scheduled tasks. Each is { name, cron, path }: on the cron (standard 5-field, UTC) Croft makes an internal POST to the app's path, and the app does the work (e.g. send a daily email, sync an API). Use this for anything recurring instead of writing your own cron — it survives deploys and reboots and is shown in the panel. Also implement the endpoint (e.g. a POST route at that path). Pass the full desired list; an empty list clears all schedules.
set_database_sharing
Turns this app's database sharing on or off. Off by default (the database is private). When on, other apps in the same workspace may read AND write this app's SQLite database through Croft's internal broker at http://croft-data:8080/q/<this-app-name> (send {"sql":"…","params":[…]}), and this app is listed to other apps as reusable shared data. Pass read_only: true when this app's tables are maintained by a job (e.g. a sync from an external system) so other apps get a READ-ONLY handle and can't write rows the next run would overwrite. By default apps that have PUBLIC routes cannot read this shared data (a leak guard); an owner/admin can pass allow_public: true to let public apps read it too. Turn sharing on for an app whose data other apps should reuse — e.g. a CRM's contacts list that an invoicing app also needs.
request_public_data_access
For an app that has PUBLIC routes: request permission for it to use protected resources (its granted connectors AND other apps' shared data). Public apps are blocked from these by default so a public page can't leak workspace data. If you (the caller) are an owner or admin, this is granted immediately; if you're a creator it creates a request that an owner/admin approves (they're emailed). Call this when building a public app that also needs a connector or shared data.
propose_connector
Creates a new API connector as a DRAFT from the vendor's API docs: you supply the base URL, auth style, and an operations manifest. A workspace member (owner, admin, or creator) then opens the panel and adds the credential to activate it — the credential never passes through you. auth_style is bearer|header|query|basic; for header/query also give auth_param (the header/param name).
grant_connector
Gives one of your apps access to a connector. The app can then call the connector's operations. Note: this lets the app's code, and everyone the app is shared with, use the connector's credential. A connector an admin has marked admins-only can only be granted by an admin. Some connectors require admin approval: when a creator grants one of those, the grant is created as 'requested' and an owner/admin must approve it (they're emailed) before the app can use it — owners/admins granting it are approved automatically.

Members get the Explore tools; owners and admins get everything. Every call is scoped to your workspace and written to your activity log.