MCP tools
The geass mcp command runs a Model Context Protocol (MCP) server that gives an AI agent the same operations as the
command line. This page lists every tool the server can register. To run the server and connect
an agent, read MCP server for AI agents.
What the server exposes
Section titled “What the server exposes”- Tools only. The server registers tools. It exposes no MCP resources and no prompts, and it advertises no completions. It does advertise the standard logging capability of the MCP Go SDK it is built on.
- Identity. The server’s name is
geass, its title isGeassand its version is the command line’s version (devwhen the build did not set one). - Instructions. When an agent connects, the server sends it a short briefing (see Instructions).
- Transports. Standard input and output, or Streamable HTTP with
--listen. - 27 tools in all, 26 without
delete_resource. Which of them an agent sees depends on its token (see Which tools an agent sees).
Every tool takes a JSON object. An argument that is not in the tool’s schema is rejected. A tool’s result is one block
of text: indented JSON for every tool except get_logs, which returns plain lines. A result longer than 60,000
characters is cut and ends with ... (cut: the result was too long; narrow it with the tool's options).
Each tool carries the standard MCP annotations, so an agent host can decide when to ask you first. read-only means
readOnlyHint: true. idempotent means idempotentHint: true. Every tool except delete_resource has
destructiveHint: false, and every tool has openWorldHint: false.
Errors
Section titled “Errors”When Geass refuses or fails a call, the tool returns an error result (isError: true) whose text is the message from
the API, with a note in brackets added after a space, for three statuses:
| Status | Text added |
|---|---|
401 |
(the token is missing, wrong or expired) |
403 |
(this token is not allowed to do that; do not retry) |
404 |
(it does not exist, or is not visible to this token) |
Any other status gives the API’s message alone, such as replicas must be a whole number from 0 to 1000. A deploy that
fails while the agent waits for it is not an error: it is a result that says why (see deploy_app).
Overview
Section titled “Overview”| Tool | What it does | Needs | Hints |
|---|---|---|---|
whoami |
Says who the agent acts as and what it may do | Any token | read-only |
list_projects |
Lists projects | Any workspace token | read-only |
list_apps |
Lists services | Any token | read-only |
get_app |
One service’s settings and status | Any token | read-only |
app_status |
Whether a service is up, and what its last deploy did | Any token | read-only |
app_deployments |
A service’s deployment history | Any token | read-only |
app_metrics |
CPU, memory, network and requests over time | Any token | read-only |
get_logs |
Recent log lines of a service | Read only, with logs | read-only |
deployment_logs |
Build and deploy logs of one deployment | Read only, with logs | read-only |
list_variables |
Names of a service’s variables | Read only, with logs | read-only |
list_databases |
Lists databases | Any workspace token | read-only |
get_database |
One database’s settings and status | Any workspace token | read-only |
database_connection |
Host, port, database and user | Full access | read-only |
list_buckets |
Lists object storage buckets | Any workspace token | read-only |
list_nodes |
Lists the cluster’s nodes and their tags | Any workspace token | read-only |
project_compliance |
A project’s required node tags | Any workspace token | read-only |
deploy_app |
Deploys a service’s pending changes | Full access or project token | |
rollback_app |
Returns a service to an earlier deployment | Full access or project token | |
scale_app |
Sets the number of copies | Full access or project token | idempotent |
set_sleep_when_idle |
Makes a service sleep when idle, or stay running | Full access or project token | idempotent |
set_variable |
Sets a variable or secret | Full access or project token | idempotent |
unset_variable |
Removes a variable or secret | Full access or project token | idempotent |
set_function_trigger |
Adds or replaces a function’s schedule | Full access or project token | idempotent |
remove_function_trigger |
Removes a function’s schedule | Full access or project token | idempotent |
invoke_function |
Calls a function at its public address | Full access or project token | |
create_app |
Creates a service from an image or a repository | Full access | |
delete_resource |
Permanently deletes a resource | Full access, and --allow-delete |
destructive |
Needs uses the access names of the dashboard. Full access is the admin role, Read only, with logs is
observer, and Read only is viewer. A project token is limited to one environment of one project. Where a
row says Any token, a project token can use the tool for services in its own environment. Any workspace token
means a project token cannot. Read only, with logs also covers Full access and a project token. See
Users and API tokens.
Which tools an agent sees
Section titled “Which tools an agent sees”A tool that a token cannot use is not registered at all, so the agent never sees it. The flags of geass mcp narrow
this further. --read-only removes every tool that changes anything. It keeps database_connection for a Full
access token, because that tool only reads. --allow-delete adds delete_resource.
| Token | Tools |
|---|---|
Read only (viewer) |
whoami, list_projects, list_apps, get_app, app_status, app_deployments, app_metrics, list_databases, get_database, list_buckets, list_nodes, project_compliance (12) |
Read only, with logs (observer) |
The 12 above, plus get_logs, deployment_logs, list_variables (15) |
Full access (admin) |
All except delete_resource (26), and delete_resource with --allow-delete (27) |
Full access with --read-only |
The 15 of an observer, plus database_connection (16). |
| Project token | whoami, list_apps, get_app, app_status, app_deployments, app_metrics, get_logs, deployment_logs, list_variables, deploy_app, rollback_app, scale_app, set_sleep_when_idle, set_variable, unset_variable, set_function_trigger, remove_function_trigger, invoke_function (18) |
A project token with --read-only gets the first nine tools in its list. Hiding a tool is a convenience. The API
checks the token on every call, so a tool that is shown can still fail with a 403 for something the token may not
reach, such as app_metrics with kind set to databases for a project token.
Instructions
Section titled “Instructions”On connecting, the server tells the agent what it is allowed to do. The text starts with Geass runs services, databases and buckets on a cluster. Use list_apps and app_status to see what is running. and then, depending on the
token:
- For a project token:
You act with a token limited to <project>/<environment>: you can only see and change services there. - For a token that cannot change anything, or with
--read-only:You can only read: nothing here can change anything. - Otherwise:
Changing a variable does not apply it: call deploy_app afterwards (or pass deploy=true). To deploy and know whether it worked, call deploy_app with wait=true: it returns the outcome, and says why if the build failed.
Every version ends with Secret values are never returned by any tool. Plain configuration is not secret and is returned as it is, so keep anything sensitive in a secret.
Services
Section titled “Services”whoami
Section titled “whoami”Says who the agent acts as and what it may do.
- Arguments: none.
- Needs: any token. Calls: nothing. It returns what the server learned from
GET /mewhen it started. - Returns: the identity.
| Field | Meaning |
|---|---|
username |
token:<token name>. |
role |
admin, observer or viewer. A project token reports admin. |
scope |
workspace or project. |
project, environment |
The project token’s limits. Only for a project token. |
canMutate |
Whether the token can change things. |
canReadSensitive |
Whether it can read logs and variable names. |
authentication |
token. |
{ "username": "token:CLI: geass CLI on laptop", "role": "observer", "scope": "workspace", "canMutate": false, "canReadSensitive": true, "authentication": "token"}list_projects
Section titled “list_projects”Lists the projects.
- Arguments: none.
- Needs: any workspace token. Calls:
GET /projects. - Returns:
{"items": [...]}. Each item is a project summary:kind(project),name(the project’s ID, such asproj-1a2b3c4d),displayName,state,message,createdAtanddetailswithenvironments, andregionandrequiredTagswhen set.
list_apps
Section titled “list_apps”Lists services with their state (ready, pending, failed, draft or deleting).
| Argument | Type | Required | Meaning |
|---|---|---|---|
project |
string | no | Only services in this project (its ID). |
environment |
string | no | Only services in this environment, such as production. |
- Needs: any token. A project token sees only its own environment. Calls:
GET /appswithprojectandenvironment. - Returns:
{"items": [...]}. Each item haskind(app),name,displayName,project,environment,state,message,url,pendingChanges,createdAtanddetails.detailsholdsport,source(image,gitorfunction), theimage, or therepositoryandbranch, or theruntime,modeandtriggers,replicas, andscaleToZero(idleSeconds,maxReplicas,active,message) when the service sleeps when idle.
{ "project": "proj-1a2b3c4d", "environment": "production" }get_app
Section titled “get_app”Shows one service’s settings and status.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name, as listed by list_apps. |
- Needs: any token. Calls:
GET /apps/{app}. - Returns:
{"resource": {...}, "spec": {...}, "status": {...}}.resourceis the same summary as inlist_apps.specholds the service’s settings andstatuswhat the operator last reported.
Secret values are never included: spec.secretData lists their names with empty values. Plain configuration is not
secret and appears in spec.configData and spec.env when the token is Full access. A Read only or Read only,
with logs token gets them removed. The tool’s description says the same.
app_status
Section titled “app_status”Shows whether a service is up and what its last deploy did. Call it to find out whether a deploy worked.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name. |
- Needs: any token. Calls:
GET /apps/{app}/status. - Returns:
| Field | Meaning |
|---|---|
name, project, environment |
Which service. |
state |
ready, pending, failed, draft or deleting. |
message |
Why the service is not ready, when it says. |
url |
Its public address, when it has one. |
ready |
true when state is ready. |
pendingChanges |
How many changes wait for a deploy. |
replicas |
desired, ready and available copies. Present once the service has a Deployment. |
sleeping |
true for a service that sleeps when idle and has stopped. It is waiting for a request, not down. |
scaleToZero |
For a service that asked to sleep when idle: idleSeconds, maxReplicas, and active and message once the operator has said whether it does and why not. |
build |
The latest build: name, phase (Pending, WaitingForCI, Running, Succeeded, Failed or Cancelled), failureReason, sourceRevision, ciState, startedAt, completedAt. |
lastAttempt |
The latest deploy attempt: id, phase (Running, Succeeded or Failed), startedAt, completedAt, summary and errors (each with recordedAt and message). |
{ "name": "web", "project": "proj-1a2b3c4d", "environment": "production", "state": "pending", "ready": false, "pendingChanges": 0, "replicas": { "desired": 2, "ready": 0, "available": 0 }}app_deployments
Section titled “app_deployments”Lists a service’s deployment history, newest first. The ids are what rollback_app and deployment_logs take.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name. |
- Needs: any token. Calls:
GET /apps/{app}/deployments. - Returns:
{"items": [...]}. Each item hasid,phase,image,commit,trigger,actor,changeTitle,createdAt,startedAtandcompletedAt. A rollback adds an entry of its own.
app_metrics
Section titled “app_metrics”Shows CPU, memory, network and request use over time for a service, a database or a project.
| Argument | Type | Required | Meaning |
|---|---|---|---|
name |
string | yes | The service, database or project to measure. |
kind |
string | no | apps (the default), databases or projects. |
window |
string | no | How far back: 15m, 1h, 6h or 24h. Default 1h: the tool sends 1h when you leave it out. (A raw call to the API with no window answers for 15m.) |
- Needs: any token for
apps(a project token for its own services). Any workspace token fordatabasesandprojects. Calls:GET /{kind}/{name}/metricswithwindow. - Returns:
window,step(seconds between points),available, an optionalmessage, andseries. Each series is a list of{"t": <unix seconds>, "v": <value>}. The series arecpu(cores),memory(bytes),network(bytes sent per second),networkIn(bytes received per second),requests(requests per second, services only) andstorage(bytes, databases only).availableisfalse, with amessage, when Prometheus is not installed or not reachable (see Observability).
{ "name": "web", "window": "1h" }Logs and variables
Section titled “Logs and variables”These three tools need a token that may read what a Read only token may not: Read only, with logs, Full access or a project token.
get_logs
Section titled “get_logs”Reads a service’s recent log lines. Use level or search to narrow them.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name. |
tail |
integer | no | How many of the newest lines to return in all. Default 100, at most 500. level and search look through the most recent lines only, so raise it to look further back. |
since |
string | no | Only lines newer than this long ago, such as 15m or 2h. Go duration syntax, up to 7 days. |
level |
string | no | Only this level: error, warn, info or debug. |
search |
string | no | Only lines containing this text, up to 200 characters. |
- Needs: Read only, with logs, Full access, or a project token (for its own services). Calls:
GET /apps/{app}/logswithtail,since,qandlevel. - Returns: plain text, one line per log line, oldest first,
<time in RFC 3339> <pod> <text>. When nothing matches:No log lines matched. - Filters. The dashboard reads
taillines from the end of each copy’s log and applieslevelandsearchto those, solevelerrorfinds the errors among each copy’s newest lines.levelwarnalso returns errors. A service with several copies returns the newesttaillines of all of them together.
2026-10-12T09:41:07Z web-6d9c7b8f5-x2k4p Error: connect ECONNREFUSED 203.0.113.10:5432deployment_logs
Section titled “deployment_logs”Returns the build and deploy logs of one deployment. Read these when a deploy failed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name. |
deployment |
string | yes | A deployment id from app_deployments. |
- Needs: Read only, with logs, Full access, or a project token. Calls:
GET /apps/{app}/deployments/{deployment}/logs. - Returns:
idandsections, a list of{"id", "title", "lines"}for the deploy attempt, the build (for a repository) and the rollout. Sections with nothing in them are left out.linesis the stage’s log as one block of text, a line to a line. A stage longer than 200 lines is cut to its last 200, which is where a failure says why, and starts with... (N earlier lines left out). The whole log is atGET /apps/{app}/deployments/{deployment}/logs.
{ "id": "web-7x2kq", "sections": [ { "id": "provision", "title": "Provision", "lines": "Provisioning failed\n2026-10-12T09:41:07Z image pull failed" }, { "id": "build", "title": "Build", "lines": "Kaniko completed without an immutable image digest" } ]}list_variables
Section titled “list_variables”Lists the names of a service’s variables and secrets.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service’s name. |
- Needs: Read only, with logs, Full access, or a project token. Calls:
GET /apps/{app}/variables. - Returns:
secrets(a list of names),env(a list of{"name", "kind"}, wherekindisliteralorsecret) andconfig(an object of plain configuration).
Secret values are never returned: secrets come back by name only. config is an object of plain configuration with
its values, because plain configuration is not secret. The tool’s description says so. Store anything sensitive as a
secret.
{ "secrets": ["STRIPE_KEY"], "env": [], "config": { "LOG_LEVEL": "info" }}Databases, buckets and nodes
Section titled “Databases, buckets and nodes”All of these are hidden from project tokens.
list_databases
Section titled “list_databases”Lists databases with their state.
| Argument | Type | Required | Meaning |
|---|---|---|---|
project |
string | no | Only databases in this project. |
environment |
string | no | Only databases in this environment. |
- Needs: any workspace token. Calls:
GET /databases. - Returns:
{"items": [...]}of summaries likelist_apps.detailsholdsengine,highAvailability, andplacementandversionwhen set.
get_database
Section titled “get_database”Shows one database’s settings and status.
| Argument | Type | Required | Meaning |
|---|---|---|---|
name |
string | yes | The database’s name. |
- Needs: any workspace token. Calls:
GET /databases/{name}. - Returns:
{"resource": {...}, "spec": {...}, "status": {...}}. A token that cannot change things (Read only or Read only, with logs) gets the engine, host and connection details removed.
database_connection
Section titled “database_connection”Shows how to reach a database: host, port, database and user. The password and the connection string are never returned.
| Argument | Type | Required | Meaning |
|---|---|---|---|
name |
string | yes | The database’s name. |
- Needs: Full access. It is offered with
--read-onlytoo, since it only reads. Calls:GET /databases/{name}/connection, never withreveal. - Returns: the connection facts that exist, among
host,port,databaseandusername.
{ "database": "orders", "host": "orders-db.example.svc", "port": "5432", "username": "app"}list_buckets
Section titled “list_buckets”Lists object storage buckets.
| Argument | Type | Required | Meaning |
|---|---|---|---|
project |
string | no | Only buckets in this project. |
environment |
string | no | Only buckets in this environment. |
- Needs: any workspace token. Calls:
GET /object-stores. - Returns:
{"items": [...]}of summaries. A token that cannot change things does not get the bucket names or the endpoint.
list_nodes
Section titled “list_nodes”Lists the cluster’s nodes with their region, zone and tags, including compliance tags.
- Arguments: none.
- Needs: any workspace token. Calls:
GET /nodes. - Returns:
{"items": [...]}. Each node hasname,ready,schedulable,controlPlane,region,zone,tags(each withname, andreservedandcompliancewhen true),cpuandmemory.
project_compliance
Section titled “project_compliance”Shows the node tags a project requires, such as hipaa, and where it falls short of them.
| Argument | Type | Required | Meaning |
|---|---|---|---|
project |
string | yes | The project’s ID. |
- Needs: any workspace token. Calls:
GET /projects/{project}/compliance. - Returns:
requiredTags,region,databases(each withname,compliantandmissing) andopenNodes, the nodes that carry a required tag without being reserved for it. See Compliance tags.
Deploying and changing services
Section titled “Deploying and changing services”These tools need Full access or a project token, and are absent with --read-only.
deploy_app
Section titled “deploy_app”Deploys a service’s pending changes. With wait, waits until the service is ready or has failed and returns the
outcome, including why a build failed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service to deploy. |
wait |
boolean | no | Wait until it is ready or has failed, and return the outcome (recommended). |
timeout_seconds |
integer | no | How long to wait. Default 300, at most 900. |
- Calls:
POST /apps/{app}/deploy, and withwait,GET /apps/{app}/statusevery 3 seconds. - Returns without
wait:{"app": "web", "deploying": true, "next": "call app_status to see how it is going"}. - Returns with
wait: the outcome.
| Field | Meaning |
|---|---|
app |
The service. |
status |
The last status read, as returned by app_status. |
ready |
true only when the service is ready, has no pending changes and its latest build, if it has one, succeeded. |
failed |
true when the deploy failed. Only present then. |
error |
Why it failed (the deploy failed: <reason>), or why the wait ended (gave up waiting for web after 5m0s (it is pending): context deadline exceeded). Absent when it succeeded. |
A failed deploy and a wait that ran out are results, not errors, so the agent reads the reason. If the agent’s client
sends a progress token with the call, the server reports progress while it waits, as lines such as web: pending, build Running.
{ "app": "web", "wait": true, "timeout_seconds": 300 }{ "app": "web", "ready": true, "status": { "name": "web", "project": "proj-1a2b3c4d", "environment": "production", "state": "ready", "url": "https://web.example.com", "ready": true, "pendingChanges": 0, "replicas": { "desired": 2, "ready": 2, "available": 2 } }}{ "app": "web", "error": "the deploy failed: Kaniko completed without an immutable image digest", "failed": true, "ready": false, "status": { "name": "web", "project": "proj-1a2b3c4d", "environment": "production", "state": "pending", "ready": false, "pendingChanges": 0, "build": { "name": "web-build-x7k2p", "phase": "Failed", "failureReason": "Kaniko completed without an immutable image digest" } }}rollback_app
Section titled “rollback_app”Returns a service to an earlier deployment.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service to roll back. |
deployment |
string | no | The deployment to return to. The one before the newest in app_deployments by default. |
wait |
boolean | no | Wait until it is ready and return the outcome. It waits up to 300 seconds. |
- Calls:
GET /apps/{app}/deployments(withoutdeployment),POST /apps/{app}/rollback, and withwait, status reads. - Returns without
wait:{"app": "web", "rollingBackTo": "web-abc12"}. Withwait: the same outcome asdeploy_app. - It fails with
<app> has no earlier deployment to go back towhen there is only one deployment, and for a function (functions cannot be rolled back). A rollback records a deployment of its own, so a second call with nodeploymentgoes to the entry before that one. Passdeploymentto choose.
scale_app
Section titled “scale_app”Sets how many copies of a service run. It takes effect at once.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service to scale. |
replicas |
integer | yes | How many copies should run, 0 or more. The API refuses more than 1000. |
- Calls:
POST /apps/{app}/scale. - Returns:
{"app": "web", "replicas": 4}.
set_sleep_when_idle
Section titled “set_sleep_when_idle”Makes a service stop when it has had no requests for a while and start again on the next request, or keeps it running. It needs the serverless add-on and a public host. The setting is saved at once, and the tool then waits up to 10 seconds for the cluster to say whether the service can sleep. See Scale to zero.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service to change. |
enabled |
boolean | yes | true to stop it when idle and start it on the next request, false to keep it running. |
idle_seconds |
integer | no | How long without requests before it stops, 30 to 86400. The API’s default is 300. Anything else is refused with idle_seconds must be between 30 and 86400. |
- Calls:
PATCH /apps/{app}with{"scaleToZero": "on" | "off", "idleSeconds": ...}, then, whenenabledis true,GET /apps/{app}/statusuntilscaleToZero.activeistrueor the wait ends. A service that shows no request to sleep yet is waited for too, since the read can lag the change. - Returns:
{"app": "web", "sleepWhenIdle": true, "active": true}when the service sleeps when idle. When it cannot, because the add-on is missing, the service has no public host or CPU autoscaling is on, the setting stays saved, the service stays running, and the result says so:"active": false, areason(the cluster’s message, or that it has not said yet) and anote. Withenabledfalse:{"app": "web", "sleepWhenIdle": false}. When the setting was saved but reading the state back failed, the result is not an error: it hassleepWhenIdleand anotethat says the check could not be made and why.
set_variable
Section titled “set_variable”Sets a variable or a secret on a service. It applies when the service is deployed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service. |
key |
string | yes | The variable’s name, such as LOG_LEVEL. |
value |
string | yes | Its value. |
secret |
boolean | no | Store it as a secret. |
deploy |
boolean | no | Apply it now by deploying, and wait up to 300 seconds for the outcome. |
- Calls:
POST /apps/{app}/config/set, or/secrets/setwithsecret; withdeploy,POST /apps/{app}/deployand status reads. - Returns without
deploy:{"app": "web", "change": "set", "key": "LOG_LEVEL", "next": "call deploy_app to apply it", "pending": true}. Withdeploy:app,change,keyanddeploy, which holds the outcome described underdeploy_app. - The result never repeats the value.
unset_variable
Section titled “unset_variable”Removes a variable or a secret from a service. It applies when the service is deployed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The service. |
key |
string | yes | The variable to remove. |
secret |
boolean | no | It is a secret. |
deploy |
boolean | no | Apply it now by deploying. |
- Calls:
POST /apps/{app}/config/delete, or/secrets/deletewithsecret; withdeploy, a deploy and status reads. - Returns: like
set_variable, with"change": "removed". Removing a key that does not exist is not an error.
create_app
Section titled “create_app”Creates a service from an image or a GitHub repository. It is saved as a draft unless deploy is set.
| Argument | Type | Required | Meaning |
|---|---|---|---|
project |
string | yes | The project (its ID). |
environment |
string | yes | The environment, such as production. |
name |
string | yes | The service’s name. |
image |
string | no | A container image to run. Give this or repository. |
repository |
string | no | A GitHub repository to build, owner/name. |
branch |
string | no | The branch to build. Default main. |
port |
integer | no | The port it serves on. |
deploy |
boolean | no | Deploy it now instead of saving a draft. |
- Needs: Full access. Hidden from project tokens. Calls:
POST /appswithdraft, or withdeploywhen the argument is set. - Returns:
{"created": "web", "draft": true}. Withdeploy:{"created": "web", "draft": false, "deploying": true, "next": "call app_status to see how it is going"}, and the service is deploying. The tool reports that only when the API says it deployed the service. A Geass older than the tool saves a draft instead, and the result then says"draft": truewith anotethat it did not deploy it: calldeploy_app. With neitherimagenorrepositorythe call fails withgive an image or a repository to run. If you give both,imagewins. A function cannot be created with this tool. - With
deploy, the deploy is checked before anything is saved: a cluster with no room for the service fails the call and leaves no draft behind. A repository also needs the project to be linked to GitHub first (see GitHub and builds).
Functions
Section titled “Functions”These tools work on a service that runs a function (see Functions).
set_function_trigger
Section titled “set_function_trigger”Calls a function on a schedule, adding the schedule or replacing the one with the same name. The schedule starts once the function is next deployed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The function. |
name |
string | yes | The schedule’s name, such as nightly: lowercase letters, numbers and dashes, up to 32 characters. |
schedule |
string | to add | A cron expression in UTC with five fields, or @hourly, @daily, @weekly, @monthly, @yearly. The call fails with name and schedule are required without it. |
path |
string | no | The path to call. Must start with /. Default /. |
payload |
string | no | The JSON body to send. Must be valid JSON. |
- Calls:
GET /apps/{app}, thenPATCH /apps/{app}with the full list of schedules. A function can have 8. - Returns:
{"app": "report", "next": "call deploy_app to start the schedule", "pending": true, "trigger": "nightly"}.
remove_function_trigger
Section titled “remove_function_trigger”Stops calling a function on a schedule. It stops once the function is next deployed.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The function. |
name |
string | yes | The schedule to remove. |
- Calls:
GET /apps/{app}, thenPATCH /apps/{app}. - Returns:
{"app": "report", "pending": true, "removed": "nightly"}. A name that does not exist fails with<app> has no schedule named "<name>"and changes nothing.
invoke_function
Section titled “invoke_function”Calls a function at its public address and returns its answer. This runs the function, which may change things, and wakes it if it is asleep.
| Argument | Type | Required | Meaning |
|---|---|---|---|
app |
string | yes | The function to call. |
path |
string | no | The path to call, with a query if needed. Default /. |
method |
string | no | GET, or POST when there is a body (the default). |
body |
string | no | The JSON body to send. |
- Calls:
GET /apps/{app}, then an HTTP request to the function’s URL, without a Geass token. A call times out after 2 minutes, and at most 1 MiB of the answer is read. - Returns:
{"status": 200, "body": "..."}. A function that answers an error status is still a result. - It fails with
the function has no public address to call: give it a domain firstfor a function without a public address.
Deleting
Section titled “Deleting”delete_resource
Section titled “delete_resource”Permanently deletes a service, database, bucket or logical database. This cannot be undone and deletes data.
| Argument | Type | Required | Meaning |
|---|---|---|---|
kind |
string | yes | apps, databases, object-stores or logical-databases. |
name |
string | yes | The resource’s name. |
confirm |
string | yes | The resource’s name again, to confirm that it is to be deleted for good. |
- Needs: Full access, and
geass mcp --allow-delete. Without the flag the tool does not exist. Hidden from project tokens and from--read-only. Calls:DELETE /{kind}/{name}?confirmName={name}. - Returns:
{"deleted": "orders"}. It fails withnot deleted: confirm must be exactly "orders"whenconfirmis not the name, and withkind must be apps, databases, object-stores or logical-databasesfor another kind. - It is the only tool with
destructiveHint: true, so a host that asks before destructive tools asks before this one.
{ "kind": "databases", "name": "orders", "confirm": "orders" }