{"name":"io.github.tydung26/websupport-mcp","slug":"tydung26-websupport-mcp","title":"Websupport","description":"Manage a Websupport account: DNS, FTP, hosting, databases, mailboxes, VPS and invoices.","url":"https://mcp.market/server/tydung26-websupport-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":29,"stars":1,"forks":0,"downloads_week":39,"last_push_at":"2026-10-31T12:03:18.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/tydung26/websupport-mcp","website":"https://github.com/tydung26/websupport-mcp#readme","version":"0.1.1","remotes":[],"packages":[{"registryType":"npm","identifier":"websupport-mcp","version":"0.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"API key identifier from WebAdmin (Security -> API keys). Generate a Standard pair; a DynDNS pair authenticates against one endpoint only.","isRequired":true,"name":"WEBSUPPORT_API_KEY"},{"description":"API secret paired with the key. Used only to sign requests; it is never transmitted.","isRequired":true,"isSecret":true,"name":"WEBSUPPORT_API_SECRET"},{"description":"Market selection. Defaults to https://rest.websupport.sk. Also live: rest.websupport.cz, rest.websupport.hu, rest.websupport.se.","default":"https://rest.websupport.sk","name":"WEBSUPPORT_API_BASE_URL"},{"description":"Language for API responses.","default":"en_us","choices":["en_us","sk","cs_cz","hu"],"name":"WEBSUPPORT_ACCEPT_LANGUAGE"},{"description":"Set to 1 to register the 13 write tools. Omit for a read-only deployment, where they never appear in tools/list at all.","name":"WEBSUPPORT_ALLOW_WRITE"},{"description":"Set to 1 to register the 7 destructive tools, each of which also requires confirm: true on every call. Independent of WEBSUPPORT_ALLOW_WRITE.","name":"WEBSUPPORT_ALLOW_DESTRUCTIVE"}]}],"tools":[{"name":"ws_auth_check","description":"Verify that the configured Websupport API key and secret authenticate successfully. Returns {verified: true} on success. Use this first when diagnosing 401 errors.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_db_create","description":"Create a database on a hosting service. …","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_db_delete","description":"Permanently delete a database and everything stored in it. The data is destroyed immediately and cannot be recovered from this API — restore from your own backup or it is gone. Any application still pointing at this database will start failing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_db_get","description":"Get one database by id, including its name, type and connection details.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_db_list","description":"List the databases on a hosting service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_db_stats","description":"Usage statistics for one database. `kind` selects the series: size (storage used) or cpu (query load).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_db_update","description":"Update a database. Only the supplied fields are sent. …","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_db_users_list","description":"List the database users on a hosting service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_dns_record_create","description":"Create a DNS record in a service zone. The API returns 204 with no body, so this tool re-lists the record it just wrote and returns that — `record` is null if the re-list found nothing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_dns_record_delete","description":"Permanently delete a DNS record by id. The record and its resolution are lost immediately and cannot be recovered — recreate it manually if deleted in error.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_dns_record_list","description":"List DNS records in a service zone, with paging and server-side filtering. Returns the API pagination envelope unflattened.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_dns_record_update","description":"Update a DNS record by id. Only the supplied fields are sent. The API returns 204 with no body.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_dns_zone_get","description":"Get the DNS zone attached to a service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_domain_assign","description":"Assign a domain to a hosting service, optionally installing WordPress. Unlike the other v2 mutations this one returns a body rather than 204.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_dyndns_update","description":"Best-effort Dynamic DNS update via the standard /nic/update endpoint. Returns the raw text response, not JSON. This endpoint authenticates differently from the rest of the API (no date header) and its behaviour with a Standard API key is unverified — prefer ws_dns_record_update for reliable record changes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_ftp_account_create","description":"Create an FTP account. The API returns 204 with no body, so this tool re-lists by login and returns the created account — without its password, which the API never echoes back.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_ftp_account_delete","description":"Permanently delete an FTP account. Any client or deployment pipeline authenticating with these credentials loses access immediately. The account cannot be restored — it must be recreated with a new password.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_ftp_account_get","description":"Get one FTP account by id. The password is never returned.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_ftp_account_list","description":"List FTP accounts on a hosting service. Passwords are never returned — the API response schema has no password field.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_ftp_account_update","description":"Update an FTP account by id. Only the supplied fields are sent. Supplying `password` rotates it. The API returns 204 with no body.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_hosting_get","description":"Get one hosting service by id or uuid, including its package, limits and current usage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_hosting_list","description":"List the hosting services on the account.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_hosting_stats","description":"Usage statistics for a hosting service. `kind` selects the series: size (disk usage), domain (per-domain traffic), or ftp (FTP activity).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_hosting_vhost_get","description":"Get one virtual host by id, including its document root and domain configuration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_hosting_vhost_list","description":"List the virtual hosts (domains) served by a hosting service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_invoice_get","description":"Get one invoice by id, including line items, totals and payment status. Use ws_invoice_pdf for the document itself.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_invoice_list","description":"List the account's invoices with their amounts, dates and payment status. Paying an invoice is deliberately out of scope for this server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_invoice_pdf","description":"Fetch an invoice as a PDF. `base64` returns the document encoded for a caller that will decode and save it. `binary` reports the size and type only — raw PDF bytes are never inlined into a tool result, because they would flood the conversation without being usable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_mail_stats","description":"Mail storage statistics for a hosting service. Supply `domain` to scope the figures to one domain; omit it for the whole service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_mailbox_create","description":"Create a mailbox on a domain. Note the domain-rooted path: the domain id comes from ws_hosting_vhost_list. …","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_mailbox_delete","description":"Permanently delete a mailbox and every message stored in it. Mail already delivered is destroyed and cannot be recovered, and messages sent to the address afterwards will bounce.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_mailbox_get","description":"Get one mailbox by id, including its address, quota and forwarding configuration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_mailbox_list","description":"List the mailboxes on a hosting service.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_mailbox_update","description":"Update a mailbox. This endpoint takes POST rather than PUT — a documented v1 quirk, not a mistake. …","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_service_get","description":"Get one service by id, including its type, status and expiry. Use ws_service_list first to find the id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_service_list","description":"List the account's services (hosting, domains, VPS and so on). Returns the v1 envelope {items, pager}. Service ids from here are the candidates for the v2 tools' `service` argument.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_service_set_auto_extend","description":"Turn automatic renewal on or off for a service. Switching it off means the service will expire at the end of its current term unless renewed manually — for a domain or hosting package that eventually means it stops working. Only the autoExtend flag is sent; no other service property is touched.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_user_get","description":"Get the account record: id, contact details, billing profiles, market and currency. SENSITIVE — the response includes the billing address, email address, phone number, and a verifyUrl containing a live account-verification key. Do not echo the full response to the user or store it; read the specific field needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_get","description":"Get one VPS by id or name, including its specification, IP addresses and power state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_hard_reboot","description":"Force a VPS to power-cycle without letting the guest shut down. Equivalent to pulling the power cable: writes still in flight are lost and filesystems or databases can be left corrupted. Use ws_vps_reboot unless the machine is already unresponsive.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_list","description":"List the VPS instances on the account.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_reboot","description":"Gracefully reboot a VPS. The guest operating system is asked to shut down cleanly first, so running services stop in an orderly way. The machine is unreachable while it restarts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_snapshot_create","description":"Take a snapshot of a VPS disk, so its current state can be restored later. Snapshots consume storage against the account.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_vps_snapshot_delete","description":"Permanently delete a VPS snapshot. The recovery point is destroyed and the disk state it held can no longer be restored. The running VPS is unaffected.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ws_vps_snapshot_list","description":"List the snapshots taken of a VPS, with their names and creation times.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_snapshot_restore","description":"Overwrite the VPS disk with the named snapshot. All data written since that snapshot was taken is permanently lost — databases, uploads, logs and configuration changes alike. There is no undo. Take a fresh snapshot first if the current state matters at all.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_stats","description":"Usage statistics for a VPS. `kind` selects the series: cpu (processor load) or traffic (network transfer).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_vps_vnc","description":"Get VNC console access details for a VPS. SENSITIVE — the response may carry a one-time console URL or session credential that grants direct machine access. Hand it to the user who asked for it and nothing else: do not log it, do not repeat it in a summary, and treat it as expiring.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_zone_get","description":"Get one DNS zone by domain name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ws_zone_list","description":"List the DNS zones on the account. For the records inside a zone use the v2 tool ws_dns_record_list — v1 record CRUD is deprecated and deliberately not exposed.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-10-31T17:28:46.260Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-31T17:28:46.195Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"websupport-mcp","version":"0.1.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-25T06:42:11.427Z","repositoryUrl":"git+https://github.com/tydung26/websupport-mcp.git"}],"repo":{"found":true,"owner":"tydung26","repo":"websupport-mcp","archived":false,"pushedAt":"2026-10-31T12:03:18Z","stars":1,"forks":0,"openIssues":10,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/71427444?v=4","ownerCreatedAt":"2020-09-17T06:39:03Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/71427444?v=4&s=128","source":"registry"},"presence":{"stars":1,"forks":0,"downloadsWeek":39,"license":"MIT","lastPushAt":"2026-10-31T12:03:18.000Z","score":29}}}},"grade_history":[],"reviews":[]}