API Documentation

Model Context Protocol (MCP)

The Sitequest MCP endpoint lets AI assistants like GitHub Copilot, Claude, or other MCP-compatible clients interact with your infrastructure directly.

Overview

MCP (Model Context Protocol) is an open standard that allows AI applications to securely connect to external tools and data sources. Sitequest implements a stateless Streamable HTTP MCP server.

  • Endpoint: POST https://hosting.site.quest/mcp
  • Protocol version: 2025-03-26
  • Transport: Streamable HTTP (stateless, JSON responses)
  • Authentication: Same API keys as the REST API

Available Tools

VPS tools

Tool Required Scope Description
list_vms vps:read List all VPS instances with status, specs, and usage metrics
get_vm vps:read Get detailed VPS info including live config and status
get_vm_monitoring vps:read CPU/memory/ping history and downtime stats
get_vm_traffic vps:read Current-month bandwidth usage and daily traffic log
list_ssh_keys vps:read List all SSH keys on a VPS
vm_power vps:manage Start, stop, or restart a VPS
vm_reinstall_os vps:manage Reinstall the operating system (destructive, requires confirm)
vm_mount_iso vps:manage Mount or unmount an ISO image
vm_reset_password vps:manage Generate a new root password (destructive, requires confirm)
rename_vm vps:manage Update the display name of a VPS
list_backups vps:manage List all backups for a VPS
create_backup vps:manage Create a new backup (requires confirm)
restore_backup vps:manage Restore a VPS from a backup (destructive, requires confirm)
delete_backup vps:manage Delete a backup (destructive, requires confirm)
get_firewall vps:manage Get firewall status and rules
manage_firewall vps:manage Add/remove rules, enable/disable firewall
exec_command vps:manage Execute a one-shot SSH command on a VPS
list_files vps:manage List directory contents via SFTP
read_file vps:manage Read file content via SFTP
write_file vps:manage Write file content via SFTP
ssh_security vps:manage Get or update SSH security settings
generate_ssh_key vps:manage Generate an SSH key pair, optionally store for web terminal
upload_ssh_key vps:manage Upload a public SSH key, optionally store for web terminal
delete_ssh_key vps:manage Delete an SSH key from a VPS
create_vm vps:provision Create a new VPS (creates order + charges mandate)
delete_vm vps:provision Delete a VPS at the provider (destructive, requires confirm)
upgrade_vm vps:provision Upgrade VPS resources (CPU, RAM, disk, etc.)

Domain tools

Tool Required Scope Description
list_domains domains:read List all domains with registration status and DNS record count
get_domain domains:read Get detailed domain info including DNS records and registrar data
list_dns_records domains:read List DNS records for a domain
add_dns_record domains:manage Create a DNS record
edit_dns_record domains:manage Update an existing DNS record
delete_dns_record domains:manage Remove a DNS record
set_nameservers domains:manage Update domain nameservers
set_transfer_lock domains:manage Enable or disable transfer lock
set_whois_privacy domains:manage Enable or disable WHOIS privacy
set_dnssec domains:manage Enable or disable DNSSEC
get_authcode domains:manage Get the domain auth code (transfer key)
register_domain domains:provision Register a new domain (creates order + charges mandate)
transfer_domain domains:provision Transfer a domain to Sitequest (creates order + charges mandate)
cancel_domain domains:provision Cancel a domain at the registrar (destructive, requires confirm)

Order tools

Tool Required Scope Description
get_order_status vps:provision or domains:provision Get order status by ID or token

Webspace tools

Shared web hosting with isolated PHP/MariaDB sites. SFTP and exec tools operate as the unprivileged site Linux user, jailed to the site's home directory.

Tool Required Scope Description
webspace_list webspace:read List all webspaces with status, plan, CMS, and quota usage
webspace_get webspace:read Get a webspace including linked domains and live disk usage
webspace_get_ssh_info webspace:read SSH connection details (host, port, username, host key fingerprint)
webspace_list_ssh_keys webspace:read List authorized SSH keys
webspace_create webspace:provision Provision a paid webspace (creates order + charges mandate)
webspace_claim_free webspace:provision Claim the one-shot free-tier webspace for the account
webspace_upgrade webspace:provision Increase disk and/or database count (no downgrades)
webspace_delete webspace:provision Delete a webspace permanently (destructive, requires confirm)
webspace_set_label webspace:manage Update the display name
webspace_set_php webspace:manage Change the PHP version (8.1 – 8.5, requires confirm)
webspace_install_cms webspace:manage Install/reinstall WordPress, Joomla, TYPO3 or static (wipes docroot, requires confirm)
webspace_link_domain webspace:manage Attach a user-owned domain and issue a Let's Encrypt cert
webspace_unlink_domain webspace:manage Detach a previously linked domain (requires confirm)
webspace_reset_db_password webspace:manage Reset the MariaDB password (returns new password once, requires confirm)
webspace_exec webspace:manage Execute a one-shot SSH command in the jailed shell
webspace_list_files webspace:manage List directory contents via jailed SFTP
webspace_read_file webspace:manage Read a file via jailed SFTP (max 10 MB)
webspace_write_file webspace:manage Write a file via jailed SFTP (max 10 MB)
webspace_mkdir webspace:manage Create a new directory in the jail
webspace_rename webspace:manage Rename / move within the jail
webspace_delete_path webspace:manage Delete a file or directory (requires confirm)
webspace_chmod webspace:manage Change permissions of a file/directory
webspace_add_ssh_key webspace:manage Upload an authorized SSH public key
webspace_delete_ssh_key webspace:manage Remove an authorized SSH key by fingerprint (requires confirm)

Pricing for webspaces is not yet exposed via MCP. Use the REST endpoint GET /api/v1/webspaces/pricing until a get_webspace_pricing tool is added.

Setup for VS Code / GitHub Copilot

Create a .vscode/mcp.json file in your workspace:

{
  "servers": {
    "sitequest": {
      "type": "http",
      "url": "https://hosting.site.quest/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Replace YOUR_API_KEY with an API key that has the scopes you need (e.g. vps:read, domains:read).

After saving the file, VS Code will detect the MCP server automatically. You can then ask Copilot questions like:

  • "List my VPS instances"
  • "What domains do I have?"
  • "Show me the details for server X"

Setup for Other MCP Clients

Any MCP client that supports the Streamable HTTP transport can connect. Configure:

  • URL: https://hosting.site.quest/mcp
  • Method: POST only (GET returns 405)
  • Headers:
    • Authorization: Bearer YOUR_API_KEY
    • Content-Type: application/json
    • Accept: application/json, text/event-stream

Manual JSON-RPC Example

Initialize:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": { "name": "my-client", "version": "1.0" }
    }
  }'

List available tools:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'

Call a tool:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "list_vms",
      "arguments": {}
    }
  }'

Authentication

MCP uses the same API key system as the REST API. See Authorization for details on creating keys and managing scopes.

Rate Limiting

MCP requests share the same rate limit as the REST API: 60 requests per minute per API key. Rate limit headers are included in every response.

Differences from REST API

Feature REST API MCP
Protocol HTTP REST JSON-RPC 2.0 over HTTP
Methods Standard HTTP verbs POST only
Response format { "data": ... } JSON-RPC result/error
Sessions Stateless Stateless (no SSE streaming)
Use case Direct integration AI assistant integration

Source code & client examples

The Sitequest MCP server listing, sample client configurations (VS Code, Claude Desktop, Cursor, and more), and the directory listing for MCP catalogs are maintained in the public repository:

github.com/Sitequest-Software/sitequest-mcp