cloud.redu/mcp
REMOTE · MCP.REDU.CLOUD
Agent-native cloud, EU-hosted. Provision VMs, networks & databases on redu.cloud via MCP.
Available components
Last scanned (3 hours ago)
Scores higher than 96% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Cloud Infrastructure
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability58
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 34394 tokens (~321/item across 107 items; 107 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management92
- Stability check failed: schema churn in the 30 days we've observed: 6 tool removals, 1 breaking changes, 0 auth/transport breaks, 32 additions. See how to fix → Fail
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 77% of tool parameters carry a description.Partial
- Structured output schemas are declared (98% of tools); any adoption earns full credit.Pass
Tool Safety97
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 24 of 27 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "check_deploy_prerequisites" implies "deploy" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 108 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- New tool “delete_private_network”, which the server declares destructive security
- New tool “end_run”, which the server declares destructive security
- New tool “create_private_network” functional
- New tool “create_run” functional
- New tool “get_run” functional
- New tool “list_runs” functional
- “create_instance” added an optional parameter “run_id” cosmetic
- “create_volume” added an optional parameter “run_id” cosmetic
- 2 Nov 26 0
- Tool “create_free_postgres” rewrote its description, which is the text the model reads security
- Tool “exec_free_resource” rewrote its description, which is the text the model reads security
- New tool “get_free_resource_telemetry” functional
- 1 Nov 26 0
- New tool “delete_free_resource”, which the server declares destructive security
- New tool “exec_free_resource”, which the server declares destructive security
- New tool “create_free_website” functional
- New tool “create_free_postgres” functional
- New tool “get_billing_account” functional
- New tool “get_free_resource_action” functional
- New tool “get_free_resources” functional
- New tool “get_free_website_ssh” functional
- New tool “publish_free_website” functional
- “create_backup” added an optional parameter “provisioning_mode” cosmetic
- “create_clickhouse” added an optional parameter “provisioning_mode” cosmetic
- “create_database” added an optional parameter “image_role” cosmetic
- “create_database” added an optional parameter “provisioning_mode” cosmetic
- “create_database” added an optional parameter “required_disk_gb” cosmetic
- “create_database” added an optional parameter “required_memory_mb” cosmetic
- “create_instance” added an optional parameter “image_role” cosmetic
- “create_instance” added an optional parameter “provisioning_mode” cosmetic
- “create_instance” added an optional parameter “required_disk_gb” cosmetic
- “create_instance” added an optional parameter “required_memory_mb” cosmetic
- “create_media_space” added an optional parameter “provisioning_mode” cosmetic
- “create_redis” added an optional parameter “provisioning_mode” cosmetic
- “create_relational_database” added an optional parameter “provisioning_mode” cosmetic
- “create_snapshot” added an optional parameter “provisioning_mode” cosmetic
- “create_volume” added an optional parameter “provisioning_mode” cosmetic
- “deploy_app” added an optional parameter “image_role” cosmetic
- “deploy_app” added an optional parameter “provisioning_mode” cosmetic
- “deploy_app” added an optional parameter “required_disk_gb” cosmetic
- “deploy_app” added an optional parameter “required_memory_mb” cosmetic
- “deploy_compose” added an optional parameter “image_role” cosmetic
- “deploy_compose” added an optional parameter “provisioning_mode” cosmetic
- “deploy_compose” added an optional parameter “required_disk_gb” cosmetic
- “deploy_compose” added an optional parameter “required_memory_mb” cosmetic
- “plan_deploy” added an optional parameter “image_role” cosmetic
- “plan_deploy” added an optional parameter “provisioning_mode” cosmetic
- “plan_deploy” added an optional parameter “required_disk_gb” cosmetic
- “plan_deploy” added an optional parameter “required_memory_mb” cosmetic
- “plan_instance” added an optional parameter “image_role” cosmetic
- “plan_instance” added an optional parameter “provisioning_mode” cosmetic
- “plan_instance” added an optional parameter “required_disk_gb” cosmetic
- “plan_instance” added an optional parameter “required_memory_mb” cosmetic
- “plan_managed_datastore” added an optional parameter “image_role” cosmetic
- “plan_managed_datastore” added an optional parameter “provisioning_mode” cosmetic
- “plan_managed_datastore” added an optional parameter “required_disk_gb” cosmetic
- “plan_managed_datastore” added an optional parameter “required_memory_mb” cosmetic
- “restore_backup” added an optional parameter “provisioning_mode” cosmetic
- “upgrade_to_cluster” added an optional parameter “provisioning_mode” cosmetic
- “upgrade_to_ha” added an optional parameter “provisioning_mode” cosmetic
- “create_database” made “flavor_id” optional cosmetic
- “create_instance” made “flavor_id” optional cosmetic
- “create_instance” made “image_id” optional cosmetic
- 27 Oct 26 −2
- A breaking change shipped without a version bump: still 2.0.0 ▼ security
- Tool “check_agent_prerequisites” was removed ▼ security
- Tool “create_controller” was removed ▼ security
- Tool “get_agent_status” was removed ▼ security
- Tool “setup_agent_fleet” was removed ▼ security
- Tool “setup_agent_session” was removed ▼ security
- Tool “trigger_agent_batch” was removed ▼ security
- New tool “postgres_data_change”, which the server declares destructive security
- Tool coverage: 85% → 77% ▼ functional
- New tool “postgres_data_read” functional
- 26 Oct 26 0
- New tool “delete_private_vps”, which the server declares destructive security
- New tool “exec_private_vps”, which the server declares destructive security
- Tool “create_private_vps” rewrote its description, which is the text the model reads security
- New tool “get_private_vps_action” functional
- New tool “get_private_vps_ssh” functional
- New tool “publish_private_vps” functional
- 25 Oct 26 0
- New tool “create_private_vps” functional
- New tool “get_private_vps_pilot” functional
- 20 Oct 26 0
- Tool “delete_deployment” rewrote its description, which is the text the model reads security
- “deploy_app” added an optional parameter “data_paths” cosmetic
- “deploy_compose” added an optional parameter “data_paths” cosmetic
- 19 Oct 26 0
- New tool “delete_dns_entry”, which the server declares destructive security
- New tool “release_domain”, which the server declares destructive security
- Tool “deploy_app” rewrote its description, which is the text the model reads security
- Tool “deploy_compose” rewrote its description, which is the text the model reads security
- Tool “get_domain_verification” rewrote its description, which is the text the model reads security
- Tool “list_dns_entries” rewrote its description, which is the text the model reads security
- Tool “list_domains” rewrote its description, which is the text the model reads security
- Tool “plan_deploy” rewrote its description, which is the text the model reads security
- Tool “verify_domain” rewrote its description, which is the text the model reads security
- “deploy_compose” reworded the description of “port” cosmetic
- Tool “list_domains” changed its title: List verified domains → List custom domains cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.redu.cloud/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.redu.cloud | CN=YE2,O=Let's Encrypt,C=US | 5 Oct 2026 | 3 Jan 2027 | ECDSA 384 | ECDSA-SHA384 | 6a2e5fb02aa36a64e1e166e9271cabdce7d |
| SANs: *.redu.cloud, redu.cloud | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.redu.cloud. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| cloud. | present | 7041 | 13 | Verified |
| redu.cloud. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.redu.cloud/.well-known/oauth-protected-resource", scope="openid profile email offline_access"
Bearer resource_metadata="https://mcp.redu.cloud/.well-known/oauth-protected-resource", scope="openid profile email offline_access" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; preload |
Protected resource metadata
| Document | https://mcp.redu.cloud/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.redu.cloud |
| Authorisation server | https://login.redu.cloud/realms/eu-central-1 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.redu.cloud/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.redu.cloud/mcp | HTTPS enforced | 301 | https://mcp.redu.cloud/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
architecture_diagram Architecture diagram of your account (read-only) ~245
Read-only. Fetches EVERY resource on your redu.cloud account (VMs, volumes, private networks, managed databases: Postgres/MySQL/MariaDB/ClickHouse/Redis/Qdrant, load balancers, and DNS access points) and renders ONE Mermaid diagram of the whole account, grouped into per-private-network subgraphs with repetition collapsed into count nodes (e.g. "App VM x12"). Returns report_markdown to save as redu_architecture_diagram.md at the repo root, PLUS a redu_md_section that enriches the repo's redu.md with the current account topology, so the NEXT deploy is account-aware: it integrates with services that already exist and picks models/versions/sizes that fit the stack (better decisions, not just avoiding duplicate networks/databases). Nothing is created or changed.
| Name | Type | Req | Description |
|---|---|---|---|
| include_load_balancers | boolean | – | Include load balancers in the map (default true). |
| include_managed | boolean | – | Include managed databases (Postgres/MySQL/MariaDB/ClickHouse/Redis/Qdrant) in the map (default true). |
| include_volumes | boolean | – | Include block volumes in the map (default true). |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| counts | – | – | – |
| mode | string | – | – |
| next | string | – | – |
| redu_md_filename | string | – | – |
| redu_md_section | string | – | – |
| report_filename | string | – | – |
| report_markdown | string | – | – |
| resources | – | – | – |
No examples provided.
attach_volume Attach volume to instance ~236
Attaches an EXISTING block volume to a running instance as an extra disk. This is how you finish a RESTORE after a VM is gone: restore_backup (volumeName) rebuilds the data into a new volume, then attach_volume puts that volume on a replacement instance - then SSH in (get_ssh_command) and mount it (`lsblk` to find it, usually /dev/vdb, then `mount /dev/vdb /mnt/...`). The volume must be 'available' (not already in-use - detach_volume it first) and in the same project. Attaching does NOT mount or boot from it: the instance keeps booting from its own root disk, the volume shows up as an extra block device. Poll list_volumes until status is 'in-use'.
| Name | Type | Req | Description |
|---|---|---|---|
| instance_id | string | yes | Instance to attach it to / detach it from - from list_instances (id). |
| volume_id | string | yes | Volume to attach/detach - from list_volumes (id). For a recovery, this is the volume restore_backup created (restore_backup with volumeName makes a NEW volume from a backup). |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
check_deploy_prerequisites Check deploy prerequisites (run before plan_deploy) ~244
The deploy ENTRY GATE - run this first when a user wants to deploy. Verifies the account is ready and AUTO-SELECTS the network_id + keypair_name to pass to deploy_app (so you never hunt for them): (1) account reachable + quota, (2) a private network (picks your default - every account has one), (3) an SSH keypair (if you have none, returns ssh_key_recipe: the exact local ssh-keygen → import_keypair → write SSH_KEY_LOCATION-to-.env steps - run them, in yolo mode without asking). Returns { ready, network_id, keypair_name, missing, ssh_key_recipe }.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | OMIT by default: the session deploys end to end with no questions (yolo: the default network, a keypair created if missing). Pass 'guided' ONLY when the user explicitly said they want to approve or t… |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| account_ok | boolean | – | – |
| keypair_name | string|null | – | – |
| missing | array | – | – |
| mode | string | – | – |
| network_id | string|null | – | – |
| next | string | – | – |
| platform_facts | array | – | – |
| quota | – | – | – |
| ready | boolean | – | – |
| ssh_key_recipe | array | – | – |
No examples provided.
create_api_key Create a scoped API key (needs approval) ~289
Mints a NEW least-privilege redu API key for a deployed app or automation to use (e.g. to add a backup feature). GUARDRAIL: the first call does NOT create anything. It returns a confirmation the user must approve, because a key is a long-lived credential that acts on the account and ANY usage of it is BILLED to the account owner. Show the user the name, the exact scopes, and the billing notice, get their explicit approval, then call again with confirm:true. This is required even in yolo/auto mode. The secret is returned ONCE.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set true ONLY after the user has explicitly approved (see the confirmation the first call returns). Leave unset to get the approval prompt first. Do NOT set it yourself. |
| expires_in_days | integer | – | Optional: auto-expire the key after N days. |
| name | string | yes | A recognizable name for the key, e.g. 'supabase-backups'. |
| scopes | array | yes | LEAST-PRIVILEGE scopes the key may use, e.g. ['instance:read','backup:read','backup:create','backup:restore']. Grant only what the feature needs. Discover the catalog via GET /v1/capabilities (gramma… |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| billing_notice | string | – | – |
| error | boolean | – | – |
| expires_at | – | – | – |
| key | string | – | – |
| mode | string | – | – |
| name | string | – | – |
| needs_confirmation | boolean | – | – |
| next | string | – | – |
| scopes | – | – | – |
| validation | – | – | – |
| warning | string | – | – |
No examples provided.
create_backup Create backup ~159
Creates a backup, by volumeId or by instanceId (the instance's volume is resolved for you). The backup is held independently of the instance, so it survives the VM. Poll list_backups until the new backup is available.
| Name | Type | Req | Description |
|---|---|---|---|
| backupName | string | yes | A name for the backup. |
| instanceId | string | – | ID of the instance to back up - its bootable (else first) attached volume is resolved automatically, so no volume:list scope is needed. Provide this OR volumeId. |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| volumeId | string | – | ID of the volume to back up (see list_volumes). Provide this OR instanceId. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_clickhouse Create managed ClickHouse ~1,107
Provisions a managed ClickHouse database (OLAP / columnar analytics engine, Apache-2.0) on a dedicated VM on your private network - its OWN resource, NOT a relational database. Requires a recent plan_managed_datastore. Use it for analytics / observability workloads that need a column store (PostHog, Langfuse, event analytics, time-series). It is PRIVATE - reachable only from another instance on the same private network, via the DB's internal/private IP on the ClickHouse HTTP port 8123 (CLICKHOUSE_HOST/PORT/USER/PASSWORD/DB env, http://host:8123). Get the ids from plan_managed_datastore/list_flavors (use m1.small+ - ClickHouse needs >=2GB RAM), list_private_networks, list_keypairs. Provisioning takes ~5 min; poll list_clickhouse_databases until status='ready'. HIGH AVAILABILITY: pass ha:true to get THREE machines on three different physical hosts behind a load balancer instead of one: all three take reads and writes, so losing a machine costs no failover and no write pause, and the replacement refills itself from the survivors before it serves again. It costs about 3x the hourly rate (three machines instead of one) and provisions more slowly. Default is a single machine; show the user the price difference and get an explicit yes before turning HA on.
| Name | Type | Req | Description |
|---|---|---|---|
| db_name | string | – | The database to create (default 'analytics'). |
| db_password | string | – | Password for the db user (letters/numbers/_/- only). Auto-generated and returned once if omitted. |
| db_user | string | – | The database user (default 'appuser'). |
| flavor_id | string | yes | Instance size for the ClickHouse VM - from list_flavors. ClickHouse is RAM-hungry; pick m1.small (2GB) or larger. |
| ha | boolean | – | High availability. FALSE (the default) = ONE machine: right for dev, staging and most side projects, but if that machine dies the database is down until it is rebuilt. TRUE = THREE machines on three… |
| idempotency_key | string | – | – |
| keypair_name | string | yes | SSH keypair name - from list_keypairs. |
| name | string | yes | Name for the managed ClickHouse database (lowercase letters, numbers, hyphens). |
| network_id | string | yes | Private network id - from list_private_networks. The DB is reachable only from this network. |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| security_group_names | array | – | – |
| superuser | boolean | – | Grant the db user global rights (CURRENT GRANTS(ALL ON *.*)) on top of its own database - safe here, it is a dedicated single-tenant VM. SET IT for any app whose own MIGRATIONS create ClickHouse obje… |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_database Create managed Postgres ~996
Provisions a managed PostgreSQL database on a dedicated VM on your private network. Requires a recent plan_managed_datastore. For app deployments, prefer deploy_app database:'managed' so plan_deploy includes and wires the DB automatically. It is PRIVATE - reachable only from another instance on the same private network, via the DB's internal/private IP (not a public address). Get the ids from plan_managed_datastore/list_flavors/list_private_networks/list_keypairs. Provisioning takes ~5 min; poll list_databases until status='ready', then the connection details (private_ip, port 5432, db_name, db_user) are populated. HIGH AVAILABILITY: pass ha:true to get THREE machines on three different physical hosts behind a load balancer with automatic failover instead of one machine: the database survives losing a machine, and nobody has to fail it over by hand. It costs about 3x the hourly rate (three machines instead of one), it provisions more slowly, and one connection string still serves the whole thing. Default is a single machine; show the user the price difference and get an explicit yes before turning HA on.
| Name | Type | Req | Description |
|---|---|---|---|
| db_name | string | – | The database to create (default 'app'). |
| db_password | string | – | Password for the db user. Auto-generated and returned once if omitted. |
| db_user | string | – | The database user (default 'appuser'). |
| extensions | array | – | Postgres extensions to pre-install at provision time (allowlisted): 'pgvector'/'vector' (embeddings), 'postgis' (geo), 'pgaudit', 'pg_trgm', 'pgcrypto', 'hstore', 'uuid-ossp', 'citext', 'ltree', 'pg_… |
| flavor_id | string | – | Instance size for the DB VM - from list_flavors. |
| ha | boolean | – | High availability. FALSE (the default) = ONE machine: right for dev, staging and most side projects, but if that machine dies the database is down until it is rebuilt. TRUE = THREE machines on three… |
| idempotency_key | string | – | – |
| image_role | string | – | Free hosting runtime role; the backend resolves the private image. Not an image ID. |
| keypair_name | string | yes | SSH keypair name - from list_keypairs (for operating the DB VM). |
| name | string | yes | Name for the managed database (lowercase letters, numbers, hyphens). |
| network_id | string | yes | Private network id - from list_private_networks. The DB is reachable only from this network. |
| provisioning_mode | string | – | Explicit hosting choice. Free uses the account entitlement and server-owned image/size; it never falls back to paid. Omit to keep paid hosting. |
| required_disk_gb | number | – | Minimum root disk required by the app. Free hosting never grows the disk or silently charges for a larger size. |
| required_memory_mb | integer | – | Minimum memory required by the app, including builds; free hosting refuses requirements beyond its fixed size. |
| security_group_names | array | – | – |
| superuser | boolean | – | Grant the db user SUPERUSER - safe here (a dedicated single-tenant DB VM). Use when the app's own migrations must CREATE EXTENSION or alter roles. |
| version | string | – | Postgres major version (default 16). |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_free_postgres ~392
Create the included private PostgreSQL VM, with PostgreSQL installed automatically. Its fixed size is 1 CPU, 1 GiB RAM and 2 GiB total disk including Ubuntu. Create the included website VM first: all database access, including administration, goes through that website. No direct public SQL, SSH or HTTPS endpoint is provided for this database. No paid or pilot fallback. Create application tables in database redu as role redu, never as postgres. For local administration use sudo -u postgres psql -X -v ON_ERROR_STOP=1 -d redu and SET ROLE redu before application DDL or imports. This preserves console read/edit access and its default reader grants. A separate website runtime role may remain read-only. The default pg_hba.conf permits remote login only as redu from the website private address. For a separate runtime role, also add an exact host rule for database redu, that role and the website private IPv4 /32 with scram-sha-256 before the reject rules; validate pg_hba_file_rules and reload PostgreSQL. Keep all other sources rejected; never use trust or a public CIDR. Read the website address from the guest configuration rather than guessing it. SQL grants alone do not permit a new network login. Test the application connection from the website using its actual runtime role, without printing credentials, before publishing. If a shell command returns a nonzero exit code or the app returns HTTP 503, inspect its saved output and sanitized application error; do not repeat the installation blindly. Verify the table through postgres_data_read using the data-view ID returned by get_free_resources; discovery alone does not prove row access. Do not grant superuser or bypass row security to fix a permission error.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| request_key | string | yes | Stable request key. Reuse it after a timeout; never repeat an unknown command with a new key. |
| Name | Type | Req | Description |
|---|---|---|---|
| failure | – | – | – |
| result | – | – | – |
No examples provided.
create_free_website ~141
Create the included Ubuntu website VM. Its fixed size is 1 CPU, 2 GiB RAM and 10 GiB total disk. No hosting credit is consumed. It is separate from the pilot. If capacity is full, keep the queued operation and original request key; do not create a paid replacement. Wait for an active slot in get_free_resources before commands or SSH. Build apps on this VM with exec_free_resource, then publish_free_website. No paid fallback.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| request_key | string | yes | Stable request key. Reuse it after a timeout; never repeat an unknown command with a new key. |
| Name | Type | Req | Description |
|---|---|---|---|
| failure | – | – | – |
| result | – | – | – |
No examples provided.
create_instance Create instance ~562
Creates a raw compute instance for custom OS/cloud-init workflows. For app/source deployments, prefer check_deploy_prerequisites -> plan_deploy -> deploy_app/deploy_compose; do not use create_instance as a shortcut around the deployment plan. Requires a recent plan_instance. For reduOS, set cloud_init_template='reduos' and flavor m1.xlarge (16GB). SSH keypair must exist. For a public web app on a raw VM, pass dns_entries (gives a .redu.cloud URL through redu's automatic public proxy). The origin app should listen on dns_entries[].port; do not install nginx on the VM unless the app itself needs it, because redu.cloud already creates the public Nginx proxy host.
| Name | Type | Req | Description |
|---|---|---|---|
| boot_volume_id | string | – | DISASTER RECOVERY: boot this new VM from an EXISTING volume (one restore_backup just created) instead of a fresh image, so the machine comes back with the restored filesystem AS its root disk. The vo… |
| cloud_init_template | string | – | – |
| dname | string | – | – |
| dns_entries | array | – | Public DNS/proxy entries to create automatically. Use [{ dname:'', port:8080 }] to generate a redu.cloud URL pointing at an origin process on port 8080. |
| flavor_id | string | – | – |
| idempotency_key | string | – | – |
| imageName | string | – | – |
| image_id | string | – | – |
| image_role | string | – | Free hosting runtime role; the backend resolves the private image. Not an image ID. |
| keypair_name | string | yes | – |
| name | string | yes | – |
| network_id | string | yes | – |
| port | integer | – | – |
| provisioning_mode | string | – | Explicit hosting choice. Free uses the account entitlement and server-owned image/size; it never falls back to paid. Omit to keep paid hosting. |
| required_disk_gb | number | – | Minimum root disk required by the app. Free hosting never grows the disk or silently charges for a larger size. |
| required_memory_mb | integer | – | Minimum memory required by the app, including builds; free hosting refuses requirements beyond its fixed size. |
| run_id | string | – | Optional: the id of a run (from create_run). The new resource joins that run, and end_run deletes it with the rest of the run. |
| security_group_names | array | – | – |
| user_data | string | – | – |
| volume | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_media_space Create a WordPress media space ~267
Creates a private Redu media space: a small NFS VM backed by a persistent volume, intended for WordPress/WooCommerce wp-content/uploads in autoscaling clusters. Prefer letting deploy_app/deploy_compose create this by passing create_media_space:true after plan_deploy approval; use this tool when manually preparing or reusing shared uploads storage.
| Name | Type | Req | Description |
|---|---|---|---|
| flavor_id | string | – | Small VM flavor id for the NFS media server. m1.small is enough for most WordPress uploads. |
| idempotency_key | string | – | – |
| keypair_name | string | yes | Existing SSH keypair name. |
| mount_path | string | – | Host mount path that app VMs will use before binding into /var/www/html/wp-content/uploads. |
| name | string | yes | Name for the media space, e.g. myshop-media. |
| network_id | string | – | Private network id. Use the same network as the WordPress app and managed DB. |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| security_group_names | array | – | Security groups for the media VM. Redu opens NFS 2049 from private networks only. |
| size_gb | integer | – | Persistent media volume size in GB. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_private_network Create private network ~195
Creates an isolated private network in your account and returns its id, name and address range. It has its own router with an internet connection and no route to your other private networks, so a job's machines on it are kept apart from the rest of your account. Pass the id as network_id to create_instance or to the managed database tools. It is billed hourly while it exists and counts toward your account's network limit. Remove it with delete_private_network when the job is done.
| Name | Type | Req | Description |
|---|---|---|---|
| cidr | string | – | Optional address range for the new network, e.g. 10.20.0.0/24. Omit it and redu picks the next free range. It must not overlap a range your account already uses. |
| run_id | string | – | Optional: the id of a run (from create_run). The new resource joins that run, and end_run deletes it with the rest of the run. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_private_vps Create a private pilot VPS ~235
Approved pilot accounts only. Create one website VM (1 CPU, 2 GiB RAM, 10 GiB total disk) or one database VM (1 CPU, 1 GiB RAM, 2 GiB total disk). Both start with plain Ubuntu. Maximum one of each, including pending and stopped VMs. The pair shares a 5 GB outgoing Internet budget; incoming and private traffic do not count. Pilot VMs and their specified boot disks have no charge. Existing paid resources keep normal billing. Reuse request_key when retrying this exact request. Creation does not install an application or publish a website. Either size can be used alone. For a smaller-only request, create kind database without a website VM. If the user wants SSH, obtain access with get_private_vps_ssh once active and include its returned command at the end, even if a later application install fails. Never delete or replace a failed tutorial VM unless requested.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| name | string | yes | – |
| request_key | string | yes | Stable key for this request. Reuse it after a timeout. |
| Name | Type | Req | Description |
|---|---|---|---|
| failure | – | – | – |
| operation | – | – | – |
No examples provided.
create_qdrant Create managed Qdrant (vector database) ~353
Provisions a managed Qdrant vector database on a dedicated VM. Requires a recent plan_managed_datastore (engine 'qdrant'). Reachable from your private network at <private_ip>:6333 (REST) and :6334 (gRPC), and at a public https URL; every request must carry the api-key header (always required). Backups: set_managed_backups with service 'qdrant'. FOR AN APP YOU DEPLOY YOU DO NOT NEED THIS: report vector_engines:['qdrant'] in send_signals and the deploy starts and wires a managed Qdrant itself (a compose stack's own qdrant service is replaced by it). Provisioning takes a few minutes; poll list_qdrant until status='ready'.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | – | The API key every request must send (the api-key header). Auto-generated and returned once if omitted. A managed Qdrant always requires one. |
| flavor_id | string | yes | Instance size, from plan_managed_datastore/list_flavors. m1.small (2GB) holds most collections; vectors live in RAM, so size up for millions of large vectors. |
| idempotency_key | string | – | – |
| keypair_name | string | yes | SSH keypair name, from list_keypairs (for operating the Qdrant VM). |
| name | string | yes | Name for the managed Qdrant (lowercase letters, numbers, hyphens). |
| network_id | string | yes | Private network id, from list_private_networks (or check_deploy_prerequisites). Use the SAME network as the app that will connect. |
| security_group_names | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_redis Create managed Redis ~376
Provisions a managed Redis instance on a dedicated VM on your private network. Requires a recent plan_managed_datastore. It is PRIVATE - reachable only from another instance on the same private network, via its internal/private IP on port 6379 (not a public address). AUTH (requirepass) is always enabled. Get the ids from plan_managed_datastore/list_flavors, list_private_networks (or check_deploy_prerequisites), list_keypairs - use the SAME network_id as the app that will connect. Provisioning takes ~5 min; poll list_redis until status='ready', then the connection details (private_ip, port 6379) are populated. Wire an app with REDIS_URL=redis://:<password>@<private_ip>:6379 (pass it via deploy_app env).
| Name | Type | Req | Description |
|---|---|---|---|
| flavor_id | string | yes | Instance size for the Redis VM - from list_flavors. m1.small (2GB) is plenty for most caches/queues. |
| idempotency_key | string | – | – |
| keypair_name | string | yes | SSH keypair name - from list_keypairs (for operating the Redis VM). |
| name | string | yes | Name for the managed Redis instance (lowercase letters, numbers, hyphens). |
| network_id | string | yes | Private network id - from list_private_networks (or check_deploy_prerequisites). Redis is reachable only from this network; use the SAME network as the app that will connect. |
| password | string | – | Redis AUTH password (requirepass). Auto-generated and returned once if omitted. |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| security_group_names | array | – | – |
| version | string | – | Redis major version (default '7'). |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_relational_database Create managed MySQL/MariaDB ~528
Provisions a managed MySQL (or MariaDB) database on a dedicated VM on your private network - the relational-database resource (use this instead of create_database when the app needs MySQL/MariaDB, e.g. WordPress, NextCloud, Matomo, many PHP/LAMP apps). Requires a recent plan_managed_datastore. For app deployments, prefer deploy_app database:'managed' with db_engine mysql/mariadb so plan_deploy includes and wires the DB automatically. It is PRIVATE - reachable only from another instance on the same private network, via the DB's internal/private IP (port 3306), not a public address. Get the ids from plan_managed_datastore/list_flavors/list_private_networks/list_keypairs. Provisioning takes ~5 min; poll list_relational_databases until status='ready', then the connection details (private_ip, port 3306, db_name, db_user) are populated. MySQL is created with mysql_native_password auth so older clients/apps connect cleanly. (ClickHouse is a separate resource - use create_clickhouse / list_clickhouse_databases.)
| Name | Type | Req | Description |
|---|---|---|---|
| db_name | string | – | The database to create (default 'app'). |
| db_password | string | – | Password for the db user (letters/numbers/_/- only). Auto-generated and returned once if omitted. |
| db_user | string | – | The database user (default 'appuser'). |
| engine | string | – | Database engine: 'mysql' (default) or 'mariadb'. Both speak the MySQL protocol (mysql:// URL). Pick the one your app/stack uses. (For analytics/column-store needs use create_clickhouse instead - Clic… |
| flavor_id | string | yes | Instance size for the DB VM - from list_flavors. |
| idempotency_key | string | – | – |
| keypair_name | string | yes | SSH keypair name - from list_keypairs (for operating the DB VM). |
| name | string | yes | Name for the managed database (lowercase letters, numbers, hyphens). |
| network_id | string | yes | Private network id - from list_private_networks. The DB is reachable only from this network. |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| security_group_names | array | – | – |
| version | string | – | Engine version (e.g. mysql '8.0', mariadb '11.4'). Defaults to the engine's current major if omitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_run Create run ~99
Starts a run: a record in your account that groups everything one job creates. Pass its id as run_id to create_private_network, create_instance and create_volume; each resource joins the run. When the job is done, end_run deletes everything in the run and checks each one gone. A run itself costs nothing; its resources are billed as usual.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Optional short name for the run, e.g. nightly-eval. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_snapshot Create snapshot ~55
Creates a snapshot of a running instance.
| Name | Type | Req | Description |
|---|---|---|---|
| instanceId | string | yes | – |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| snapshotName | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
create_volume Create volume ~89
Creates a block storage volume.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| provisioning_mode | string | – | This operation is not included in the free resource entitlement. Review paid pricing first. |
| run_id | string | – | Optional: the id of a run (from create_run). The new resource joins that run, and end_run deletes it with the rest of the run. |
| size | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| available_keypairs | array | – | – |
| duplicate | boolean | – | – |
| error | boolean | – | – |
| idempotency_key | string | – | – |
| invalid_keypair_name | boolean | – | – |
| machine | – | – | – |
| mode | string | – | – |
| needs_keypair | boolean | – | – |
| needs_keypair_name | boolean | – | – |
| needs_plan | boolean | – | – |
| next | string | – | – |
| plan_tool | string | – | – |
| request | – | – | – |
| result | – | – | – |
| source_mismatch | boolean | – | – |
| validation | – | – | – |
No examples provided.
delete_api_key Delete an API key (needs approval) ~151
Deletes one of the account's API keys, by id or by name. Anything that uses the key stops working at once, so the first call deletes nothing: it shows the key (name, scopes, last used) for the user to approve; call again with confirm:true only after their yes. Use it to clean up a key you created for a task that is finished.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set true ONLY after the user has explicitly approved deleting this key (see the confirmation the first call returns). Do NOT set it yourself. |
| id | – | – | The key's id, from list_api_keys. |
| name | string | – | Or the key's name, when exactly one key has it. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| error | boolean | – | – |
| key | – | – | – |
| matches | array | – | – |
| needs_confirmation | boolean | – | – |
| next | string | – | – |
| validation | – | – | – |
No examples provided.
delete_backup Delete backup ~27
Deletes a backup by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_clickhouse Delete managed ClickHouse ~49
Deletes a managed ClickHouse database and its underlying VM. Pass the numeric id from list_clickhouse_databases. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_cluster Delete an autoscaling cluster ~197
Deletes an autoscaling cluster - tears down the WHOLE cluster: every autoscaled EXTRA member VM, the load balancer, the pool, the cluster security group, and the cluster's *.redu.cloud proxy host. Your SOURCE (hero) VM is NOT part of the stack and is NOT deleted - it was the always-on baseline member but it is your own VM; delete_instance it separately if you no longer need it. Pass stack_name + stack_id from list_clusters. Deleting extra members individually does NOT work (the autoscaling group re-creates them under load) - this deletes the group itself. The managed database / external store the cluster used is NOT touched (data safety); delete_database it separately when you are done with the data. Cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| stack_id | string | yes | Cluster stack id, from list_clusters (id). |
| stack_name | string | yes | Cluster stack name, from list_clusters (stack_name). |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| mode | string | – | – |
| next | string | – | – |
| stack_id | string | – | – |
No examples provided.
delete_database Delete managed Postgres ~47
Deletes a managed Postgres database and its underlying VM. Pass the numeric database id from list_databases. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_deployment Delete deployment ~132
Deletes a deployment and its underlying app VM, with the data kept on that machine (its named volumes): the only way kept data is deleted, so ask the user first. Pass the numeric id from list_deployments. IMPORTANT: its managed datastores are NOT deleted (data safety): its database, Redis and Qdrant keep running and billing, and this tool returns each id so you can delete_database / delete_relational_database / delete_redis / delete_qdrant them when you're done with the data. Cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Deployment id from list_deployments. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | number | – | – |
| kept_stores | – | – | – |
| managed_db | – | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_dns_entry Remove a public name (needs approval) ~248
Removes one public name (a DNS entry), by its id from list_dns_entries or by the name itself. The name stops serving at once, and anything reached through it (a site, an API, an OAuth callback) stops working with it. When the name belongs to one of your instances or deployments, that instance's own list of its names is updated too, the way the console's DNS view does it; the instance, its app and its data are untouched. The first call removes nothing: it shows the entry for the user to approve; call again with confirm:true only after their yes. Use it to clear the names a release_domain refusal (DOMAIN_IN_USE) lists. redu's own platform names cannot be removed.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set true ONLY after the user has explicitly approved removing this name (see the confirmation the first call returns). Do NOT set it yourself. |
| id | – | – | The entry's id: `id` in list_dns_entries, or in the names a DOMAIN_IN_USE refusal of release_domain lists. |
| name | string | – | Or a public name the entry serves (e.g. shop.example.com), when exactly one entry has it. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| error | boolean | – | – |
| forwards_to | string|null | – | – |
| id | string | – | – |
| instance_id | string|null | – | – |
| instance_updated | boolean | – | – |
| matches | array | – | – |
| mode | string | – | – |
| names | array | – | – |
| needs_confirmation | boolean | – | – |
| next | string | – | – |
| validation | – | – | – |
No examples provided.
delete_free_resource ~84
Permanently delete one included free VM and its boot disk after explicit user authorization. Use its occupied operation ID from get_free_resources. Deleting the website interrupts access to the private database. The slot is released only after verified deletion. Monthly website usage is retained; no paid or pilot VM is affected.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | yes | – |
| operation_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| failure | – | – | – |
| result | – | – | – |
No examples provided.
delete_instance Delete instance ~32
Permanently deletes an instance. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_keypair Delete keypair ~34
Removes an SSH keypair from your account by name.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name of the keypair to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| mode | string | – | – |
| name | string | – | – |
No examples provided.
delete_private_network Delete private network ~80
Permanently deletes a private network you added with create_private_network, which stops its billing. It is refused for your default network and for any network a machine is still attached to: delete those machines, or the resources running on them, first. Get the id from list_private_networks.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_private_vps Delete a pilot VPS ~124
Permanently delete one of your pilot VMs and its boot disk, including all stored data. Requires explicit user authorization. Use the occupied operation id from get_private_vps_pilot, not a paid VM id. After deletion is verified its one-per-account slot becomes available for a new create_private_vps request. Keeps account approval, the other pilot, private networking and the existing outgoing allowance. Does not reset the monthly budget.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | yes | Set only after the user authorizes deleting this pilot and its data. |
| operation_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| failure | – | – | – |
| operation | – | – | – |
No examples provided.
delete_qdrant Delete managed Qdrant ~55
Deletes a managed Qdrant and its underlying VM, with every collection in it. Pass the numeric id from list_qdrant. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_redis Delete managed Redis ~46
Deletes a managed Redis instance and its underlying VM. Pass the numeric id from list_redis. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
delete_relational_database Delete managed MySQL/MariaDB ~53
Deletes a managed MySQL/MariaDB database and its underlying VM. Pass the numeric id from list_relational_databases. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | ID of the resource to delete. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_notices | array | – | – |
| deleted | boolean | – | – |
| id | string | – | – |
| mode | string | – | – |
| next | string | – | – |
No examples provided.
How do I install the cloud.redu/mcp server?
cloud.redu/mcp is a hosted endpoint at https://mcp.redu.cloud/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.redu.cloud
claude mcp add --transport http cloud-redu-mcp 'https://mcp.redu.cloud/mcp'
What is the cloud.redu/mcp server?
cloud.redu/mcp is listed in the public MCP registry as cloud.redu/mcp. Agent-native cloud, EU-hosted. Provision VMs, networks & databases on redu.cloud via MCP. This page covers its hosted endpoint (https://mcp.redu.cloud/mcp).
Is the cloud.redu/mcp server safe to use?
cloud.redu/mcp scores 88 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the cloud.redu/mcp server expose?
cloud.redu/mcp exposes 107 tools: get_private_vps_pilot, create_private_vps, delete_private_vps, exec_private_vps, get_private_vps_ssh, and 102 more. Their descriptions and schemas cost roughly 31,257 tokens of context every time the server is loaded.
Does the cloud.redu/mcp server require authentication?
Yes. cloud.redu/mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the cloud.redu/mcp server still maintained?
cloud.redu/mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.