Serveur MCP

Croft

net.oncroft/croft
Cloud et infrastructure Outils développeur Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Creates, deploys, hosts, monitors, and manages application code, databases, secrets, connectors, schedules, access, and releases.

app_errors
App errors
Grouped errors for an app, read live from its box: uncaught exceptions (with stack traces), silent 5xx responses and container crashes, grouped by fingerprint with count, first/last seen, the releases they occurred in and a sample route. Call with `error_id` to get one group with up to 3 sample events (message, stack, request). `since` is "1h", "24h" (default) or "7d". A group is resolved automatically once it stops occurring after a newer deploy. The fix loop: app_errors → app_errors(error_id) → read_file → write_files → deploy → status → app_errors again. Builders only.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}, 'since': {'enum': ['1h', '24h', '7d'], 'type': 'string'}, 'error_id': {'type': 'integer'}, 'include_resolved': {'type': 'boolean'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'count': {'type': 'integer'}, 'group': {'type': 'object'}, 'since': {'type': ['string', 'null']}, 'groups': {'type': 'array', 'items': {'type': 'object'}}, 'samples': {'type': 'array', 'items': {'type': 'object'}}}}
app_metrics
App metrics
Request, resource and profiling metrics for an app from its box: request count, status mix (2xx/4xx/5xx), error rate, p50/p95/p99 latency, top routes by traffic, slowest and erroring routes, public vs signed-in traffic, cpu / memory / restarts / OOM, app.db + WAL size, healthy %, the last scheduled runs — and, for apps running with the Croft runtime, where the time goes: `breakdown` (average ms per request in the database, external calls and the app's own code), `top_routes_by_time`, `top_external` (hosts / connectors), `top_db` (statements — builders only) and `slowest` (traces; spans for builders). `window` is "1h", "24h" (default) or "7d"; `route` narrows to one route's breakdown and its slowest traces. Use it to answer "is the app healthy / slow / erroring?", "why is it slow?", and to check a fix after deploying.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}, 'route': {'type': 'string', 'description': 'A normalised route, e.g. /invoices/:id — narrows the breakdown and traces to it'}, 'window': {'enum': ['1h', '24h', '7d'], 'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'route': {'type': ['object', 'null']}, 'since': {'type': 'string'}, 'p50_ms': {'type': 'number'}, 'p95_ms': {'type': 'number'}, 'p99_ms': {'type': 'number'}, 'status': {'type': 'object'}, 'top_db': {'type': ['array', 'null']}, 'window': {'type': 'string'}, 'slowest': {'type': 'array', 'items': {'type': 'object'}}, 'requests': {'type': 'integer'}, 'breakdown': {'type': ['object', 'null']}, 'resources': {'type': ['object', 'null']}, 'top_routes': {'type': 'array', 'items': {'type': 'object'}}, 'healthy_pct': {'type': ['number', 'null']}, 'log_dropped': {'type': 'integer'}, 'error_events': {'type': 'integer'}, 'top_external': {'type': 'array', 'items': {'type': 'object'}}, 'releases_seen': {'type': 'array', 'items': {'type': 'string'}}, 'schedule_runs': {'type': 'array', 'items': {'type': 'object'}}, 'distinct_users': {'type': 'integer'}, 'error_rate_pct': {'type': 'number'}, 'slowest_routes': {'type': 'array', 'items': {'type': 'object'}}, 'erroring_routes': {'type': 'array', 'items': {'type': 'object'}}, 'public_requests': {'type': 'integer'}, 'open_error_groups': {'type': 'integer'}, 'signed_in_requests': {'type': 'integer'}, 'top_routes_by_time': {'type': 'array', 'items': {'type': 'object'}}}}
create_app
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.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'description': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'url': {'type': 'string'}, 'live': {'type': 'boolean'}, 'files': {'type': 'array', 'items': {'type': 'string'}}, 'conventions': {'type': 'string'}}}
delete_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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'confirm'], 'properties': {'app': {'type': 'string'}, 'confirm': {'type': 'boolean', 'description': 'Must be true for the deletion to proceed; otherwise the call is a no-op.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'app': {'type': 'string'}, 'deleted': {'type': 'string'}, 'confirmation_required': {'type': 'boolean'}}}
deploy
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.
Destructif
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}, 'message': {'type': 'string', 'description': "A one-line, plain-language summary of what changed in THIS deploy, written for the app's owner to read in the changelog — e.g. 'Add CSV export to the reports page' or 'Fix the login redirect bug'. Describe the user-facing change, not the mechanics; don't just say 'update' or 'deploy'."}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'live': {'type': 'boolean'}, 'status': {'type': 'string'}, 'deploy_job': {'type': 'integer'}}}
describe_app_data
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'tables': {'type': 'array', 'items': {'type': 'object'}}}}
describe_connector
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'host': {'type': 'string'}, 'kind': {'type': 'string'}, 'name': {'type': 'string'}, 'port': {'type': 'integer'}, 'send': {'type': 'string'}, 'slack': {'type': 'object'}, 'status': {'type': 'string'}, 'enabled': {'type': 'boolean'}, 'base_url': {'type': 'string'}, 'security': {'type': 'string'}, 'auth_style': {'type': 'string'}, 'operations': {'type': 'array', 'items': {'type': 'object'}}, 'description': {'type': 'string'}, 'default_from': {'type': 'string'}, 'has_credential': {'type': 'boolean'}, 'allowed_from_domains': {'type': 'array', 'items': {'type': 'string'}}}}
get_app
Get app
Get an app's file manifest, recent releases, and secret key names.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'string'}}, 'shared': {'type': 'boolean'}, 'status': {'type': 'string'}, 'releases': {'type': 'array', 'items': {'type': 'object'}}, 'schedules': {'type': 'array', 'items': {'type': 'object'}}, 'secret_keys': {'type': 'array', 'items': {'type': 'string'}}, 'public_paths': {'type': 'array', 'items': {'type': 'string'}}}}
get_platform_conventions
Get platform conventions
Return the Croft golden-path rules that every app on this workspace must follow.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'conventions': {'type': 'string'}}}
grant_access
Grant app access
Grant an existing user access to an app.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['email', 'app'], 'properties': {'app': {'type': 'string'}, 'email': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'app': {'type': 'string'}, 'email': {'type': 'string'}}}
grant_connector
Grant connector to app
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.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'connector'], 'properties': {'app': {'type': 'string'}, 'connector': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'state': {'type': 'string'}, 'connector': {'type': 'string'}}}
invite_user
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.
Destructif Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['email'], 'properties': {'apps': {'type': ['string', 'array'], 'items': {'type': 'string'}, 'default': 'all', 'description': 'Which apps to grant access to: "all" for every app, or a list of app names.'}, 'role': {'enum': ['member', 'creator', 'admin'], 'type': 'string', 'default': 'member', 'description': 'Workspace role: member (uses shared apps), creator (builds their own apps), or admin.'}, 'email': {'type': 'string', 'description': 'Email address of the person to invite.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'apps': {}, 'invited': {'type': 'string'}}}
list_apps
List apps
List the apps in this workspace with their URLs, status, and last release.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'apps': {'type': 'array', 'items': {'type': 'object'}}, 'app_limit': {'type': 'integer'}, 'apps_remaining': {'type': 'integer'}}}
list_connectors
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'connectors': {'type': 'array', 'items': {'type': 'object'}}}}
list_data_apps
List queryable 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'.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'apps': {'type': 'array', 'items': {'type': 'object'}}}}
list_grants
List connector grants
Lists the connectors an app can reach and each grant's state.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'grants': {'type': 'array', 'items': {'type': 'object'}}}}
list_secret_keys
List secret keys
List an app's secret key names (never values).
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'keys': {'type': 'array', 'items': {'type': 'string'}}}}
list_users
List users
List the people in this workspace and which apps they can access.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'users': {'type': 'array', 'items': {'type': 'object'}}}}
logs
App logs
Searchable runtime logs for an app: its container's stdout/stderr for the last 7 days, read live from its box. Filter with `since` (e.g. "1h", "24h", "7d" or an RFC3339 time; default 24h), `grep` (case-insensitive regex or substring) and `level="error"` (stderr + error-looking lines). Newest lines last, up to 500. Builders only.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}, 'grep': {'type': 'string'}, 'level': {'enum': ['error'], 'type': 'string'}, 'lines': {'type': 'integer'}, 'since': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'logs': {'type': 'string'}, 'count': {'type': 'integer'}, 'since': {'type': ['string', 'null']}, 'health': {'type': 'string'}, 'source': {'type': 'string'}}}
propose_connector
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).
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'base_url', 'auth_style', 'operations'], 'properties': {'name': {'type': 'string', 'description': 'Short slug, e.g. "stripe".'}, 'base_url': {'type': 'string', 'description': 'https base URL, e.g. "https://api.stripe.com".'}, 'auth_param': {'type': 'string', 'description': 'Header or query-param name (for header/query auth).'}, 'auth_style': {'enum': ['bearer', 'header', 'query', 'basic'], 'type': 'string'}, 'operations': {'type': 'object', 'description': 'Map of operation name → { method, path, params: [names] }. Path may contain {placeholders}.', 'additionalProperties': {'type': 'object', 'required': ['method', 'path'], 'properties': {'path': {'type': 'string'}, 'method': {'type': 'string'}, 'params': {'type': 'array', 'items': {'type': 'string'}}}}}, 'description': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'status': {'type': 'string'}, 'connector': {'type': 'string'}, 'operations': {'type': 'array', 'items': {'type': 'string'}}}}
query_app_data
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'sql'], 'properties': {'app': {'type': 'string'}, 'sql': {'type': 'string', 'description': 'A single SELECT/WITH statement. Use ? placeholders for values.'}, 'limit': {'type': 'integer', 'description': 'Max rows (default 200, max 500).'}, 'params': {'type': 'array', 'items': {}, 'description': 'Values for the ? placeholders, in order.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'row_count': {'type': 'integer'}, 'truncated': {'type': 'boolean'}}}
read_file
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'path'], 'properties': {'app': {'type': 'string', 'description': "The app's name."}, 'path': {'type': 'string', 'description': 'Repo-relative file path, e.g. "app/models/user.rb".'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'path': {'type': 'string'}, 'content': {'type': 'string'}}}
request_public_data_access
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.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'state': {'type': 'string'}, 'public_data_access': {'type': 'boolean'}}}
revoke_access
Revoke app access
Revoke a user's access to an app.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['email', 'app'], 'properties': {'app': {'type': 'string'}, 'email': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}}}
rollback
Roll back
Re-deploy the previous release of an app.
Destructif
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'status': {'type': 'string'}, 'deploy_job': {'type': 'integer'}}}
set_app_icon
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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'svg'], 'properties': {'app': {'type': 'string'}, 'svg': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'app': {'type': 'string'}}}
set_database_sharing
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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'shared'], 'properties': {'app': {'type': 'string'}, 'shared': {'type': 'boolean', 'description': "true to share this app's database with the workspace; false to keep it private."}, 'read_only': {'type': 'boolean', 'description': 'true to give other apps a read-only handle (they can SELECT but not write). Default false (read + write).'}, 'allow_public': {'type': 'boolean', 'description': 'Owner/admin only. true lets apps with public routes read this shared data (default false — public apps are blocked).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'shared': {'type': 'boolean'}, 'allow_public': {'type': 'boolean'}}}
set_public_paths
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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'paths'], 'properties': {'app': {'type': 'string'}, 'paths': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Full list of public paths, each starting with / (e.g. "/survey"). Empty to make fully private.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'public': {'type': 'boolean'}, 'public_paths': {'type': 'array', 'items': {'type': 'string'}}}}
set_schedules
Set scheduled tasks
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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'schedules'], 'properties': {'app': {'type': 'string'}, 'schedules': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'cron', 'path'], 'properties': {'cron': {'type': 'string', 'description': '5-field cron in UTC, e.g. "0 8 * * *" for 08:00 daily.'}, 'name': {'type': 'string', 'description': 'Short id, e.g. "daily-digest".'}, 'path': {'type': 'string', 'description': 'Local path to POST, e.g. "/tasks/digest". Keep it out of public_paths.'}}}}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'schedules': {'type': 'array', 'items': {'type': 'object'}}}}
set_secret
Set secret
Set (or replace) an env secret for an app. Value is stored encrypted and injected at deploy.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'key', 'value'], 'properties': {'app': {'type': 'string'}, 'key': {'type': 'string'}, 'value': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'key': {'type': 'string'}}}
status
App 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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app'], 'properties': {'app': {'type': 'string'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'app': {'type': 'string'}, 'url': {'type': 'string'}, 'live': {'type': 'boolean'}, 'health': {'type': 'string'}, 'shared': {'type': 'boolean'}, 'profiled': {'type': 'boolean'}, 'releases': {'type': 'integer'}, 'schedules': {'type': 'array', 'items': {'type': 'object'}}, 'last_deploy': {'type': ['object', 'null']}, 'deploy_state': {'type': 'string'}, 'public_paths': {'type': 'array', 'items': {'type': 'string'}}, 'avg_ms_last_hour': {'type': ['number', 'null']}, 'errors_last_hour': {'type': ['integer', 'null']}, 'p95_ms_last_hour': {'type': ['number', 'null']}, 'requests_last_hour': {'type': ['integer', 'null']}}}
write_files
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.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['app', 'files'], 'properties': {'app': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string'}, 'content': {'type': 'string'}}}}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'ok': {'type': 'boolean'}, 'sha': {'type': 'string'}, 'live': {'type': 'boolean'}, 'files': {'type': 'array', 'items': {'type': 'string'}}}}
Modifié
describe_connector
23 September 2026 02:50
Modifié
status
23 September 2026 02:50
Ajouté
app_errors
19 September 2026 02:48
Ajouté
app_metrics
19 September 2026 02:48
Modifié
logs
19 September 2026 02:48
Modifié
status
19 September 2026 02:48
Ajouté
list_grants
17 September 2026 12:54
Ajouté
grant_connector
17 September 2026 12:54
Ajouté
propose_connector
17 September 2026 12:54
Ajouté
describe_connector
17 September 2026 12:54
Ajouté
list_connectors
17 September 2026 12:54
Ajouté
request_public_data_access
17 September 2026 12:54
Ajouté
query_app_data
17 September 2026 12:54
Ajouté
describe_app_data
17 September 2026 12:54
Ajouté
list_data_apps
17 September 2026 12:54
Ajouté
set_database_sharing
17 September 2026 12:54
Ajouté
set_schedules
17 September 2026 12:54
Ajouté
set_public_paths
17 September 2026 12:54
Ajouté
revoke_access
17 September 2026 12:54
Ajouté
grant_access
17 September 2026 12:54
Ajouté
invite_user
17 September 2026 12:54
Ajouté
list_users
17 September 2026 12:54
Ajouté
list_secret_keys
17 September 2026 12:54
Ajouté
set_app_icon
17 September 2026 12:54
Ajouté
set_secret
17 September 2026 12:54
Ajouté
delete_app
17 September 2026 12:54
Ajouté
rollback
17 September 2026 12:54
Ajouté
logs
17 September 2026 12:54
Ajouté
status
17 September 2026 12:54
Ajouté
deploy
17 September 2026 12:54