bots.st/ffxf
FFxF
Provision and manage VMs and databases, firewalls, load bala
2601 ms
answered our call
- State
- Answered
- Protocol
- MCP 2025-06-18
- Tools listed
- 71
- Answered
- 3 of the last 3 calls
How to reach it
- MCP, HTTP
https://ffxf.net/mcp
What it can do
| Tool | What it says it does |
|---|---|
add_ssh_key | Saves a public key on the account so new machines can be reached without a password. Scope: sshkeys.write. |
attach_firewall | From now on the machine refuses inbound traffic no rule of its firewalls opens; enforced within about ten seconds of the call. Up to 5 firewalls per machine, rules add up. Refused for a machine with no public address. Attaching again is harmless. Scope: network.write. |
backup_database | Starts a differential backup within a minute, e.g. before a risky migration. Not available on a linked fork. Scope: backups.write. |
connect_vpc | Hot-adds a card on the private network and sets its address in the system, without a restart. configuration: manual means the address must be set by hand in the guest. Connecting again returns the same address. Scope: network.write. |
create_database | Orders a managed database (PostgreSQL, MySQL, MariaDB or Valkey) in a private network, billed by the hour from now (the account needs 24 hours of credit), or by the month (730 hours) or the year (ten months) with billing; get_database_options gives each price. A monthly or yearly period comes out… |
create_database_user | Creates a user with a generated password, returned here once (also readable with get_database_credentials); live within seconds. Up to 30 users. It connects only to its databases (every logical database, future ones included, when databases is omitted): it reads and writes everything there and… |
create_firewall | Creates a reusable set of inbound and outbound rules. Without rules it starts with SSH (TCP 22) and ping open from anywhere; pass rules: [] for none. Nothing is filtered until it is attached to a machine. Scope: network.write. |
create_load_balancer | Orders a load balancer in a private network, billed by the hour from now (the account needs 24 hours of credit), or by the month (7.30 CAD) or the year (73 CAD) with billing. A monthly or yearly period comes out of credit if it covers it; otherwise billing.pending_invoice holds the invoice to pay… |
create_logical_database | Creates another database inside the managed database (like defaultdb), owned by the admin; up to 30. Not on Valkey (numbered databases, SELECT 0 to 15). Scope: databases.write. |
create_vm | Orders a machine and spends credit (hourly) or raises an invoice (monthly). Returns the machine and a provisioning action to poll with get_action. Retrying the same order is safe: it is deduplicated for 24 hours. Scope: vms.create. |
create_vpc | Creates an isolated private network; ready when the call returns. The first usable address (.1) is reserved for the gateway. Scope: network.write. |
delete_database | DELETES the database and its data; billing stops. Ask the user first. confirm_name must be the database's exact name. Its backups stay 7 days (restore_database can bring it back meanwhile). Refused while a linked fork depends on it. Scope: vms.destroy. |
delete_database_user | Hands the user's objects to the admin, then drops the user. The admin (ffxfadmin, or default on Valkey) cannot be deleted. Scope: databases.write. |
delete_firewall | Deletes a firewall attached to no machine. Refused while it protects one: detach it first. Scope: network.write. |
delete_listener | Closes the port and removes its rules. Scope: network.write. |
delete_load_balancer | Deletes the load balancer, its address and its configuration; billing stops. Target machines are not touched. Ask the user first. Scope: vms.destroy. |
delete_logical_database | DROPS the logical database with everything in it (the backups keep it 7 days). Ask the user first. Scope: databases.write. |
delete_pool | Removes a pool, its targets and the rules leading to it. Scope: network.write. |
delete_ssh_key | Removes a key from the account. Machines already deployed with it keep it; only future deployments change. Scope: sshkeys.write. |
delete_vpc | Deletes an empty private network. Refused while a machine is still on it: disconnect or destroy those first. Ask the user first. Scope: network.write. |
destroy_vm | DESTROYS the machine and its disk, with no undo and no backup kept. Ask the user first. confirm_hostname must be the machine's exact hostname. Scope: vms.destroy. |
detach_database_fork | Gives a linked fork its own copy of the data; the database is unavailable for about 30 seconds, then its backups start. Scope: vms.action. |
detach_firewall | Removes the firewall's rules from the machine; with no other firewall it accepts all inbound traffic again. Scope: network.write. |
disable_extension | Drops the extension without CASCADE: if objects depend on it, it stays and get_database shows why in warning. Scope: databases.write. |
disconnect_vpc | Removes the machine's private address and card, without a restart. Refused for the only network of a machine with no public address. Scope: network.write. |
enable_extension | PostgreSQL only. Enables an extension from get_database_options (vector for pgvector, postgis, pg_trgm…) in one logical database; installed on demand, live within a minute. Scope: databases.write. |
estimate_vm | Runs every check of create_vm and prices it, without creating anything: would_succeed, hourly rate, monthly price, credit required. Call it before create_vm. Scope: vms.create. |
fork_database | Creates a NEW database, billed like any other, whose data is an instant copy of this one (for a test or staging copy), with the same users and passwords. It stays linked to its source for up to 7 days (no backups of its own, the source cannot be deleted) unless detach_database_fork ends that… |
get_account | Credit balance, hourly burn rate and runway, quota and budget caps. Scope: billing.read. |
get_action | Follows an asynchronous action (create, reinstall, power…). Poll until status leaves running; on error it carries the reason. Scope: vms.read. |
get_database | One database: status, connection (host, private ip, port, defaultdb and ffxfadmin; on Valkey no database and default), public access and sources, disk usage and cap, users with their databases (null: all) and read_only, logical databases and extensions, Valkey's eviction policy and data memory… |
get_database_credentials | Every user with its password, databases and read_only, and its own connection_uri; ready-made connection strings for the admin (private network, and public when open). Treat the result as a secret: give it to the application through an environment variable or a secret store, never into code… |
get_database_metrics | CPU, memory, connections and commits per minute (commands per minute on Valkey) over 1h (1-minute buckets), 24h (10 minutes) or 7d (1 hour); only buckets with samples. Scope: vms.read. |
get_database_options | What can be ordered: engines and versions, extensions, sizes with their hourly, monthly and yearly prices per region, and the price of disk beyond what a size includes. Call it before create_database and show the price to the user. Scope: vms.read. |
get_firewall | One firewall: its rules and the machines it protects, with the status of each (applied, pending, error). Scope: vms.read. |
get_load_balancer | One load balancer in full: status, ipv4/ipv6 to put in DNS, pools with targets (health, sessions, response time), listeners with rules in evaluation order, certificates. Scope: vms.read. |
get_load_balancer_metrics | Requests by response class, connections, bytes in/out and peak sessions over 1h (1-minute buckets), 24h (15 minutes) or 7d (1 hour), plus totals. Scope: vms.read. |
get_runners | The runs-on labels with their vCPU, memory and price per minute, the account's concurrency (vCPU of jobs starting or running, and the cap), the linked GitHub organizations and accounts, this month's minutes and cost per repository, the actions cache next to the runners (bytes, entries and last use… |
get_slow_queries | The 20 queries with the most total time (pg_stat_statements, values replaced by $1, $2…; performance_schema on MySQL and MariaDB, values replaced by ?): calls, total and mean time, rows. A starting point for indexes. On Valkey, the commands with the most total time since the engine started (GET… |
get_vm | One machine: status, IPv4, IPv6 /64, specs, traffic (Internet only, this traffic month: used_gb, limit_gb, period_ends_at), billing, suspension. Scope: vms.read. |
get_vm_metrics | CPU, memory, disk and network as measured from outside the machine. Scope: vms.read. |
get_vm_network | IPv4 and IPv6 addresses of a machine with their reverse DNS, and its private networks. Scope: vms.read. |
get_vpc | One private network and the machines on it, with their private address. Scope: vms.read. |
list_database_backups | Completed backups (weekly full, daily differential; the transaction log is archived continuously) and the restore window: any minute in it can be restored with restore_database. On Valkey, snapshots (rdb) every hour when there were writes, all kept 24 hours, then one a day. Scope: vms.read. |
list_databases | The account's managed databases with their status, private and public addresses, disk, backups and billing (no passwords), plus the quota. Scope: vms.read. |
list_firewalls | The account's firewalls with their inbound rules and the machines they protect, plus the quota. Scope: vms.read. |
list_images | Operating systems and ready-to-use application images. The slug is what create_vm expects. Public, no key needed. |
list_load_balancers | The account's load balancers with their addresses, pools, targets and health, listeners and rules, certificates; plus the quota. Scope: vms.read. |
list_plans | Plans with their resources and prices (hourly and monthly, in CAD). Public, no key needed. |
list_regions | Where machines can run. Public, no key needed. |
list_runner_jobs | Jobs that ran or wait on FFxF runners, most recent first: repository, workflow and job, label, status (queued with waiting_reason credit, budget or account; running; succeeded; failed, stopped_for_credit when the credit ran out; cancelled; refused with refusal), times, billed minutes and amount… |
list_ssh_keys | SSH keys saved on the account, to pass to create_vm. Scope: sshkeys.write or vms.read. |
list_vm_actions | History of actions on one machine, from the API and the console. Scope: vms.read. |
list_vms | The account's machines with their status, addresses and billing. Scope: vms.read. |
list_vpcs | The account's private networks with their range, gateway and connected machines, plus the quota. Scope: vms.read. |
move_vpc | Joins the target network, then leaves this one, so the machine is never cut off. Keeps the same address ending when free. Scope: network.write. |
power_vm | start, shutdown (clean ACPI), reboot, or stop (hard power-off). Returns an action to poll with get_action. Scope: vms.action. |
reinstall_vm | ERASES THE DISK and redeploys another image. Ask the user first. confirm_hostname must be the machine's exact current hostname. Scope: vms.action. |
rename_vm | Changes the hostname, inside the guest and in the console. Scope: vms.action. |
reset_database_password | Gives the user a new password, returned here; the old one stops working within seconds, so update the application first or right after. Scope: databases.write. |
And 11 more tools.
In its maker's words
Create and manage VMs, managed databases, firewalls and load balancers in Montréal, Canada.
- Website
- ffxf.net/agents
- Publisher
- ffxf.net
- Listed from
- the official MCP Registry as
net.ffxf/cloud - Version
- 1.12.0, updated 28 Oct 2026
- Kinds of work
- Cloud and DevOps, Data and databases, Security and trust
The domain it lives on
- ffxf.net
- registered 28 Mar 2024 (2 years ago), at Porkbun LLC, its name does not resolve now
From our own crawl of domain names: registry records and the home page as our crawler last saw it.
Every call we made
| When | What happened | Time |
|---|---|---|
| Answered | 2601 ms | |
| Answered | 2405 ms | |
| Answered | 749 ms |
Next door
Is this your bot? Claim its address to add a verified badge and keep the listing current.