aidrop.it MCP server
Connect Claude Code, Codex or Cursor to the aidrop.it MCP server: sign-in, the build loop and the full tool reference your agent uses to deploy apps.
Let your agent build this
Copy one prompt and paste it into Claude Code, Codex or Cursor. Your agent builds what this page describes and puts it online on aidrop.it.
See the prompt
Check your connection to aidrop.it: call projects_list and services_list and show me my Projects and Services, with each Service's address and whether it is running. If the aidrop.it tools are missing, tell me how to connect https://aidrop.it/mcp in the tool you are running in, then check again. This task comes from the aidrop.it guide "aidrop.it MCP server": https://docs.aidrop.it/mcp. Read that page if you need more detail; it says what to ask me for, what it costs and what will not work. Use the aidrop.it MCP tools (server: https://aidrop.it/mcp). If you do not have them, stop and tell me to connect them first, as described at https://docs.aidrop.it/quickstart#1-connect-your-agent.
On this page
aidrop.it runs a remote MCP server at https://aidrop.it/mcp that lets Claude Code, Codex or Cursor create, build and deploy your Services. MCP (Model Context Protocol) is the standard way an AI agent calls tools on another service. If the term is new to you, what an MCP server is, in plain words explains it before you read this reference.
https://aidrop.it/mcpAny MCP-capable client can connect, including Claude and ChatGPT. What it can do depends on whether it has a shell:
- Claude Code, Codex and Cursor have a local shell and
git, so they can write code, push it into a repository, build it, run it and open it to the internet. - A chat-only client reads the record and can build code that is already in a repository, but cannot put new code in.
This is the whole programmable surface. There is no REST API beside it. Tools are added and retired as the product changes, and a test fails the build when the tool reference below and the tools the server answers with disagree. If a tool is not in that table, it does not exist.
The dashboard and the agent split the work:
- The dashboard administers the Team: its members and their roles (admin, developer, viewer). No tool does that.
- The agent creates and removes Projects and Services.
project_create,project_delete,service_build,service_updateandservice_deleteare the only way. A Service is created by its firstservice_build, not by a call of its own.
Access is settled once, on the Team: everyone in it can reach every Project, and what they may do there is their role.
For the whole path an agent follows to build a product with a frontend, a backend and a database, read Build a Project. To see the same tools put a working assistant online, step by step, follow put your AI agent online.
Every tool publishes an outputSchema in tools/list and answers the same
JSON document twice: as text, and as structuredContent in the shape that
schema promises. A client that reads the schema knows what service_get will
answer before it calls; one that only reads text loses nothing.
Authentication
OAuth, with dynamic client registration. OAuth is the standard sign-in where you approve access in a browser window instead of copying a key. Clients that speak MCP OAuth (Claude Code, Codex, Cursor, Claude) open that window and walk you through consent. There is nothing to pre-register and nothing to copy. A client that cannot complete this sign-in cannot connect: there are no API keys.
On the consent screen you approve your Team and the scopes, the permissions the connection gets over it. The connection then reaches every Project in the Team, and what it may do in each is your role. You revoke it from Management → Connected apps in the dashboard, which lists every connection that holds access.
There are two scopes:
service:read: open a Service and its safe snapshot.service:write: create, prepare and operate a Service.
A connection made before these scopes existed must reconnect once to receive
them. Its older context:* or memory:* scopes are still accepted and allow
nothing.
Glossary: Team, Project, Service and repository
A Team is the membership and billing boundary. An agent authorizes against one Team and, according to the member’s role, can discover that Team’s Projects. It is not the boundary for a database connection or a secret value.
A Project is the customer’s product, the thing they name, and its
operational boundary. It owns its Services, its backing services and its
secret values. A plan counts Projects. Use the current project_id for every
resource, connection string and secret: a backing service or value from
another Project cannot be attached and is not delivered at deploy.
A Service is one deployable application inside a Project, for example a web app, an API or a worker. It has its own build, runtime settings, address and lifecycle. It draws on the plan’s memory and CPU and never counts as a Project. It does not own a database or a secret: it receives only the named Project values and the backing services attached to it.
A backing service is a managed PostgreSQL database, Valkey cache or Valkey queue. It is not an application Service. It is the Project’s, and it may be attached only to that Project’s Services.
A repository is the Team’s, not a Service’s. It exists before any Service builds from it and outlives the Services that do. One repository may back several Services: a monorepo whose API and web app deploy separately is two Services over one repository.
repositories_list shows the Team’s repositories, on its own aidrop.it Git service and on GitHub through the
aidrop.it GitHub App, with the Services each backs. A Service is created
without a repository; the first service_build links one, for good.
projects_list and services_list are where every session starts.
service_build takes a project_id from the first and a name for the
deployable, and makes the Service on its first call, so the first deploy still
happens in one session.
The build loop
The Service lifecycle follows this loop step by step, including the steps only a person can do.
Code reaches a repository from your shell and nowhere else. Where it goes is
decided by one field: repositories_list answers github_accounts, the GitHub
accounts the aidrop.it GitHub App is connected to for the Team.
- GitHub connected. The code lives on GitHub. Push it to a repository under
one of those accounts, usually the local
origin, and passowner/repositorytoservice_build. A new repository is visible only when the App can reach it: if the App was given selected repositories, a person adds the new one to its repository access on GitHub. - GitHub not connected.
repository_createmakes an empty repository on the Team’s aidrop.it Git service and answers its clone URL and a push credential. Your owngit pushputs the code there.repository_getanswers the same credential again for a repository that already exists.
Then the loop, which is the whole of deploying:
service_buildbuilds the newest commit of the tracked branch and, when the build succeeds, deploys the image to the Service’s address. That address is open to the internet from this first deploy. The build is queued and takes minutes.- The first call links the repository: pass
repository_ref, fromrepositories_listorrepository_create. Later calls need norepository_ref. - The first call also records the runtime settings.
container_portis the one value nothing can default.health_path,resource_class,runtime_kind,build_typeandrequired_secret_nameshave defaults that are defaults, not guesses. - Nothing is read out of the code to fill them in. The image is built
with nixpacks, an open-source builder that needs no Dockerfile, unless
build_type: dockerfileandbuild_dockerfile_pathname one to build instead. - Every later call keeps the settings unless one is passed again. Pass
branchto build, and from then on follow, another branch.
- The first call links the repository: pass
service_getsays how far it got: the repository and commit, the build’s stage and status, the deployment, the address, the settings, and anext_stepnaming the one call that follows. Poll it; do not narrate the wait.deploymentis the latest attempt.applicationseparately names the active deployment, commit and tag serving the address, which can be an earlier version when a later attempt failed.service_logsis the latest build’s log, with credentials hidden and its length bounded. When the build failed, read it, fix the code, push, and callservice_buildagain.
Every successful build keeps its image under a tag: the first twelve
characters of the commit it was built from, named in service_build’s answer.
service_tags_list lists the images a Service has, newest first.
service_start with a tag starts that image without rebuilding it. A
rollback is that call with an older tag, and returning to the newest version
is the same call with the newest tag. Without a tag, service_start resumes
the current image after service_stop paused it.
service_update renames a Service and restates what it is for. Nothing else
is settable there: the address is open from the first deploy, so there is no
lock to take off.
service_build refuses up front with the same sentences a build would stop
on, such as a secret value nobody has stored, a size the plan does not
include, or hosting paused. It does not record a run that stops at checked.
Secret values
Secret values, such as API keys, belong to the Project, not to one
Service. project_secret_set stores one under a name and
project_secret_delete removes it. Both take a project_id, and neither ever
answers a value back.
Each Service picks which of the Project’s values it gets, in service_build
through required_secret_names. Exactly the names listed there are put into
that application’s environment. A Project value a Service does not name never
reaches it.
Only an agent stores a value. The dashboard’s Project Secrets page lists the names a Project holds and when each was written, never the values, and nothing on it sets or changes one. Ask the customer for a value when the code needs it, store it at once, and never repeat it back, write it into code, a commit or a log, or ask for it again once it is stored.
The runtime envelope
service_get returns the runtime_envelope: the limits and rules the
code you are about to write has to fit. Read it before choosing a stack, not
after a build fails. Its keys:
resources: the CPU and memory the application runs under, its size, its port and its health path, once the first build has recorded them.storage: that there is no persistent disk, which scratch paths are writable (/tmp,/run,/var/tmp) and how large they are.databaseandbacking_services: what this Service can reach and under which environment variable; see below.branch: which branch is built, and why that one.build_rules: how an image is built. That is nixpacks by default, your own Dockerfile only whenbuild_type: dockerfilenames it, and which language versions nixpacks picks when the repository declares none.runtime_rules: a read-only root filesystem, exactly one replica, no published port and no host mount. Every Linux capability is dropped except binding a privileged port, and the rules say why an image that switches user at start-up serves nothing.egress_rules: outbound traffic leaves through the proxy only, on ports 80 and 443.dockerfile: the plainest Dockerfile of this Service’s runtime kind, binding thePORTthe platform sets and built and run under those rules. It isnullfor the default kindcontainerand before the first build.available_resource_classes,environmentandsecrets: the sizes that exist, the one environment there is, and how values reach the application.
Databases, caches and queues
backing_services is the part most worth reading before choosing a
stack. It lists what this Service can actually reach: a PostgreSQL database,
a Valkey cache, a Valkey queue. Each comes with the environment variable its
connection string arrives under, and whether it survives a restart. An agent
that assumes only a database is available writes its own cache into process
memory and its own queue into a table. Neither is right here, and neither is
guessable.
Two more things it tells you, and both change what you should do:
- The cache is not durable. It has no volume, so a restart empties it. Anything that must survive belongs in the database.
- A backing service is the Project’s, one per kind. Every Service in the Project that attaches it reads it under the same variable. Nothing in the code needs to know whether another Service uses it too, so do not write logic that branches on it.
available_on_this_plan says which kinds the Team’s plan includes. The sizes
and the plans are listed in
Runtime settings, sizes and plans.
You can attach one the Project already runs, and create one it does not.
shared_resources_listshows what exists, which Services use it and where its data lives.shared_resource_updateattaches one to a Service or detaches it.shared_resource_createruns a new one and attaches it in the same call. Passsizefor a PostgreSQL instance from Pro. Passparent_resource_idto make one more database inside an instance the Project already runs, which keeps two Services’ data apart at no extra cost against the plan.
Choose the database shape before creating anything:
- Call
shared_resources_listfor the current Project. - If it lists a PostgreSQL instance, create the new database inside that
instance with
shared_resource_createand itsparent_resource_id. Do not create a second instance. - If the Project has no PostgreSQL instance, create one with
kind: "postgres"when the plan includes it and the user confirms the billed service. That holds even when another Project in the same Team already runs PostgreSQL.
Backing services never cross the Project boundary. An instance in another Project cannot be attached or used as this Project’s database.
Store the connection string yourself. When a database is attached, the tool returns its connection string and the environment-variable name for the application to use. Attaching does not store that value:
- Save it with
project_secret_setfor the same Project. - Include exactly that name in the Service’s
required_secret_namesonservice_build.
A deploy reads only its own Project’s named values; a value from another Project is not supplied.
shared_resource_resize moves a running PostgreSQL instance to another size
the plan includes, or back to the cluster’s default. It restarts under the new
limits and clients reconnect; the data and every attached Service stay. A size
that does not fit the pot, the plan’s shared memory and CPU, is refused with
the numbers.
shared_resource_delete removes a service and everything in it. It is
explicitly confirmed and has no MCP undo operation. aidrop.it takes daily
snapshots; take an independent export before deleting data you need:
export your code and database shows how.
shared_resource_inspect looks inside a cache or a queue: memory against its
limit, how many keys, whether it has evicted anything, the hit rate, and each
key with its type and length.
- The lengths are the point. A queue’s depth is the length of the key your application writes to, not a server statistic, so this is what answers “is the queue draining”.
- A cache that evicts is a cache working. A queue that evicts is full and has thrown away work nobody did. The reply says which of the two you are looking at.
shared_resource_purge empties a cache or a queue, or removes one named key.
It is confirmed and not recoverable: a cache refills itself, but a queue holds
work that has not been done yet. There is no delete-by-pattern, on purpose. It
would mean scanning and then deleting what matched, and a key your application
wrote in between would go with it.
shared_database_query runs one SQL statement against a PostgreSQL instance,
or against one database inside it, and hands back what it printed as CSV.
- It is the only way to reach that database from outside a deployed application. The instance sits on a private network with no published port, so without it, checking whether a migration landed would mean deploying something that checks it.
- It runs any statement the database accepts: a
SELECTto look, aCREATE TABLEorINSERTto change. It is your data, and your agent already writes its schema through the application it builds. - A statement is stopped after 30 seconds and the answer is cut at 64 KB. The reply says when that happens.
Three things bound creating a backing service:
- The plan decides which kinds may exist and refuses the rest by name.
- One per kind per Project is the shape, so a second request is refused with the name of the first rather than quietly running another container.
- It takes an explicit
confirmed, because the service is billed to the customer for as long as it exists. That is their decision to make, not their agent’s.
A newly attached service reaches the application on its next build, not immediately.
Outbound traffic
Bringing a repository that may already be here
When bringing a repository that might already be in aidrop.it, read
repositories_list first. It says which Services already build from it, so
the agent offers the existing Service rather than creating a duplicate, or a
second Service on the same repository when that is what the product needs.
service_build checks the repository itself when it links it: that it exists
and that the GitHub App can read it. It refuses by name when it cannot. The
user must install the aidrop.it GitHub App in the browser before a GitHub
repository can be linked. The agent never asks for GitHub credentials or
writes source code to GitHub.
A chat-only client has no local git to hand a push credential to.
aidrop.it accepts no uploaded archive and never commits on your behalf, so a
chat-only session reads the record and builds what is already pushed. Code
enters a Service from a shell or from a connected GitHub repository.
Creating and deleting Projects and Services
A Project is the product and a Service is one deployed piece of it. Which
pieces a product needs is settled while it is being built, so the agent
creates, renames and removes them with project_create, project_delete,
service_build (the first call makes the Service), service_update and
service_delete. The dashboard lists what is running and operates it.
Confirm a delete with the customer before calling it: their application comes
off the cluster and its address stops answering. project_delete refuses until
it is called again with confirmed, but service_delete asks nothing and
takes effect at once, for an admin only, so the question is yours to ask
before the call. Their code does not move. The repository stays in the Team’s
Git service and can still be cloned.
A Service is created with a name and a description, and nothing else decides
what it is. How it builds and runs is what the agent passes to
service_build, because the agent wrote or read the code and aidrop.it did
not. The repository layout rule still holds and is enforced by the runtime:
one deployable, because a Service runs one container on one port.
Connecting
aidrop.it is not listed in any client’s connector directory yet. Claude Code, Codex and the ChatGPT desktop app install it as a plugin from the aidrop.it plugin marketplace. Every other client is set up as a custom connector: you give it the server address once, and the consent screen it opens on the first call does the rest.
There is no key to paste and no skill or workflow to install: the connector carries what the agent needs. These are the same steps as on the aidrop.it install page.
https://aidrop.it/mcpClaude (web & desktop)
- Open Settings → Connectors and choose Add custom connector. On a Team or Enterprise plan an owner adds it under Organization settings → Connectors → Add → Custom → Web first, and members then find it under their own Connectors.
- Name it aidrop.it, paste
https://aidrop.it/mcpas the remote MCP server URL and click Add. The server registers your client itself. - Click Connect and approve the access screen — your Team, with
service:readandservice:writeover it. - Ask your agent to deploy — for example, “Create a Service in aidrop.it and deploy this repository.” A chat-only session reads and builds what is already pushed; the code itself comes from Claude Code, Codex or Cursor.
Claude Code
aidrop.it ships as a plugin in its own marketplace, so Claude Code needs no server address typed by hand.
- Add the marketplace and install the plugin from your terminal:
claude plugin marketplace add aidropit/pluginsclaude plugin install aidropit@aidropit- Start
claude, run/mcp, pick aidropit and sign in. The browser opens the access screen — your Team, withservice:readandservice:writeover it. - Ask your agent to deploy — for example, “Create a Service in aidrop.it and deploy this repository.”
Codex
aidrop.it ships as a plugin in its own marketplace, so Codex needs no server address typed by hand.
- Add the marketplace and install the plugin from your terminal — the Codex desktop app and Codex in ChatGPT read the same configuration:
codex plugin marketplace add aidropit/plugins --sparse .agents/pluginscodex plugin add aidropit@aidropit- Sign in when the install prompts you, or run
codex mcp login aidropit, and approve the access screen — your Team, withservice:readandservice:writeover it. - Ask your agent to deploy — for example, “Create a Service in aidrop.it and deploy this repository.”
ChatGPT
The same plugin installs into the ChatGPT desktop app through the Plugins Directory.
- Register the marketplace once from your terminal (it needs the Codex CLI):
codex plugin marketplace add aidropit/plugins --sparse .agents/plugins- Restart the ChatGPT desktop app, open the Plugins Directory, pick the
aidrop.it marketplace and click Install plugin on aidrop.it.
Sign in when prompted and approve the access screen — your Team, with
service:readandservice:writeover it. - Ask your agent to deploy. ChatGPT has no shell, so it reads and builds what is already in a repository; use Codex to write and push the code.
Without the desktop app, ChatGPT on the web still takes the server as a custom
connector: Settings → Connectors → Advanced settings → Developer mode
(Plus, Pro, Team and Enterprise; a workspace admin turns it on), then
Connectors → Create, name it aidrop.it, paste
https://aidrop.it/mcp as the MCP server URL and choose OAuth.
Cursor
- Open Cursor → Settings… → Cursor Settings → Tools & MCP and click
New MCP Server. Cursor opens
mcp.json; add the entry:
{ "mcpServers": { "aidrop": { "url": "https://aidrop.it/mcp" } }}- Save, then click the server’s Needs login link on the same settings screen and approve the access screen.
- Ask your agent to deploy — for example, “Create a Service in aidrop.it and deploy this repository.”
Other agents
Any client that supports remote MCP servers over streamable HTTP works — VS Code, Continue, Cline, Windsurf, Zed, and others.
- Add the server to your client config — dynamic client registration means there is nothing to pre-register:
{ "mcpServers": { "aidrop": { "type": "http", "url": "https://aidrop.it/mcp" } }}- Complete the consent screen your client opens on the first call. A client that cannot perform an OAuth sign-in cannot connect; there is no API key to use instead.
- Ask your agent to deploy. A client with no local git or shell cannot put code into aidrop.it — use Claude Code, Codex or Cursor for that.
Every connection you make shows up under Management → Connected apps in the dashboard, and is revoked from there.
Try it
Verify the connection before relying on it:
- Claude Code: open
/mcpin a session —aidropitshould show as connected, and the same screen lets you re-authenticate. - Any client: ask the assistant to call
services_list. You should see the Services your Team member account can open. If the tool is missing, the connection is older than these scopes: reconnect so it carriesservice:readandservice:write.
What the runtime gives your code
The full list of settings, sizes and plan limits is in Runtime settings, sizes and plans. The rules your code meets first:
PORTis set in the environment, to the port the route points at. Bind it rather than a literal: an application that hard-codes 3000 while its profile says 8000 is running and unreachable, which reads as a broken app.- One container, one port, one replica. A Service deploys a single service. If a product genuinely needs two independently deployable services, that is two Services, and worth saying to the owner rather than laying one repository out as though both will run in one container.
- Your own
Dockerfileis the universal path. It is what makes Java, PHP, Ruby, Rust and .NET work here: passbuild_type: dockerfileandbuild_dockerfile_pathtoservice_build, and aidrop.it builds that file as-is and infers nothing. activemeans a container is running and answering. A deployment whose container does not stay running isfailedand carries the task’s own error. One that runs but answers nothing on its port, or answers 5xx on itshealth_pathfor longer than a start-up takes, isfailedtoo, with the reason: bind thePORTaidrop.it sets, and make the health path answer.- Application files are not durable. The root filesystem is read-only and scratch is cleared on restart. Put records in PostgreSQL and uploads/media in object storage — the runtime gives a Service no data volume, so a local path is not a place to keep anything.
Tools
The product and its pieces
| Tool | Scope | What agents use it for |
|---|---|---|
projects_list |
service:read |
List the Team’s Projects — the products its Services belong to — with the ids service_build and services_list take. |
project_create |
service:write |
Create a Project: the product a set of Services belongs to. A developer or admin role in the Team is required. |
project_delete |
service:write |
Archive a Project and every Service in it. Admin role; confirm with the customer first. Code is not touched. |
services_list |
service:read |
List the Services the caller can open, with the Project each belongs to and whether its application is running. Narrow to one Project with project_id. |
service_get |
service:read |
Read one Service — its Project, repository, address, latest build and deployment attempt, the exact active deployment and commit serving now, and the runtime envelope the code has to fit. This is the call to poll after service_build. |
project_get |
service:read |
Read one Project: its name, what it is for, and the Services in it. |
project_update |
service:write |
Rename a Project or change what it is for. The address and the repository are unaffected. |
service_update |
service:write |
Change a Service’s settings: its name and what it is for. The address and the repository keep the slug the Service was created with. |
service_delete |
service:write |
Archive a Service: its application is removed from the cluster and its address stops answering. Admin role. Takes effect at once with no confirmed step, so confirm with the customer before calling it. Code is not touched. |
Repositories
| Tool | Scope | What agents use it for |
|---|---|---|
repositories_list |
service:read |
List the Team’s repositories — on its aidrop.it Git service and on GitHub through the Aidrop GitHub App — with the Services each one backs, and github_accounts: when it is not empty, new code goes to GitHub. |
repository_get |
service:write |
Read one repository: its branch, whether it has commits yet, the Services it backs, and — for an aidrop.it one — the credential your own git pushes with. Developer or admin role. |
repository_create |
service:write |
Create an empty repository on the Team’s aidrop.it Git service, for a Team without GitHub connected; answers the clone URL and the push credential. Developer or admin role. |
repository_delete |
service:write |
Delete a repository on the Team’s aidrop.it Git service, with every commit in it. confirmed, not recoverable, and refused while a Service still builds from it. |
The build loop
| Tool | Scope | What agents use it for |
|---|---|---|
service_build |
service:write |
Build the tracked branch’s head and deploy it to the Service’s address, which is open to the internet from that first deploy. The first call links the repository (repository_ref) and records the runtime settings; pass branch to follow another branch. |
service_logs |
service:read |
The latest build’s log, credential-redacted and bounded. A run that stopped before a build was queued answers its stop reason. |
service_tags_list |
service:read |
The images built for this Service, newest first: tag, commit, status, which one runs now, which are runnable. |
Run it, open it
| Tool | Scope | What agents use it for |
|---|---|---|
service_start |
service:write |
Resume the application after a pause; with a tag from service_tags_list, start that built image instead — a rollback is this call with an older tag. |
service_stop |
service:write |
Pause the application: the container stops and the address stops answering. Takes confirmed. |
Your own domain
| Tool | Scope | What agents use it for |
|---|---|---|
service_domain_add |
service:write |
Claim a domain the customer owns for a Service, and answer the one DNS record they have to create — a CNAME at the Service’s own address for a subdomain, an A record or apex alias for a bare domain. From the Pro plan, and only for a Service that has been built. Nothing resolves until the record exists and service_domain_verify proves it. |
service_domain_verify |
service:write |
Check the record and, when it is there, start serving the Service on that name — certificate included. DNS takes minutes to hours to spread; a name that is not proved yet is not a failure, call this again. |
service_domain_remove |
service:write |
Stop serving a custom domain. The Service keeps its aidrop address, which cannot be removed. confirmed. The DNS record at the registrar is the customer’s to delete. |
The values an application reads
| Tool | Scope | What agents use it for |
|---|---|---|
project_secret_set |
service:write |
Store a value the Project’s applications read from their environment — an API key, a token, a connection string to something Aidrop does not run. Never answered back by any tool. |
project_secret_delete |
service:write |
Remove one by name. A Service that still names it in required_secret_names will refuse to build. |
Backing services
| Tool | Scope | What agents use it for |
|---|---|---|
shared_resources_list |
service:read |
List the Project’s databases, caches and queues — status, the variable each arrives under, which Services use it, and where its data lives. |
shared_resource_create |
service:write |
Run a new database, cache or queue for the Project and attach it to a Service in one call, or create one more database inside a PostgreSQL instance with parent_resource_id. An instance is billed, so it takes confirmed; size picks a PostgreSQL class from Pro. |
shared_resource_update |
service:write |
Attach a backing service to a Service, detach it, or change the variable the Service reads it as. |
shared_resource_resize |
service:write |
Move a PostgreSQL instance to another size the plan includes — micro, compact from Pro, dual from Scale, large on Business — or back to the default. It restarts; the data and the attachments stay. A size the pot cannot hold is refused with the numbers. |
shared_resource_inspect |
service:read |
Look inside a cache or a queue: memory against its limit, key count, evictions, hit rate, and each key with its type and length — which is how a queue’s depth is read. |
shared_resource_purge |
service:write |
Empty a cache or a queue, or remove one named key. confirmed, and not recoverable. |
shared_database_query |
service:write |
Run one SQL statement against a PostgreSQL instance, or one database inside it, and get what it printed as CSV — the only way to read that data from outside a deployed application. Stopped after 30 seconds, answer cut at 64 KB. |
shared_resource_delete |
service:write |
Destroy a backing service and the data in it; deleting an instance deletes the databases inside it. confirmed, and not recoverable. |