Chaque outil correspond à un point d'accès de l'API et exige le périmètre de ce point
d'accès. Les réponses sont le JSON de l'API ; les erreurs gardent leur
code, leurs détails et le request_id, avec une indication de
la marche à suivre.
Catalogue, sans clé
| Outil | Arguments | Renvoie |
|---|---|---|
list_regions | aucun | Les régions où les machines peuvent tourner. |
list_plans | region | Les offres, leurs ressources, leurs prix à l'heure et au mois. |
list_images | region, plan, category | Systèmes et images d'applications ; le slug est ce qu'attend create_vm. |
Compte
| Outil | Arguments | Périmètre |
|---|---|---|
get_account | aucun | billing.read |
Solde, consommation horaire et autonomie, quota, budget mensuel.
Machines
| Outil | Arguments | Périmètre |
|---|---|---|
list_vms | status, region, billing, cursor, limit | vms.read |
get_vm | vm | vms.read |
get_vm_metrics | vm, timeframe | vms.read |
estimate_vm | plan, region, image, hostname, billing, ssh_keys, options, ipv4, vpc, private_only | vms.create |
create_vm | comme estimate_vm, plus payment, password_delivery, idempotency_key | vms.create |
power_vm | vm, type : start, shutdown, reboot, stop | vms.action |
rename_vm | vm, hostname | vms.action |
reinstall_vm | vm, image, confirm_hostname, ssh_keys, password_delivery | vms.action |
destroy_vm | vm, confirm_hostname, when | vms.destroy |
estimate_vm fait toutes les vérifications d'une commande et la chiffre,
sans rien créer. create_vm tire sa clé d'idempotence de la commande
elle-même : un agent qui relance le même appel après une coupure retrouve la première
réponse, pas une seconde machine. reinstall_vm et destroy_vm
effacent le disque et refusent d'agir si confirm_hostname n'est pas le nom
d'hôte exact de la machine.
Actions
| Outil | Arguments | Périmètre |
|---|---|---|
get_action | action | vms.read |
list_vm_actions | vm | vms.read |
La création, la réinstallation et les changements d'alimentation tournent en
arrière-plan et renvoient une action : interrogez get_action jusqu'à ce
que son état quitte running. Une nouvelle machine est prête en moins de
deux minutes.
Réseau et clés SSH
| Outil | Arguments | Périmètre |
|---|---|---|
get_vm_network | vm | vms.read |
set_reverse_dns | vm, address, hostname (null efface) | network.write |
list_ssh_keys | aucun | sshkeys.write ou vms.read |
add_ssh_key | name, public_key | sshkeys.write |
delete_ssh_key | key | sshkeys.write |
Réseaux privés
| Outil | Arguments | Périmètre |
|---|---|---|
list_vpcs | aucun | vms.read |
get_vpc | vpc | vms.read |
create_vpc | name, cidr, region | network.write |
delete_vpc | vpc | network.write |
connect_vpc | vpc, vm, ip | network.write |
disconnect_vpc | vpc, vm | network.write |
move_vpc | vpc, vm, to | network.write |
Un réseau privé relie vos machines par une seconde carte, isolée des autres clients
et hors de la bande passante comptée. connect_vpc branche une machine en
marche sans la redémarrer ; create_vm accepte vpc, et
private_only pour une machine sans aucune adresse publique. Voir
Réseaux privés.
Pare-feux
| Outil | Arguments | Périmètre |
|---|---|---|
list_firewalls | aucun | vms.read |
get_firewall | firewall | vms.read |
create_firewall | name, rules | network.write |
update_firewall | firewall, name, rules (remplace la liste) | network.write |
delete_firewall | firewall | network.write |
attach_firewall | firewall, vm | network.write |
detach_firewall | firewall, vm | network.write |
Un pare-feu est un jeu de règles réutilisable : une machine qui en a au moins un
refuse le trafic entrant qu'aucune règle n'ouvre, une machine sans pare-feu accepte
tout. Une règle direction: out restreint ce qui sort (le DNS reste permis).
update_firewall remplace toute la liste de règles : un agent lit donc
get_firewall d'abord et garde TCP 22 ouvert, sans quoi il perd SSH sur la
machine. Voir Pare-feux.
Répartiteurs de charge
| Outil | Arguments | Périmètre |
|---|---|---|
list_load_balancers | aucun | vms.read |
get_load_balancer | lb | vms.read |
get_load_balancer_metrics | lb, range | vms.read |
create_load_balancer | name, vpc | vms.create |
delete_load_balancer | lb | vms.destroy |
upsert_pool | lb, pool (pour modifier), name, protocol, contrôle de santé | network.write |
delete_pool | lb, pool | network.write |
set_targets | lb, pool, targets (remplace la liste) | network.write |
upsert_listener | lb, listener (pour modifier), port, protocol, default_pool, sources | network.write |
delete_listener | lb, listener | network.write |
set_rules | lb, listener, rules (remplace la liste) | network.write |
Un agent monte un répartiteur dans l'ordre : create_load_balancer, un pool,
set_targets, un port d'entrée, puis set_rules pour router par nom
ou par chemin. Il se paie à l'heure : l'agent annonce le prix d'abord. Un nom en HTTPS
n'obtient son certificat qu'une fois son DNS pointé vers le répartiteur : l'agent indique
à l'utilisateur les enregistrements à créer. Voir
Répartiteurs de charge.
Bases de données
| Outil | Arguments | Périmètre |
|---|---|---|
list_databases | aucun | vms.read |
get_database_options | aucun | vms.read |
get_database | database | vms.read |
get_database_metrics | database, range | vms.read |
get_slow_queries | database | vms.read |
list_database_backups | database | vms.read |
get_database_credentials | database | databases.write |
create_database | name, vpc, engine, version, size_gb | vms.create |
restore_database | database, at, name | vms.create |
fork_database | database, name | vms.create |
detach_database_fork | database | vms.action |
resize_database | database, size_gb | vms.create |
delete_database | database, confirm_name | vms.destroy |
update_database | database, name, créneau de maintenance, disk_cap_gb, eviction_policy (Valkey) | databases.write |
set_database_public_access | database, enabled, sources | network.write |
backup_database | database | backups.write |
create_database_user | database, username, databases, read_only | databases.write |
set_database_user_access | database, username, databases, read_only | databases.write |
reset_database_password | database, username | databases.write |
delete_database_user | database, username | databases.write |
create_logical_database | database, name | databases.write |
delete_logical_database | database, name | databases.write |
enable_extension | database, name, extension | databases.write |
disable_extension | database, name, extension | databases.write |
Les bases gérées (PostgreSQL, MySQL, MariaDB et Valkey) sont en bêta, ouvertes à tous
les comptes. L'agent annonce le prix (get_database_options)
avant create_database, et demande à l'utilisateur avant
delete_database, qui exige le nom exact en retour. Les mots de passe ne
sortent que par get_database_credentials et
create_database_user : l'agent les transmet à l'application par une variable
d'environnement ou un coffre à secrets, jamais dans le code ni les journaux. Chaque
application reçoit son utilisateur, limité à sa base logique (databases, et
read_only pour celle qui ne fait que lire) ;
set_database_user_access le change ensuite et ferme les connexions de
l'utilisateur là où ses droits baissent.
restore_database et fork_database créent une nouvelle base et
n'écrasent rien. Avant resize_database, l'agent annonce le nouveau tarif et la
minute ou deux de coupure : pas de retour à une taille inférieure. Voir Bases de données.
Runners GitHub
| Outil | Arguments | Portée |
|---|---|---|
get_runners | aucun | billing.read |
list_runner_jobs | repository, status, limit, cursor | billing.read |
Les runners GitHub Actions sont en bêta, ouverte à tous les comptes. Lier une organisation ou un compte GitHub passe par GitHub dans un navigateur, depuis la console : aucun outil ne le fait. L'agent lit les étiquettes et leurs prix, et suit les jobs, y compris pourquoi l'un attend (crédit, budget, plafond de vCPU) ou a été refusé. Voir Runners GitHub Actions.
Ce que le serveur MCP ne fait pas
Restaurer ou supprimer la sauvegarde d'une machine, ouvrir une session de console et ajouter des adresses IPv6 restent dans l'API et la console : ces gestes sont rares, et une erreur y coûte cher. Les factures, moyens de paiement et tickets ne sont accessibles à aucune clé.
Les clés d'API et les liaisons OIDC se gèrent dans la console seulement : ni une clé ni un jeton ne peut en créer une ou élargir ses portées.