eqvps
No-KYC crypto VPS AI agents rent & run over MCP — 57 tools, pay USDC/USDT on Base/Eth/Polygon/Solana
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin get_vps_metrics
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"eqvps": {
"url": "https://mcp.eqvps.com/mcp"
}
}
}Remote-Endpunkte
https://mcp.eqvps.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (27)
🟢list_plans
List all available VPS plans (catalog) with pricing, specs and the OS images each plan can boot: Linux plans (NAT or dedicated IPv4, from $3/mo) and Windows Server 2022 plans (slug windows-*, BYOL — the customer activates their own licence; RDP access, 150 Mbit/s port, from $11/mo). No authentication needed. Use this first to pick a `product` slug and an `os_id` for `order_vps`. Each plan lists `plans[]` (monthly and annual `plan_id`); an active automatic offer shows up as `plans[].promo` and in `meta.promotions`. PROMO until 2026-10-31 23:59 Europe/Kyiv: -25% on ANNUAL billing, first year only, applied automatically (no code) to windows-medium ($171/yr), windows-small-ip ($252/yr) and windows-medium-ip ($324/yr); renewal at the regular annual price; windows-small not included — order with period="year".
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡register_account(first_name, last_name, email)
Create a new EQVPS customer account with first_name, last_name, email. Returns a bearer `token` — STORE IT SAFELY: it is your only credential. Send it as `Authorization: Bearer <token>` on every following request. No password or human step is needed. If you may lose the token, call `set_password` once (while authenticated) to also enable email+password `login` as a backup.
Eingabe-Schema
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1
},
"last_name": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"format": "email"
}
},
"required": [
"first_name",
"last_name",
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪login(email, password)
Log in with email + password. Returns a bearer `token`. NOTE: accounts created via register_account have NO password by default — reuse the token from register instead. If you have no password, first call `set_password` (while still authenticated with your register token), or use the human email-OTP flow in a browser.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email"
},
"password": {
"type": "string",
"minLength": 1
}
},
"required": [
"email",
"password"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡set_password(password)
Set a password for THIS account (the one your bearer token belongs to). Accounts from register_account have no password by default — the bearer token is the credential. Call this ONCE to enable email+password `login` as a recovery method in case the token is lost. Needs only the new password (min 8 chars, letters+numbers) — no current password the first time. If a password was already set, this returns 409 (use change-password instead).
Eingabe-Schema
{
"type": "object",
"properties": {
"password": {
"type": "string",
"minLength": 8
}
},
"required": [
"password"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪whoami
Return the authenticated account profile (id, name, email). Use to verify the bearer token is valid.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_balance
Return the account's prepaid credit balance and currency. `order_vps` spends from this balance automatically when it is sufficient.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡topup_balance(amount)
Create a top-up invoice and return a `checkout_url` (PayRam crypto checkout). The balance is credited automatically once the on-chain payment confirms. `amount` is in account currency (USD); minimum and maximum are enforced server-side. Only one unpaid top-up may exist at a time.
Eingabe-Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"amount"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢order_vps(product, os_id, hostname, ssh_key, period, ...)
Order a VPS. `product` = plan slug from list_plans; `os_id` = an OS id from that plan's images. Optional `hostname` and `ssh_key` (public key — strongly recommended so you get key-based root login). Optional `location`: "de" (Germany) or "fi" (Finland) — omit it and we pick the location automatically; if the chosen country has no free capacity for that plan the call fails with 409 `location_unavailable` (nothing is charged) and `available` lists the countries that can take it. Optional `period` ("month" by default, or "year" for annual billing) or an explicit `plan_id` from list_plans `plans[]`; an active automatic offer (`plans[].promo`) is applied to the first invoice and the response then carries `promo`. Windows plans (windows-*) accept only the Windows Server 2022 image, ignore `ssh_key`, and are reached over RDP as Administrator (see get_vps_status → access); the licence is BYOL. Branching on the response: • `paid_from_balance: true` → the prepaid balance covered it; the server is provisioning. Poll `get_vps_status` until status is `active` and the VM is reachable. • `paid_from_balance: false` → balance was insufficient; an unpaid `invoice` is returned. Call `pay_invoice` with `invoice.id` to get a crypto `checkout_url`, OR `topup_balance` then re-order. PROMO until 2026-10-31 23:59 Europe/Kyiv: -25% on ANNUAL billing, first year only, applied automatically (no code) to windows-medium ($171/yr), windows-small-ip ($252/yr) and windows-medium-ip ($324/yr); renewal at the regular annual price; windows-small not included — order with period="year".
Eingabe-Schema
{
"type": "object",
"properties": {
"product": {
"type": "string",
"minLength": 1
},
"os_id": {
"type": "integer",
"exclusiveMinimum": 0
},
"hostname": {
"type": "string"
},
"ssh_key": {
"type": "string"
},
"period": {
"type": "string",
"enum": [
"month",
"year"
]
},
"plan_id": {
"type": "integer",
"exclusiveMinimum": 0
},
"location": {
"type": "string",
"enum": [
"de",
"fi"
],
"description": "Optional server country: \"de\" (Germany) or \"fi\" (Finland). Omit for automatic placement."
}
},
"required": [
"product",
"os_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪pay_invoice(invoice_id)
Initiate payment for an owned, unpaid invoice. Returns a PayRam `checkout_url`; the invoice settles (and the VPS provisions) automatically once the on-chain payment confirms.
Eingabe-Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"invoice_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_vps
List the account's ACTIVE VPS services — active, provisioning, and suspended servers (deleted/cancelled are excluded). Use the `id` as `service_id` for the management tools. If a server is missing from this list it has been deleted — do not query its status or try to manage it.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_vps_status(service_id, reveal)
Get full detail for one VPS: status, specs, live VM state/uptime, and access info (host, port, ready-to-paste `command`; `access.method` = ssh for Linux, rdp for Windows — port follows the plan: dedicated IP 22/3389, NAT 20000+vmid). ROOT PASSWORD (keyless VPS): call with `reveal: true` to retrieve it. It is shown ONCE, and only after the VM has finished booting — at that moment the password is applied to the live VM, so it is guaranteed to work. While the VM is still booting the response carries `password_pending: true` and NO password; just call again with `reveal: true` in ~30-60s (the one-time reveal is NOT spent until a password is actually returned — no reset or reboot needed). Without `reveal`, `password_available: true` means a password is waiting to be revealed. If you supplied an SSH key at order time, log in with that key (no password); `ssh_ready: false` means the VM is still booting — retry shortly. Use `reset_password` ONLY if the password is lost. Poll this (without `reveal`) after `order_vps` to watch provisioning reach `active`. NAT plans (no dedicated IP): the SSH `port` shown is an EXTERNAL DNAT port forwarded to the VM internal port 22 (`internal_port` in the response). If you configure a host firewall, allow the INTERNAL port — `ufw allow OpenSSH` — NOT the external port, or `ufw enable` will lock SSH out. See `firewall_note` in the response.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"reveal": {
"type": "boolean"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪power_vps(service_id, action)
Power-control a VPS: `start`, `stop` or `reboot`.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"action": {
"type": "string",
"enum": [
"start",
"stop",
"reboot"
]
}
},
"required": [
"action"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡set_hostname(service_id, hostname)
Set the VPS hostname (valid DNS name). Applied immediately inside the running server via the guest agent (Linux: hostnamectl + the 127.0.1.1 line in /etc/hosts; Windows: renamed, takes effect after a reboot — the response then has `reboot_required: true`). The server must be running with its guest agent active; otherwise the call fails with 409 `agent_unavailable` and nothing is changed. Your password, SSH host keys and files are not touched.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"hostname": {
"type": "string",
"minLength": 1
}
},
"required": [
"hostname"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢reset_password(service_id, confirm)
Rotate the root password. The new password is applied to the LIVE VM immediately via the guest-agent (no reboot) and works within ~10-30s; the OLD password stops working. REQUIRES confirm = exact hostname (from get_vps_status) or 'DELETE'. Agent must confirm with the human before calling. Use this ONLY if the password was lost — NOT because SSH was not instant on a fresh order (a new VM needs ~60s to boot; poll get_vps_status with reveal:true instead). New password is NOT in this response — read it ONCE via get_vps_status (reveal:true); also emailed.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"confirm": {
"type": "string"
}
},
"required": [
"confirm"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢reinstall_vps(service_id, os_id, confirm)
DESTRUCTIVE — all data is lost. REQUIRES confirm = exact hostname (from get_vps_status) or 'DELETE'. Agent must explicitly confirm with the human before calling. Wipes and reinstalls the VPS with the given OS image (`os_id` from list_plans). Provisioning runs asynchronously; poll `get_vps_status`.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"os_id": {
"type": "integer",
"exclusiveMinimum": 0
},
"confirm": {
"type": "string"
}
},
"required": [
"os_id",
"confirm"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_vps_metrics(service_id, timeframe)
Time-series resource metrics (CPU %, memory, network, disk) for a VPS. `timeframe` ∈ hour|day|week|month (default hour).
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"timeframe": {
"type": "string",
"enum": [
"hour",
"day",
"week",
"month"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴cancel_service(service_id, type, confirm, reason)
Cancel a VPS. DEFAULT `end_of_period`: the server stays active until the end of the already-paid period, then is simply not renewed — NO data loss now, safe. `immediate` DESTROYS the VM and ALL data right away, permanently and irreversibly, and REQUIRES `confirm` set to the exact server hostname (see get_vps_status). Use end_of_period unless you explicitly intend to wipe the server now. On `immediate`, the unused portion of the already-paid period is refunded to your account balance (see `refund_amount` in the response).
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"type": {
"type": "string",
"enum": [
"end_of_period",
"immediate"
]
},
"confirm": {
"type": "string"
},
"reason": {
"type": "string",
"minLength": 3,
"maxLength": 500,
"description": "REQUIRED: why this VPS is being cancelled (e.g. project finished, too expensive, no longer needed)."
}
},
"required": [
"reason"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴delegate_service(service_id, email, expires_days)
Grant OPERATOR access to one of YOUR VPS to another person by email (they can power/reinstall/console/hostname/rdns, but NOT renew, cancel or change billing). Sends them an invitation with an accept link. Optional `expires_days` for time-limited access. Owner-only.
Eingabe-Schema
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
},
"email": {
"type": "string",
"format": "email"
},
"expires_days": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 365
}
},
"required": [
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪accept_delegation(token)
Accept a delegation invitation using the `token` from the invite link. Requires being signed in as the invited email address: it grants operator access to your own account. No new token is returned — keep using yours.
Eingabe-Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 1
}
},
"required": [
"token"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_delegations
List outgoing delegations you (the owner) have granted on your services — who has operator access to what, and its status.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_delegated_to_me
List services other owners have delegated operator access to you — the VPS you can operate but don't own.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢revoke_delegation(delegation_id)
Revoke a delegation by its id (owner revokes access, or a delegate declines their own). The other side is notified. Use list_delegations / list_delegated_to_me to find the id.
Eingabe-Schema
{
"type": "object",
"properties": {
"delegation_id": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"required": [
"delegation_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_ticket(subject, message, service_id)
Open a support ticket with EQVPS. `subject` and `message` are required; optional `service_id` ties it to one of your VPS. The response includes the ticket `code` — use that with get_ticket / reply_ticket / close_ticket.
Eingabe-Schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
},
"service_id": {
"type": "string",
"minLength": 1,
"description": "Service code as returned by list_vps/order_vps, e.g. \"68J67T5\" (a plain numeric id is also accepted)."
}
},
"required": [
"subject",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_tickets
List your support tickets with status and last-message info. `last_message_author: "staff"` means support has replied since you last looked.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡get_ticket(ticket_code)
Read one ticket and its full message thread. Each message has an `author`: `you` or `staff` — a `staff` message is a reply from support. Poll this to see new answers. The ticket code comes from create_ticket / list_tickets.
Eingabe-Schema
{
"type": "object",
"properties": {
"ticket_code": {
"type": "string",
"minLength": 1
}
},
"required": [
"ticket_code"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡reply_ticket(ticket_code, message)
Post a reply on one of your tickets. Use the ticket code from create_ticket / list_tickets.
Eingabe-Schema
{
"type": "object",
"properties": {
"ticket_code": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
}
},
"required": [
"ticket_code",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡close_ticket(ticket_code, rating, comment)
Close one of your tickets. `rating` (1-5) and `comment` are OPTIONAL — you can close without rating. Use the ticket code from create_ticket / list_tickets.
Eingabe-Schema
{
"type": "object",
"properties": {
"ticket_code": {
"type": "string",
"minLength": 1
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"comment": {
"type": "string"
}
},
"required": [
"ticket_code"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis