# io.usefulapi/civo (remote · civo.usefulapi.io)

List Civo instances, Kubernetes clusters, networks and DNS; reboot instances, add rules.

- Trust score: 77/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-03

## Components

- remote · `civo.usefulapi.io`: 77/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-civo/civo.md), [page](https://verifymcp.io/servers/io-usefulapi-civo/civo)

## Channel facts

- Endpoint: `https://civo.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-03.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 78/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2804 tokens (~127/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the io.usefulapi/civo MCP server?

io.usefulapi/civo is a hosted endpoint at https://civo.usefulapi.io/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.

### Claude

```bash
claude mcp add --transport http io-usefulapi-civo 'https://civo.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-civo": {
      "url": "https://civo.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-civo": {
      "type": "http",
      "url": "https://civo.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-civo]
url = "https://civo.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-civo": {
      "type": "remote",
      "url": "https://civo.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-civo --url 'https://civo.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-civo:
    url: "https://civo.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-civo": {
      "Transport": "http",
      "Url": "https://civo.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-civo -t streamable-http -u 'https://civo.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-civo": {
      "type": "http",
      "url": "https://civo.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-02 (score 77, +1)

- [functional] Server version: 1.3.0 → 1.5.1

### 2026-10-01 (score 76, +4)

- [security improvement] HTTPS: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.3.0

### 2026-09-30 (score 72, +54)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100

### 2026-09-29 (score 18)

First indexed and scored.

## MCP tools (22)

### `civo_list_regions` (~77 tokens)

List regions

List the Civo regions available to the account, with which one is the default, whether each is out of capacity, and the features each supports (IaaS, Kubernetes, object store, load balancers, GPU, databases). A cheap way to confirm the API key works. Civo: GET /v2/regions.

### `civo_get_quota` (~71 tokens)

Get account quota

The account's limits and current usage: instances, CPU cores, RAM, disk, volumes, snapshots, public IPs, networks, firewalls and rules, load balancers, object storage and databases. Answers 'can I launch another one?'. Civo: GET /v2/quota.

### `civo_list_charges` (~136 tokens)

List charges

List billable usage for a period: each resource's product code, label, region, time span and hours (size_gb for volumes). The range may be at most 31 days; defaults to the start of the current month until now. Civo: GET /v2/charges.

Input parameters:

- `from` (string): Start, RFC 3339 (e.g. 2026-09-01T00:00:00Z). Defaults to the start of this month.
- `to` (string): End, RFC 3339. Defaults to now. At most 31 days after `from`.

### `civo_list_instance_sizes` (~105 tokens)

List sizes

List the sizes (plans) that can be launched — instances, Kubernetes nodes and databases — with CPU cores, RAM, disk, transfer allowance and GPU. Civo: GET /v2/sizes.

Input parameters:

- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_instances` (~152 tokens)

List instances

List compute instances in a region, optionally filtered by tags. Paginated: returns {page, per_page, pages, items}. Passwords are redacted. Civo: GET /v2/instances.

Input parameters:

- `page` (integer): Page number, from 1.
- `per_page` (integer): Items per page, 1-100 (Civo default 20).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.
- `tags` (array): Only instances carrying these tags.

### `civo_get_instance` (~128 tokens)

Get one instance

Fetch one instance: status, size, CPU/RAM/disk, public and private IPs, network, firewall, tags, attached volumes and source image. Passwords are redacted. Civo: GET /v2/instances/{id}.

Input parameters:

- `instance_id` (string, required): The instance's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_kubernetes_clusters` (~160 tokens)

List Kubernetes clusters

List the Kubernetes (K3s/Talos) clusters in a region with status, version, node pools, API endpoint and installed applications. Paginated: {page, per_page, pages, items}. Kubeconfigs are redacted. Civo: GET /v2/kubernetes/clusters.

Input parameters:

- `page` (integer): Page number, from 1.
- `per_page` (integer): Items per page, 1-100 (Civo default 20).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_get_kubernetes_cluster` (~133 tokens)

Get one Kubernetes cluster

Fetch one Kubernetes cluster: status, readiness, conditions, version and available upgrade, pools and their instances, network, firewall, CNI and installed marketplace apps. The kubeconfig is redacted. Civo: GET /v2/kubernetes/clusters/{id}.

Input parameters:

- `cluster_id` (string, required): The cluster's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_networks` (~99 tokens)

List networks

List the private networks in a region: label, CIDR, whether it is the default network, status and nameservers. Civo: GET /v2/networks.

Input parameters:

- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_firewalls` (~100 tokens)

List firewalls

List the firewalls in a region with their network, rule count and how many instances, clusters and load balancers use each. Civo: GET /v2/firewalls.

Input parameters:

- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_firewall_rules` (~138 tokens)

List a firewall's rules

List the rules of one firewall: protocol, port range, CIDRs, direction (ingress/egress), action (allow/deny) and label — the answer to 'what is exposed to the internet?'. Civo: GET /v2/firewalls/{id}/rules.

Input parameters:

- `firewall_id` (string, required): The firewall's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_load_balancers` (~110 tokens)

List load balancers

List the load balancers in a region: algorithm, backends (IP, protocol, source/target ports), public IP, state and the Kubernetes service each fronts. Civo: GET /v2/loadbalancers.

Input parameters:

- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_volumes` (~106 tokens)

List volumes

List the block-storage volumes in a region: size, status, type, and the instance or cluster each is attached to (unattached volumes still bill). Civo: GET /v2/volumes.

Input parameters:

- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_databases` (~162 tokens)

List databases

List the managed databases (MySQL, PostgreSQL) in a region: software and version, size, nodes, IPs, port, network, firewall and status. Paginated: {page, per_page, pages, items}. Passwords are redacted. Civo: GET /v2/databases.

Input parameters:

- `page` (integer): Page number, from 1.
- `per_page` (integer): Items per page, 1-100 (Civo default 20).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_list_dns_domains` (~33 tokens)

List DNS domains

List the domains whose DNS Civo hosts for the account. Civo: GET /v2/dns.

### `civo_list_dns_records` (~102 tokens)

List DNS records

List the records of one hosted domain (name, type, value, priority, TTL), optionally filtered by type or name. Civo: GET /v2/dns/{domain_id}/records.

Input parameters:

- `domain_id` (string, required): The DNS domain's id (a UUID).
- `name` (string): Only records with this name (e.g. www, or @ for the apex).
- `type` (string): Only records of this type.

### `civo_reboot_instance` (~159 tokens)

Reboot an instance

Reboot one instance. `soft` (default) asks the OS to restart cleanly; `hard` cuts power and boots it again, like pulling the plug — use only when soft does not work. Causes brief downtime. Civo: POST /v2/instances/{id}/soft_reboots or /hard_reboots.

Input parameters:

- `instance_id` (string, required): The instance's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.
- `type` (string): soft (default) or hard.

### `civo_stop_instance` (~120 tokens)

Stop an instance

Power off one instance. Anything it serves goes offline until it is started again with civo_start_instance. A stopped instance is still billed. Civo: PUT /v2/instances/{id}/stop.

Input parameters:

- `instance_id` (string, required): The instance's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_start_instance` (~104 tokens)

Start an instance

Boot a stopped instance. Undoes civo_stop_instance. Civo: PUT /v2/instances/{id}/start.

Input parameters:

- `instance_id` (string, required): The instance's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.

### `civo_set_instance_tags` (~155 tokens)

Set an instance's tags

REPLACE the full tag list of one instance (tags are used for filtering and by load-balancer instance pools, so changing them can move an instance in or out of a pool). Pass the complete desired list; an empty list clears all tags. Civo: PUT /v2/instances/{id}/tags.

Input parameters:

- `instance_id` (string, required): The instance's id (a UUID).
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.
- `tags` (array, required): The complete new tag list.

### `civo_create_firewall_rule` (~294 tokens)

Add a firewall rule

Add one rule to a firewall — e.g. allow TCP 443 ingress from 0.0.0.0/0. This changes what is reachable on every instance, cluster and load balancer using the firewall, so prefer narrow CIDRs. Undo by deleting the rule in the Civo dashboard or CLI. Civo: POST /v2/firewalls/{id}/rules.

Input parameters:

- `action` (string): allow (default) or deny.
- `cidr` (array): Source (ingress) or destination (egress) CIDRs. Civo defaults to 0.0.0.0/0 — the whole internet.
- `direction` (string): ingress (default) or egress.
- `end_port` (string): Last port of a range. Omit for a single port.
- `firewall_id` (string, required): The firewall's id (a UUID).
- `label` (string): A display name for the rule.
- `protocol` (string, required): tcp, udp or icmp.
- `region` (string): Region code, e.g. LON1, NYC1, FRA1, PHX1 (see civo_list_regions). Defaults to CIVO_REGION; Civo resources are regional, so pass the region the resource lives in.
- `start_port` (string): First port, e.g. "443". Required unless protocol is icmp.

### `civo_create_dns_record` (~160 tokens)

Add a DNS record

Add one record to a Civo-hosted domain. Live DNS changes propagate to the world; undo by deleting the record in the Civo dashboard or CLI. Civo: POST /v2/dns/{domain_id}/records.

Input parameters:

- `domain_id` (string, required): The DNS domain's id (a UUID).
- `name` (string, required): The subdomain part, e.g. www, or @ for the apex.
- `priority` (integer): Priority, for MX/SRV records (Civo default 10).
- `ttl` (integer): TTL in seconds; Civo's minimum and default is 600.
- `type` (string, required): Record type.
- `value` (string, required): An IP address, hostname or text value.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-civo/civo#diagnostics

## Score history

- 2026-10-03: 77
- 2026-10-02: 77
- 2026-10-01: 76
- 2026-09-30: 72
- 2026-09-29: 18

## Common questions

### What is the io.usefulapi/civo MCP server?

io.usefulapi/civo is an MCP server listed in the public MCP registry as io.usefulapi/civo. List Civo instances, Kubernetes clusters, networks and DNS; reboot instances, add rules. This page covers its hosted endpoint (https://civo.usefulapi.io/mcp).

### Is the io.usefulapi/civo MCP server safe to use?

io.usefulapi/civo scores 77 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 io.usefulapi/civo MCP server expose?

io.usefulapi/civo exposes 22 tools: civo_list_regions, civo_get_quota, civo_list_charges, civo_list_instance_sizes, civo_list_instances, and 17 more. Their descriptions and schemas cost roughly 2,804 tokens of context every time the server is loaded.

### Does the io.usefulapi/civo MCP server require authentication?

Yes. io.usefulapi/civo 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 io.usefulapi/civo MCP server still maintained?

io.usefulapi/civo is still listed as active in the MCP registry. We last reached this channel on 3 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://civo.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-civo/civo.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-civo/civo.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-civo/civo
