Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

cloud.redu/mcp

REMOTE · MCP.REDU.CLOUD

Agent-native cloud, EU-hosted. Provision VMs, networks & databases on redu.cloud via MCP.

Available components

0 this week 88 Trust /100

Last scanned (3 hours ago)

Scores higher than 96% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Cloud Infrastructure

Trust breakdown (7 categories)

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
Transport & Reachability100
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
Changelog

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
Diagnostics

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
MCP tools · 107 exposed · ~31,257 tokens

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 →

Tool Tokens
architecture_diagram ~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.

NameTypeReqDescription
include_load_balancersboolean–Include load balancers in the map (default true).
include_managedboolean–Include managed databases (Postgres/MySQL/MariaDB/ClickHouse/Redis/Qdrant) in the map (default true).
include_volumesboolean–Include block volumes in the map (default true).
NameTypeReqDescription
account_noticesarray––
counts–––
modestring––
nextstring––
redu_md_filenamestring––
redu_md_sectionstring––
report_filenamestring––
report_markdownstring––
resources–––

No examples provided.

attach_volume ~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'.

NameTypeReqDescription
instance_idstringyesInstance to attach it to / detach it from - from list_instances (id).
volume_idstringyesVolume 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).
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

check_deploy_prerequisites ~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 }.

NameTypeReqDescription
modestring–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…
NameTypeReqDescription
account_noticesarray––
account_okboolean––
keypair_namestring|null––
missingarray––
modestring––
network_idstring|null––
nextstring––
platform_factsarray––
quota–––
readyboolean––
ssh_key_recipearray––

No examples provided.

create_api_key ~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.

NameTypeReqDescription
confirmboolean–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_daysinteger–Optional: auto-expire the key after N days.
namestringyesA recognizable name for the key, e.g. 'supabase-backups'.
scopesarrayyesLEAST-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…
NameTypeReqDescription
account_noticesarray––
billing_noticestring––
errorboolean––
expires_at–––
keystring––
modestring––
namestring––
needs_confirmationboolean––
nextstring––
scopes–––
validation–––
warningstring––

No examples provided.

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.

NameTypeReqDescription
backupNamestringyesA name for the backup.
instanceIdstring–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_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
volumeIdstring–ID of the volume to back up (see list_volumes). Provide this OR instanceId.
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_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.

NameTypeReqDescription
db_namestring–The database to create (default 'analytics').
db_passwordstring–Password for the db user (letters/numbers/_/- only). Auto-generated and returned once if omitted.
db_userstring–The database user (default 'appuser').
flavor_idstringyesInstance size for the ClickHouse VM - from list_flavors. ClickHouse is RAM-hungry; pick m1.small (2GB) or larger.
haboolean–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_keystring––
keypair_namestringyesSSH keypair name - from list_keypairs.
namestringyesName for the managed ClickHouse database (lowercase letters, numbers, hyphens).
network_idstringyesPrivate network id - from list_private_networks. The DB is reachable only from this network.
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
security_group_namesarray––
superuserboolean–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…
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_database ~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.

NameTypeReqDescription
db_namestring–The database to create (default 'app').
db_passwordstring–Password for the db user. Auto-generated and returned once if omitted.
db_userstring–The database user (default 'appuser').
extensionsarray–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_idstring–Instance size for the DB VM - from list_flavors.
haboolean–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_keystring––
image_rolestring–Free hosting runtime role; the backend resolves the private image. Not an image ID.
keypair_namestringyesSSH keypair name - from list_keypairs (for operating the DB VM).
namestringyesName for the managed database (lowercase letters, numbers, hyphens).
network_idstringyesPrivate network id - from list_private_networks. The DB is reachable only from this network.
provisioning_modestring–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_gbnumber–Minimum root disk required by the app. Free hosting never grows the disk or silently charges for a larger size.
required_memory_mbinteger–Minimum memory required by the app, including builds; free hosting refuses requirements beyond its fixed size.
security_group_namesarray––
superuserboolean–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.
versionstring–Postgres major version (default 16).
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
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.

NameTypeReqDescription
namestringyes–
request_keystringyesStable request key. Reuse it after a timeout; never repeat an unknown command with a new key.
NameTypeReqDescription
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.

NameTypeReqDescription
namestringyes–
request_keystringyesStable request key. Reuse it after a timeout; never repeat an unknown command with a new key.
NameTypeReqDescription
failure–––
result–––

No examples provided.

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.

NameTypeReqDescription
boot_volume_idstring–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_templatestring––
dnamestring––
dns_entriesarray–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_idstring––
idempotency_keystring––
imageNamestring––
image_idstring––
image_rolestring–Free hosting runtime role; the backend resolves the private image. Not an image ID.
keypair_namestringyes–
namestringyes–
network_idstringyes–
portinteger––
provisioning_modestring–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_gbnumber–Minimum root disk required by the app. Free hosting never grows the disk or silently charges for a larger size.
required_memory_mbinteger–Minimum memory required by the app, including builds; free hosting refuses requirements beyond its fixed size.
run_idstring–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_namesarray––
user_datastring––
volumeobject––
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_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.

NameTypeReqDescription
flavor_idstring–Small VM flavor id for the NFS media server. m1.small is enough for most WordPress uploads.
idempotency_keystring––
keypair_namestringyesExisting SSH keypair name.
mount_pathstring–Host mount path that app VMs will use before binding into /var/www/html/wp-content/uploads.
namestringyesName for the media space, e.g. myshop-media.
network_idstring–Private network id. Use the same network as the WordPress app and managed DB.
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
security_group_namesarray–Security groups for the media VM. Redu opens NFS 2049 from private networks only.
size_gbinteger–Persistent media volume size in GB.
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

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.

NameTypeReqDescription
cidrstring–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_idstring–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.
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_private_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.

NameTypeReqDescription
kindstringyes–
namestringyes–
request_keystringyesStable key for this request. Reuse it after a timeout.
NameTypeReqDescription
failure–––
operation–––

No examples provided.

create_qdrant ~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'.

NameTypeReqDescription
api_keystring–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_idstringyesInstance 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_keystring––
keypair_namestringyesSSH keypair name, from list_keypairs (for operating the Qdrant VM).
namestringyesName for the managed Qdrant (lowercase letters, numbers, hyphens).
network_idstringyesPrivate network id, from list_private_networks (or check_deploy_prerequisites). Use the SAME network as the app that will connect.
security_group_namesarray––
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_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).

NameTypeReqDescription
flavor_idstringyesInstance size for the Redis VM - from list_flavors. m1.small (2GB) is plenty for most caches/queues.
idempotency_keystring––
keypair_namestringyesSSH keypair name - from list_keypairs (for operating the Redis VM).
namestringyesName for the managed Redis instance (lowercase letters, numbers, hyphens).
network_idstringyesPrivate 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.
passwordstring–Redis AUTH password (requirepass). Auto-generated and returned once if omitted.
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
security_group_namesarray––
versionstring–Redis major version (default '7').
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_relational_database ~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.)

NameTypeReqDescription
db_namestring–The database to create (default 'app').
db_passwordstring–Password for the db user (letters/numbers/_/- only). Auto-generated and returned once if omitted.
db_userstring–The database user (default 'appuser').
enginestring–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_idstringyesInstance size for the DB VM - from list_flavors.
idempotency_keystring––
keypair_namestringyesSSH keypair name - from list_keypairs (for operating the DB VM).
namestringyesName for the managed database (lowercase letters, numbers, hyphens).
network_idstringyesPrivate network id - from list_private_networks. The DB is reachable only from this network.
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
security_group_namesarray––
versionstring–Engine version (e.g. mysql '8.0', mariadb '11.4'). Defaults to the engine's current major if omitted.
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

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.

NameTypeReqDescription
namestring–Optional short name for the run, e.g. nightly-eval.
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_snapshot ~55

Creates a snapshot of a running instance.

NameTypeReqDescription
instanceIdstringyes–
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
snapshotNamestringyes–
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

create_volume ~89

Creates a block storage volume.

NameTypeReqDescription
namestringyes–
provisioning_modestring–This operation is not included in the free resource entitlement. Review paid pricing first.
run_idstring–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.
sizeintegeryes–
NameTypeReqDescription
account_noticesarray––
available_keypairsarray––
duplicateboolean––
errorboolean––
idempotency_keystring––
invalid_keypair_nameboolean––
machine–––
modestring––
needs_keypairboolean––
needs_keypair_nameboolean––
needs_planboolean––
nextstring––
plan_toolstring––
request–––
result–––
source_mismatchboolean––
validation–––

No examples provided.

delete_api_key ~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.

NameTypeReqDescription
confirmboolean–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.
namestring–Or the key's name, when exactly one key has it.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
errorboolean––
key–––
matchesarray––
needs_confirmationboolean––
nextstring––
validation–––

No examples provided.

delete_backup ~27

Deletes a backup by ID.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_clickhouse ~49

Deletes a managed ClickHouse database and its underlying VM. Pass the numeric id from list_clickhouse_databases. This cannot be undone.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_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.

NameTypeReqDescription
stack_idstringyesCluster stack id, from list_clusters (id).
stack_namestringyesCluster stack name, from list_clusters (stack_name).
NameTypeReqDescription
account_noticesarray––
deletedboolean––
modestring––
nextstring––
stack_idstring––

No examples provided.

delete_database ~47

Deletes a managed Postgres database and its underlying VM. Pass the numeric database id from list_databases. This cannot be undone.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

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.

NameTypeReqDescription
idintegeryesDeployment id from list_deployments.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idnumber––
kept_stores–––
managed_db–––
modestring––
nextstring––

No examples provided.

delete_dns_entry ~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.

NameTypeReqDescription
confirmboolean–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.
namestring–Or a public name the entry serves (e.g. shop.example.com), when exactly one entry has it.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
errorboolean––
forwards_tostring|null––
idstring––
instance_idstring|null––
instance_updatedboolean––
matchesarray––
modestring––
namesarray––
needs_confirmationboolean––
nextstring––
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.

NameTypeReqDescription
confirmedbooleanyes–
operation_idstringyes–
NameTypeReqDescription
failure–––
result–––

No examples provided.

delete_instance ~32

Permanently deletes an instance. This cannot be undone.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_keypair ~34

Removes an SSH keypair from your account by name.

NameTypeReqDescription
namestringyesName of the keypair to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
modestring––
namestring––

No examples provided.

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.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_private_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.

NameTypeReqDescription
confirmedbooleanyesSet only after the user authorizes deleting this pilot and its data.
operation_idstringyes–
NameTypeReqDescription
failure–––
operation–––

No examples provided.

delete_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.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_redis ~46

Deletes a managed Redis instance and its underlying VM. Pass the numeric id from list_redis. This cannot be undone.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

delete_relational_database ~53

Deletes a managed MySQL/MariaDB database and its underlying VM. Pass the numeric id from list_relational_databases. This cannot be undone.

NameTypeReqDescription
idstringyesID of the resource to delete.
NameTypeReqDescription
account_noticesarray––
deletedboolean––
idstring––
modestring––
nextstring––

No examples provided.

Install

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

# add to Claude Code
claude mcp add --transport http cloud-redu-mcp 'https://mcp.redu.cloud/mcp'
Common questions

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.