FFxF
REMOTE · FFXF.NET
Create and manage VMs, managed databases, firewalls and load balancers in Montréal, Canada.
Available components
Last scanned (1 hour ago)
Scores higher than 54% 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 Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (reinstall_vm). See how to fix → View diagnostics → Fail
- 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
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 8659 tokens (~121/item across 71 items; 71 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 Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 79% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 11 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 72 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 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 28 Oct 26 65
First indexed and scored.
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://ffxf.net/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=ffxf.net | CN=YE1,O=Let's Encrypt,C=US | 31 Oct 2026 | 29 Jan 2027 | ECDSA 256 | ECDSA-SHA384 | 5e236c2c10e22e7819fd0a2e8763e10112b |
| SANs: ffxf.net | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| 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 |
| CN=ISRG Root X1,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 4 Jun 2015 | 4 Jun 2035 | RSA 4096 | SHA256-RSA | 8210cfb0d240e3594463e0bb63828b00 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of ffxf.net. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| net. | present | 37331 | 13 | Verified |
| ffxf.net. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000 |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://ffxf.net/mcp | Verified | 200 | |
| http (plaintext) | http://ffxf.net/mcp | HTTPS enforced | 301 | https://ffxf.net/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 →
add_ssh_key Add an SSH key ~66
Saves a public key on the account so new machines can be reached without a password. Scope: sshkeys.write.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| public_key | string | yes | OpenSSH public key, e.g. ssh-ed25519 AAAA… user@host. |
No output schema declared.
No examples provided.
attach_firewall Attach a firewall to a machine ~107
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.
| Name | Type | Req | Description |
|---|---|---|---|
| firewall | integer | yes | Firewall id, as returned by list_firewalls or create_firewall. |
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
No output schema declared.
No examples provided.
backup_database Back up now ~55
Starts a differential backup within a minute, e.g. before a risky migration. Not available on a linked fork. Scope: backups.write.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
connect_vpc Connect a machine to a private network ~116
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ip | string | – | Address wanted in the range; default the next free one. |
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
| vpc | integer | yes | Private network id, as returned by list_vpcs or create_vpc. |
No output schema declared.
No examples provided.
create_database Create a database ~335
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 of credit if it covers it; otherwise billing.pending_invoice holds the invoice to pay and it stays hourly until then. Ready within minutes (status pending → active), with the admin user ffxfadmin and the logical database defaultdb (Valkey: the admin default, no logical database). Retrying the same call is safe. Scope: vms.create.
| Name | Type | Req | Description |
|---|---|---|---|
| billing | string | – | hourly (default), monthly (the price of 730 hours, paid in advance) or yearly (ten months). Ask the user; monthly or yearly needs credit or an invoice paid by the user. |
| engine | string | – | Default postgresql. mysql is Percona Server; valkey is Redis-compatible (key-value, in memory). |
| idempotency_key | string | – | Your own unique value per order. By default one is derived from the call. |
| name | string | yes | – |
| size_gb | integer | – | Memory in GB, one of the sizes of get_database_options for the region. Default: 1, or the source's size. |
| version | string | – | Major version from get_database_options; the newest by default. |
| vpc | integer | yes | Private network the database joins (list_vpcs); the machines on it reach the database. |
No output schema declared.
No examples provided.
create_database_user Add a database user ~234
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 creates tables (on PostgreSQL in public too), or only reads with read_only; elsewhere it has no access. Its connection_uri points to defaultdb, or to its first database without access to defaultdb. On Valkey, an ACL user with every key and data command (no databases, no read_only). Treat the password as a secret. Scope: databases.write.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| databases | array | – | Logical databases it may connect to (existing ones, see get_database). Omit for all of them, future ones included. |
| read_only | boolean | – | SELECT only (MySQL, MariaDB: SELECT and SHOW VIEW). Default false. |
| username | string | yes | Lowercase letters, digits and _, starting with a letter or _. |
No output schema declared.
No examples provided.
create_firewall Create a firewall ~73
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| rules | array | – | – |
No output schema declared.
No examples provided.
create_load_balancer Create a load balancer ~215
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 and it stays hourly until then. Ready within minutes (status pending → active); pools and listeners can be added meanwhile. Retrying the same call is safe. Scope: vms.create.
| Name | Type | Req | Description |
|---|---|---|---|
| billing | string | – | hourly (default), monthly (the price of 730 hours, paid in advance) or yearly (ten months). Ask the user; monthly or yearly needs credit or an invoice paid by the user. |
| idempotency_key | string | – | Your own unique value per order. By default one is derived from the call. |
| name | string | yes | – |
| vpc | integer | yes | Private network whose machines will be the targets (list_vpcs). |
No output schema declared.
No examples provided.
create_logical_database Add a logical database ~92
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| name | string | yes | Lowercase letters, digits and _, starting with a letter or _. |
No output schema declared.
No examples provided.
create_vm Create a machine ~365
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.
| Name | Type | Req | Description |
|---|---|---|---|
| billing | string | yes | Hourly draws on prepaid credit; monthly raises an invoice. Fixed for the life of the machine. |
| hostname | string | yes | Letters, digits, dots and hyphens; no leading, trailing or doubled separator. |
| idempotency_key | string | – | Your own unique value per order. By default one is derived from the order itself. |
| image | string | yes | Image slug from list_images, e.g. debian-13. |
| ipv4 | boolean | – | false orders an IPv6-only machine, cheaper; outbound IPv4 goes through NAT64. |
| options | object | – | Paid options declared by the plan, by name. |
| password_delivery | string | – | email mails a generated password; none needs at least one SSH key. |
| payment | string | – | Monthly only. credit pays from the balance when it covers the invoice. |
| plan | string | yes | Plan slug from list_plans, e.g. nano. |
| private_only | boolean | – | No public address at all; needs vpc. Reachable only from the private network, Internet through its gateway. Priced like ipv4: false. |
| region | string | yes | Region slug from list_regions, e.g. montreal. |
| ssh_keys | array | – | Fingerprints or ids of SSH keys already on the account (see list_ssh_keys). |
| vpc | integer | – | Private network id (list_vpcs) to connect the machine to, in the same region. |
No output schema declared.
No examples provided.
create_vpc Create a private network ~129
Creates an isolated private network; ready when the call returns. The first usable address (.1) is reserved for the gateway. Scope: network.write.
| Name | Type | Req | Description |
|---|---|---|---|
| cidr | string | yes | Private IPv4 range from /16 to /29 in 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16, e.g. 10.0.0.0/24. |
| name | string | yes | – |
| region | string | yes | Region slug from list_regions, e.g. montreal. |
No output schema declared.
No examples provided.
delete_database Delete a database ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_name | string | yes | The database's exact name, typed back as confirmation. |
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
delete_database_user Delete a database user ~83
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| username | string | yes | Lowercase letters, digits and _, starting with a letter or _. |
No output schema declared.
No examples provided.
delete_firewall Delete a firewall ~53
Deletes a firewall attached to no machine. Refused while it protects one: detach it first. Scope: network.write.
| Name | Type | Req | Description |
|---|---|---|---|
| firewall | integer | yes | Firewall id, as returned by list_firewalls or create_firewall. |
No output schema declared.
No examples provided.
delete_listener Close a listener ~61
Closes the port and removes its rules. Scope: network.write.
| Name | Type | Req | Description |
|---|---|---|---|
| lb | integer | yes | Load balancer id, as returned by list_load_balancers or create_load_balancer. |
| listener | integer | yes | Listener id, from get_load_balancer. |
No output schema declared.
No examples provided.
delete_load_balancer Delete a load balancer ~66
Deletes the load balancer, its address and its configuration; billing stops. Target machines are not touched. Ask the user first. Scope: vms.destroy.
| Name | Type | Req | Description |
|---|---|---|---|
| lb | integer | yes | Load balancer id, as returned by list_load_balancers or create_load_balancer. |
No output schema declared.
No examples provided.
delete_logical_database Delete a logical database ~77
DROPS the logical database with everything in it (the backups keep it 7 days). Ask the user first. Scope: databases.write.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| name | string | yes | Lowercase letters, digits and _, starting with a letter or _. |
No output schema declared.
No examples provided.
delete_pool Delete a pool ~65
Removes a pool, its targets and the rules leading to it. Scope: network.write.
| Name | Type | Req | Description |
|---|---|---|---|
| lb | integer | yes | Load balancer id, as returned by list_load_balancers or create_load_balancer. |
| pool | integer | yes | Pool id, from get_load_balancer. |
No output schema declared.
No examples provided.
delete_ssh_key Delete an SSH key ~48
Removes a key from the account. Machines already deployed with it keep it; only future deployments change. Scope: sshkeys.write.
| Name | Type | Req | Description |
|---|---|---|---|
| key | – | yes | Key id from list_ssh_keys. |
No output schema declared.
No examples provided.
delete_vpc Delete a private network ~63
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vpc | integer | yes | Private network id, as returned by list_vpcs or create_vpc. |
No output schema declared.
No examples provided.
destroy_vm Destroy a machine ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_hostname | string | yes | The machine's exact hostname, typed back as confirmation. |
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
| when | string | – | Monthly machines only: at the end of the paid period, or now. |
No output schema declared.
No examples provided.
detach_database_fork Make a fork independent ~61
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
detach_firewall Detach a firewall from a machine ~73
Removes the firewall's rules from the machine; with no other firewall it accepts all inbound traffic again. Scope: network.write.
| Name | Type | Req | Description |
|---|---|---|---|
| firewall | integer | yes | Firewall id, as returned by list_firewalls or create_firewall. |
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
No output schema declared.
No examples provided.
disable_extension Remove a PostgreSQL extension ~72
Drops the extension without CASCADE: if objects depend on it, it stays and get_database shows why in warning. Scope: databases.write.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| extension | string | yes | – |
| name | string | yes | The logical database. |
No output schema declared.
No examples provided.
disconnect_vpc Disconnect a machine from a private network ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
| vpc | integer | yes | Private network id, as returned by list_vpcs or create_vpc. |
No output schema declared.
No examples provided.
enable_extension Enable a PostgreSQL extension ~93
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| extension | string | yes | – |
| name | string | yes | The logical database, e.g. defaultdb. |
No output schema declared.
No examples provided.
estimate_vm Estimate an order ~283
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.
| Name | Type | Req | Description |
|---|---|---|---|
| billing | string | yes | Hourly draws on prepaid credit; monthly raises an invoice. Fixed for the life of the machine. |
| hostname | string | yes | Letters, digits, dots and hyphens; no leading, trailing or doubled separator. |
| image | string | yes | Image slug from list_images, e.g. debian-13. |
| ipv4 | boolean | – | false orders an IPv6-only machine, cheaper; outbound IPv4 goes through NAT64. |
| options | object | – | Paid options declared by the plan, by name. |
| plan | string | yes | Plan slug from list_plans, e.g. nano. |
| private_only | boolean | – | No public address at all; needs vpc. Reachable only from the private network, Internet through its gateway. Priced like ipv4: false. |
| region | string | yes | Region slug from list_regions, e.g. montreal. |
| ssh_keys | array | – | Fingerprints or ids of SSH keys already on the account (see list_ssh_keys). |
| vpc | integer | – | Private network id (list_vpcs) to connect the machine to, in the same region. |
No output schema declared.
No examples provided.
fork_database Fork a database ~177
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 sooner. Retrying the same call is safe. Scope: vms.create.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | The source database. |
| idempotency_key | string | – | – |
| name | string | yes | Name of the new database. |
| size_gb | integer | – | Memory in GB, one of the sizes of get_database_options for the region. Default: 1, or the source's size. |
| vpc | integer | – | Default: the source's private network; same region either way. |
No output schema declared.
No examples provided.
get_account Get account ~27
Credit balance, hourly burn rate and runway, quota and budget caps. Scope: billing.read.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_action Get an action ~46
Follows an asynchronous action (create, reinstall, power…). Poll until status leaves running; on error it carries the reason. Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| action | integer | yes | – |
No output schema declared.
No examples provided.
get_database Get a database ~116
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, backups and restore window, maintenance window, fork link, warning. No passwords. Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
get_database_credentials Get database credentials ~95
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, commits or logs. Scope: databases.write.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
get_database_metrics Database statistics ~87
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
| range | string | – | – |
No output schema declared.
No examples provided.
get_database_options Database options ~62
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_firewall Get a firewall ~59
One firewall: its rules and the machines it protects, with the status of each (applied, pending, error). Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| firewall | integer | yes | Firewall id, as returned by list_firewalls or create_firewall. |
No output schema declared.
No examples provided.
get_load_balancer Get a load balancer ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| lb | integer | yes | Load balancer id, as returned by list_load_balancers or create_load_balancer. |
No output schema declared.
No examples provided.
get_load_balancer_metrics Load balancer statistics ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| lb | integer | yes | Load balancer id, as returned by list_load_balancers or create_load_balancer. |
| range | string | – | – |
No output schema declared.
No examples provided.
get_runners GitHub runners ~103
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 per repository, price per GB per month), and the Docker cache per repository (enabled in the console, bytes, last successful job). Scope: billing.read.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_slow_queries Most expensive queries ~110
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, HSET…). Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
get_vm Get a machine ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
No output schema declared.
No examples provided.
get_vm_metrics Get machine metrics ~55
CPU, memory, disk and network as measured from outside the machine. Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| timeframe | string | – | – |
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
No output schema declared.
No examples provided.
get_vm_network Get machine network ~53
IPv4 and IPv6 addresses of a machine with their reverse DNS, and its private networks. Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| vm | integer | yes | Machine id, as returned by list_vms or create_vm. |
No output schema declared.
No examples provided.
get_vpc Get a private network ~51
One private network and the machines on it, with their private address. Scope: vms.read.
| Name | Type | Req | Description |
|---|---|---|---|
| vpc | integer | yes | Private network id, as returned by list_vpcs or create_vpc. |
No output schema declared.
No examples provided.
list_database_backups List database backups ~94
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.
| Name | Type | Req | Description |
|---|---|---|---|
| database | integer | yes | Database id, as returned by list_databases or create_database. |
No output schema declared.
No examples provided.
list_databases List databases ~42
The account's managed databases with their status, private and public addresses, disk, backups and billing (no passwords), plus the quota. Scope: vms.read.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_firewalls List firewalls ~34
The account's firewalls with their inbound rules and the machines they protect, plus the quota. Scope: vms.read.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_images List images ~67
Operating systems and ready-to-use application images. The slug is what create_vm expects. Public, no key needed.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | linux, windows, bsd or app. |
| plan | string | – | Keep only images that fit this plan. |
| region | string | – | – |
No output schema declared.
No examples provided.
list_load_balancers List load balancers ~42
The account's load balancers with their addresses, pools, targets and health, listeners and rules, certificates; plus the quota. Scope: vms.read.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_plans List plans ~44
Plans with their resources and prices (hourly and monthly, in CAD). Public, no key needed.
| Name | Type | Req | Description |
|---|---|---|---|
| region | string | – | Keep only plans offered in this region. |
No output schema declared.
No examples provided.
list_regions List regions ~19
Where machines can run. Public, no key needed.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the FFxF MCP server?
FFxF is a hosted endpoint at https://ffxf.net/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 · ffxf.net
claude mcp add --transport http net-ffxf-cloud 'https://ffxf.net/mcp'
What is the FFxF MCP server?
FFxF is an MCP server listed in the public MCP registry as net.ffxf/cloud. Create and manage VMs, managed databases, firewalls and load balancers in Montréal, Canada. This page covers its hosted endpoint (https://ffxf.net/mcp).
Is the FFxF MCP server safe to use?
FFxF scores 69 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 FFxF MCP server expose?
FFxF exposes 71 tools: list_regions, list_plans, list_images, get_account, list_vms, and 66 more. Their descriptions and schemas cost roughly 7,220 tokens of context every time the server is loaded.
Does the FFxF MCP server require authentication?
No. We connected to FFxF without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the FFxF MCP server still maintained?
FFxF 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.