# Xen Orchestra MCP Server — 245 tools via DADL

The Xen Orchestra DADL turns Xen Orchestra's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 245 tools — vm, vdi, acl, host, network, pool, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by Xen Orchestra feature area, required credential scopes.

**Source:** [Xen Orchestra REST API](https://docs.xen-orchestra.com/restapi)

**Updated:** 2026-05-28

**Tags:** cloud, devops, automation, crud, user-management, file-management, monitoring, logging, auth:bearer

## Which Xen Orchestra endpoints are covered?

**100%** (245 of ~245 endpoints).

**Focus:** Complete REST API coverage for XO 6.4+ (current through 6.5): all object types (VMs, VM controllers, VM templates, VM snapshots, hosts, pools, SRs, VDIs, VDI snapshots, VBDs, networks, VIFs, PIFs, PBDs, PCIs, PGPUs, SMs), all lifecycle actions (CRUD, partial update, power, snapshot/clone/migrate/revert, export/import, hotplug), full sub-resource access (alarms, messages, tasks, tags, stats per object), RBAC v2 (users, groups, acl-roles, acl-privileges), backups (archives, jobs, logs, restore-logs, repositories, schedules), real-time events via SSE, host/pool maintenance ops (rolling reboot/update, management reconfigure, audit logs, missing patches), network traffic rules (SDN controller plugin), XOA appliance (dashboard, ping, gui-routes, MCP status). Some routes with format path params are exposed as multiple typed tools (e.g. /vms/{id}.{format} -> export_vm_xva + export_vm_ova, /vdis/{id}.{format} -> export_vdi_vhd + export_vdi_raw + import_vdi_to_existing + import_vdi_to_existing_raw).

**Missing:** PATCH /vdis/{id} does not exist in the API -- VDIs cannot be renamed via REST (use tags or the JSON-RPC API). SDN-controller traffic-rule routes (/plugins/sdn-controller/*) are included but only function when the xo-server-sdn-controller plugin is installed. Deprecated routes (POST /users/authentication_tokens, GET /backup/jobs/vm/*, GET /restore/logs/*) intentionally excluded -- removal scheduled for 2026-09-12 / 2026-10-13

*Last reviewed: 2026-05-28*

## How do you configure the Xen Orchestra DADL?

1. Deploy Xen Orchestra from sources or use XOA (Xen Orchestra Appliance)
2. Log in to the XO web UI as an admin user
3. Navigate to Settings -> Users to confirm admin access
4. Generate an auth token via CLI: xo-cli --createToken xo.example.com <user> <password>
5. Or via API: POST /rest/v0/users/me/authentication_tokens with Basic auth
6. Copy the returned token value -- use it as the authenticationToken cookie
7. Optional (XO 6.4+): create dedicated non-admin users via POST /users and assign acl-roles via PUT /acl-roles/{id}/users/{userId}

**Environment variable:** `CREDENTIAL_XEN_ORCHESTRA_TOKEN`

[Authentication docs](https://docs.xen-orchestra.com/restapi)

*The url in backends.yaml must point to your XO instance including /rest/v0. Generate a token via xo-cli --createToken or POST /rest/v0/users/me/authentication_tokens with Basic auth. Live Swagger UI at /rest/v0/docs lists all endpoints with required RBAC privileges. For RBAC v2 setup see https://docs.xen-orchestra.com/xo6/acl-v2.*

## How do you install the Xen Orchestra MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: xen-orchestra
  transport: rest
  dadl: xen-orchestra.dadl
  url: "https://xo.example.com/rest/v0"

```

Set the credential:

```
CREDENTIAL_XEN_ORCHESTRA_TOKEN=your-token-here
```

## What 245 tools does the Xen Orchestra DADL expose?

- **GET** `ping` — Health check. Unauthenticated. Returns {result: 'pong', timestamp}. Use this to verify the XO instance is reachable before trying authenticated calls.
- **GET** `get_dashboard` — Aggregated dashboard for the XOA appliance: pool/host/VM counts, storage usage, recent backup-jobs (last 7 days), disconnected servers, disabled hosts. Use ndjson=true for streaming output. Replaces the legacy plural /dashboards endpoint.
- **GET** `get_gui_routes` — Returns the URLs of the legacy XO5 (xo5) and modern XO6 (xo6) web UIs. Useful for clients that need to deep-link into the GUI.
- **GET** `get_mcp_status` — Report whether XO's built-in MCP server is enabled. Unauthenticated. Returns 200 when enabled, 503 when disabled. Requires a recent XO build (REST route added after 6.5.0); returns 404 on older instances.
- **GET** `list_users` — List all users. Returns URLs by default; use fields for objects. Requires user:read privilege.
- **GET** `get_user` — Get details of a single user. Use id='me' for the current authenticated user. Self-fetch is always allowed; reading another user requires user:read privilege.
- **POST** `create_user` — Create a new user. Returns {id} of the created user. Requires user:create privilege.
- **PATCH** `update_user` — Update user properties. Cannot change own permission. Synchronized users (LDAP/SAML/OIDC) cannot have name/password changed.
- **DELETE** `delete_user` — Delete a user. Irreversible. Requires user:delete privilege.
- **GET** `list_user_groups` — List groups the user is a member of (filtered by group:read privilege). Use id='me' for self.
- **GET** `list_user_tasks` — List tasks owned by the user (filtered by task:read privilege). Use id='me' for self.
- **GET** `list_user_acl_privileges` — List effective RBAC v2 acl-privileges for the user (XO 6.4+). Useful for inspecting what a user can actually do. Self-call (/users/me/acl-privileges) is always permitted.
- **GET** `list_auth_tokens` — List all authentication tokens for a user. Use id='me' for self.
- **POST** `create_auth_token` — Create a new authentication token. You can only create tokens for yourself (use id='me'). Returns {token} including the secret (store it securely; cannot be retrieved later).
- **GET** `list_groups` — List all groups (filtered by group:read privilege).
- **GET** `get_group` — Get details of a single group.
- **POST** `create_group` — Create a new group. Returns {id} of the created group.
- **PATCH** `update_group` — Update group properties (currently only name).
- **DELETE** `delete_group` — Delete a group. Irreversible. Removes all role attachments to this group.
- **PUT** `add_user_to_group` — Add a user to a group.
- **DELETE** `remove_user_from_group` — Remove a user from a group.
- **GET** `list_group_users` — List users that are members of the group.
- **GET** `list_group_tasks` — List tasks associated with members of the group.
- **GET** `list_acl_roles` — List all RBAC v2 roles. A role groups privileges and can be attached to users/groups.
- **GET** `get_acl_role` — Get details of a single role.
- **POST** `create_acl_role` — Create a new RBAC role. Returns {id}. Add privileges via POST /acl-privileges (with roleId), then attach to users/groups.
- **PATCH** `update_acl_role` — Update a role's name and/or description (set description to null to clear).
- **DELETE** `delete_acl_role` — Delete a role. Irreversible. All attachments to users/groups are removed; privileges referencing this role are also dropped.
- **POST** `copy_acl_role` — Duplicate a role (and its privileges) under a new name. Useful for deriving custom roles from built-in ones.
- **GET** `list_acl_role_privileges` — List all acl-privileges attached to this role.
- **PUT** `attach_acl_role_to_group` — Attach an RBAC role to a group. All members of the group inherit the role's privileges.
- **DELETE** `detach_acl_role_from_group` — Detach an RBAC role from a group.
- **PUT** `attach_acl_role_to_user` — Attach an RBAC role directly to a user (in addition to roles inherited via groups).
- **DELETE** `detach_acl_role_from_user` — Detach an RBAC role from a user.
- **GET** `list_acl_privileges` — List all RBAC v2 privileges (each privilege = role + resource + action, optionally scoped by object).
- **GET** `get_acl_privilege` — Get details of a single privilege.
- **POST** `create_acl_privilege` — Grant a new privilege (action on a resource type, optionally scoped to a specific object) to a role. Returns {id}. Body fields depend on the resource type -- see Swagger /rest/v0/docs for the privilege schema.
- **PATCH** `update_acl_privilege` — Update a privilege's resource/action/objectId (roleId is immutable).
- **DELETE** `delete_acl_privilege` — Revoke a privilege. Irreversible.
- **GET** `list_vms` — List all VMs. Returns URLs by default; use fields for objects.
- **GET** `get_vm` — Get full details of a VM
- **PATCH** `update_vm` — Partially update a VM's properties (rename, resize CPU/RAM, boot firmware, tags, etc.). Only the fields you pass are changed. Some fields require the VM to be halted. Requires XO 6.5+ (PATCH /vms route returns 404 on older builds).
- **DELETE** `delete_vm` — Destroy a VM and its VDIs. Irreversible.
- **POST** `start_vm` — Start a halted VM. Optionally pin to a specific host via body.hostId.
- **POST** `clean_shutdown_vm` — Gracefully shut down a VM (ACPI shutdown)
- **POST** `hard_shutdown_vm` — Force shutdown a VM immediately (equivalent to pulling the plug)
- **POST** `clean_reboot_vm` — Gracefully reboot a VM (ACPI reboot)
- **POST** `hard_reboot_vm` — Force reboot a VM immediately
- **POST** `pause_vm` — Pause a running VM (freezes CPU, keeps memory)
- **POST** `unpause_vm` — Unpause a paused VM
- **POST** `suspend_vm` — Suspend a VM to disk (saves memory state, frees RAM)
- **POST** `resume_vm` — Resume a suspended VM from disk
- **POST** `snapshot_vm` — Create a snapshot of a VM. Returns task reference; use ?sync to get the snapshot id directly.
- **POST** `revert_vm_to_snapshot` — Revert a VM to one of its snapshots. Optionally take a fresh snapshot of the current state first (snapshotBefore) so the revert is undoable. Requires XO 6.5+ (route returns 404 on older builds).
- **POST** `clone_vm` — Clone a VM. Three modes: fast clone on same SR (fast=true, omit srId), full copy on same SR (fast=false), or copy to another SR/pool (provide srId, optional compress=gzip|zstd for cross-pool).
- **POST** `migrate_vm` — Live-migrate a VM to another host. Supports cross-SR storage migration and per-disk / per-VIF placement for cross-pool moves.
- **GET** `export_vm_xva` — Export a VM as XVA (XCP-ng native format). Streamed binary download.
- **GET** `export_vm_ova` — Export a VM as OVA (Open Virtualization Format, portable across hypervisors).
- **POST** `import_vm_xva` — Import a VM from XVA upload into a pool. Body is the raw XVA stream.
- **GET** `get_vm_stats` — Get RRD statistics for a VM (CPU, memory, network, disk). VM must be running.
- **PUT** `add_vm_data_source` — Enable a specific RRD data source on a VM (e.g. cpu0, vif_0_rx). VM must be running.
- **DELETE** `delete_vm_data_source` — Disable / forget a specific RRD data source on a VM.
- **PUT** `add_vm_tag` — Add a tag to a VM
- **DELETE** `remove_vm_tag` — Remove a tag from a VM
- **GET** `list_vm_vdis` — List all VDIs attached to a VM
- **GET** `list_vm_alarms` — List XAPI alarms (performance/health thresholds) for the VM.
- **GET** `list_vm_messages` — List XAPI messages/alerts emitted for the VM.
- **GET** `list_vm_tasks` — List tasks scoped to this VM (running/completed/failed).
- **GET** `list_vm_backup_jobs` — List backup-jobs that include this VM.
- **GET** `get_vm_dashboard` — Get dashboard/statistics for a VM (aggregate metrics).
- **GET** `list_vm_snapshots` — List all VM snapshots
- **GET** `get_vm_snapshot` — Get details of a VM snapshot
- **DELETE** `delete_vm_snapshot` — Delete a VM snapshot. Irreversible.
- **GET** `export_vm_snapshot` — Export a VM snapshot as XVA or OVA. Format is the file extension ('xva' or 'ova').
- **GET** `list_vm_snapshot_vdis` — List VDIs belonging to a VM snapshot.
- **GET** `list_vm_snapshot_alarms` — List XAPI alarms scoped to a VM snapshot.
- **GET** `list_vm_snapshot_messages` — List XAPI messages scoped to a VM snapshot.
- **GET** `list_vm_snapshot_tasks` — List tasks scoped to a VM snapshot.
- **PUT** `add_vm_snapshot_tag` — Add a tag to a VM snapshot.
- **DELETE** `remove_vm_snapshot_tag` — Remove a tag from a VM snapshot.
- **GET** `list_vm_templates` — List all VM templates. Templates are stamps from which create_vm produces new VMs.
- **GET** `get_vm_template` — Get details of a VM template.
- **DELETE** `delete_vm_template` — Delete a VM template. Irreversible. Built-in templates may be protected.
- **GET** `export_vm_template` — Export a VM template as XVA or OVA.
- **GET** `list_vm_template_vdis` — List VDIs belonging to a VM template.
- **GET** `list_vm_template_alarms` — List XAPI alarms scoped to a VM template.
- **GET** `list_vm_template_messages` — List XAPI messages scoped to a VM template.
- **GET** `list_vm_template_tasks` — List tasks scoped to a VM template.
- **PUT** `add_vm_template_tag` — Add a tag to a VM template.
- **DELETE** `remove_vm_template_tag` — Remove a tag from a VM template.
- **GET** `list_vm_controllers` — List VM controllers (the dom0 control-domain VM of each host). Returns URLs by default; use fields for objects.
- **GET** `get_vm_controller` — Get full details of a VM controller (dom0 control domain).
- **GET** `list_vm_controller_alarms` — List XAPI alarms for a VM controller.
- **GET** `list_vm_controller_vdis` — List VDIs attached to a VM controller.
- **GET** `list_vm_controller_messages` — List XAPI messages for a VM controller.
- **GET** `list_vm_controller_tasks` — List tasks scoped to a VM controller.
- **PUT** `add_vm_controller_tag` — Add a tag to a VM controller.
- **DELETE** `remove_vm_controller_tag` — Remove a tag from a VM controller.
- **GET** `list_hosts` — List all XCP-ng/XenServer hosts
- **GET** `get_host` — Get details of a host
- **GET** `get_host_stats` — Get RRD statistics for a host (CPU, memory, NIC, disk). Host must be enabled.
- **GET** `get_host_audit_log` — Download the host's audit log as plain text. Useful for compliance and forensics.
- **GET** `get_host_logs` — Download the host's full logs as a gzipped tarball. Useful for support tickets and debugging.
- **GET** `list_host_alarms` — List XAPI alarms (performance/health thresholds) for the host.
- **GET** `get_host_smt` — Get the SMT (Simultaneous Multi-Threading / Hyper-Threading) status of the host.
- **GET** `list_host_missing_patches` — List all patches/updates that are available but not yet installed on the host.
- **GET** `list_host_messages` — List XAPI messages/alerts emitted for the host.
- **GET** `list_host_tasks` — List tasks scoped to this host (running/completed/failed).
- **PUT** `add_host_tag` — Add a tag to a host.
- **DELETE** `remove_host_tag` — Remove a tag from a host.
- **POST** `management_reconfigure_host` — Move the management interface (control plane) to a different PIF. May briefly disconnect XO from the host.
- **POST** `disable_host` — Disable a host (prepare for maintenance). Optionally evacuate VMs in the same call (body.evacuate=true, optional force/vmIdsToForceMigrate).
- **POST** `enable_host` — Re-enable a disabled host
- **GET** `list_pools` — List all pools
- **GET** `get_pool` — Get details of a pool
- **GET** `get_pool_stats` — Get aggregated RRD statistics for the entire pool.
- **GET** `get_pool_dashboard` — Get dashboard for a single pool (counts of VMs/hosts/SRs, usage).
- **GET** `list_pool_alarms` — List XAPI alarms for the pool and its objects.
- **GET** `list_pool_missing_patches` — Aggregate of missing patches across all hosts in the pool.
- **GET** `list_pool_messages` — List XAPI messages for the pool.
- **GET** `list_pool_tasks` — List tasks scoped to the pool.
- **PUT** `add_pool_tag` — Add a tag to a pool.
- **DELETE** `remove_pool_tag` — Remove a tag from a pool.
- **POST** `create_vm` — Create a new VM from a template
- **POST** `emergency_shutdown_pool` — Emergency shutdown of all VMs and hosts in a pool
- **POST** `rolling_reboot_pool` — Sequentially reboot hosts with automatic VM migration. Zero downtime.
- **POST** `rolling_update_pool` — Apply updates to hosts sequentially with live migration
- **POST** `create_pool_network` — Create a basic network on a pool (attached to a single PIF). For aggregation use create_bonded_network; for isolated use create_internal_network.
- **POST** `create_bonded_network` — Create a bonded (link-aggregated) network across multiple PIFs in the pool.
- **POST** `create_internal_network` — Create an internal-only network (host-local, no physical PIF, useful for VM-to-VM private traffic)
- **POST** `management_reconfigure_pool` — Reconfigure the management interface across all hosts in the pool. Coordinated equivalent of management_reconfigure_host.
- **GET** `list_srs` — List all storage repositories
- **GET** `get_sr` — Get details of an SR
- **DELETE** `delete_sr` — Destroy an SR and all data on its underlying storage. Irreversible -- the SR must be detached/unplugged first. To keep the data, use forget_sr instead. Requires XO 6.5+ (DELETE /srs route returns 404 on older builds).
- **GET** `list_sr_alarms` — List XAPI alarms for the SR (e.g. low free space).
- **GET** `list_sr_messages` — List XAPI messages for the SR.
- **GET** `list_sr_tasks` — List tasks scoped to the SR.
- **PUT** `add_sr_tag` — Add a tag to an SR.
- **DELETE** `remove_sr_tag` — Remove a tag from an SR.
- **POST** `scan_sr` — Scan an SR to refresh its VDI list (detects manual changes on the underlying storage).
- **POST** `forget_sr` — Forget an SR (detach without destroying data on the underlying storage).
- **POST** `reclaim_space_sr` — Reclaim unused space on a thin-provisioned SR.
- **GET** `list_vdis` — List all virtual disk images
- **GET** `get_vdi` — Get details of a VDI
- **POST** `create_vdi` — Create a new VDI
- **DELETE** `delete_vdi` — Delete a VDI. Irreversible.
- **GET** `list_vdi_alarms` — List XAPI alarms for the VDI.
- **GET** `list_vdi_messages` — List XAPI messages for the VDI.
- **GET** `list_vdi_tasks` — List tasks scoped to the VDI.
- **PUT** `add_vdi_tag` — Add a tag to a VDI.
- **DELETE** `remove_vdi_tag` — Remove a tag from a VDI.
- **POST** `migrate_vdi` — Migrate a VDI to a different SR (live storage migration)
- **GET** `export_vdi_vhd` — Export a VDI as VHD
- **GET** `export_vdi_raw` — Export a VDI as raw disk image
- **POST** `import_vdi_to_sr` — Import a VDI from VHD/raw upload into an SR
- **PUT** `import_vdi_to_existing` — Replace existing VDI contents (VHD format). Size must match exactly.
- **PUT** `import_vdi_to_existing_raw` — Replace existing VDI contents (raw format). Size must match exactly.
- **GET** `list_vdi_snapshots` — List all VDI snapshots.
- **GET** `get_vdi_snapshot` — Get details of a VDI snapshot.
- **DELETE** `delete_vdi_snapshot` — Delete a VDI snapshot. Irreversible.
- **GET** `export_vdi_snapshot` — Export a VDI snapshot as VHD or raw. Format is the file extension ('vhd' or 'raw').
- **GET** `list_vdi_snapshot_alarms` — List XAPI alarms scoped to a VDI snapshot.
- **GET** `list_vdi_snapshot_messages` — List XAPI messages scoped to a VDI snapshot.
- **GET** `list_vdi_snapshot_tasks` — List tasks scoped to a VDI snapshot.
- **PUT** `add_vdi_snapshot_tag` — Add a tag to a VDI snapshot.
- **DELETE** `remove_vdi_snapshot_tag` — Remove a tag from a VDI snapshot.
- **GET** `list_vbds` — List all VBDs (VDI-to-VM attachments).
- **GET** `get_vbd` — Get details of a VBD.
- **POST** `create_vbd` — Create a VBD to attach a VDI to a VM
- **DELETE** `delete_vbd` — Delete a VBD (detach disk)
- **GET** `list_vbd_alarms` — List XAPI alarms for the VBD.
- **GET** `list_vbd_messages` — List XAPI messages for the VBD.
- **GET** `list_vbd_tasks` — List tasks scoped to the VBD.
- **POST** `connect_vbd` — Hotplug a VBD to a running VM
- **POST** `disconnect_vbd` — Hot-unplug a VBD from a running VM
- **GET** `list_networks` — List all networks
- **GET** `get_network` — Get details of a network
- **DELETE** `delete_network` — Delete a network
- **GET** `list_network_alarms` — List XAPI alarms for the network.
- **GET** `list_network_messages` — List XAPI messages for the network.
- **GET** `list_network_tasks` — List tasks scoped to the network.
- **PUT** `add_network_tag` — Add a tag to a network.
- **DELETE** `remove_network_tag` — Remove a tag from a network.
- **GET** `list_vifs` — List all virtual network interfaces.
- **GET** `get_vif` — Get details of a VIF.
- **POST** `create_vif` — Create a virtual network interface on a VM. The VM and network must belong to the same pool.
- **DELETE** `delete_vif` — Delete a virtual network interface
- **POST** `connect_vif` — Hotplug a VIF to a running VM (XO 6.4+).
- **POST** `disconnect_vif` — Hot-unplug a VIF from a running VM (XO 6.4+).
- **GET** `list_vif_alarms` — List XAPI alarms for the VIF.
- **GET** `list_vif_messages` — List XAPI messages for the VIF.
- **GET** `list_vif_tasks` — List tasks scoped to the VIF.
- **POST** `add_network_traffic_rule` — Add a traffic (OpenFlow) rule to a private SDN network. Requires the SDN Controller plugin.
- **POST** `delete_network_traffic_rule` — Remove a traffic rule from a private SDN network. Match the existing rule by direction/ipRange/protocol/port. Requires the SDN Controller plugin.
- **POST** `add_vif_traffic_rule` — Add a traffic (OpenFlow) rule to a VIF connected to a private SDN network. Requires the SDN Controller plugin.
- **POST** `delete_vif_traffic_rule` — Remove a traffic rule from a VIF connected to a private SDN network. Match the existing rule by direction/ipRange/protocol/port. Requires the SDN Controller plugin.
- **GET** `list_pifs` — List all physical network interfaces
- **GET** `get_pif` — Get details of a PIF
- **GET** `list_pif_alarms` — List XAPI alarms for the PIF (e.g. link down).
- **GET** `list_pif_messages` — List XAPI messages for the PIF.
- **GET** `list_pif_tasks` — List tasks scoped to the PIF.
- **GET** `list_pbds` — List all PBDs (SR-to-host connections)
- **GET** `get_pbd` — Get details of a PBD
- **POST** `plug_pbd` — Plug a PBD to connect an SR to a host
- **POST** `unplug_pbd` — Unplug a PBD to disconnect an SR from a host
- **GET** `list_pcis` — List all PCI devices (for passthrough)
- **GET** `get_pci` — Get details of a PCI device
- **GET** `list_pgpus` — List all physical GPUs
- **GET** `get_pgpu` — Get details of a physical GPU
- **GET** `list_sms` — List all storage manager plugins/drivers
- **GET** `get_sm` — Get details of a storage manager plugin
- **GET** `list_tasks` — List all tasks. Use ndjson+watch for real-time streaming.
- **GET** `get_task` — Get a task. Set wait=true to block until the task finishes (long-poll), then return its final state.
- **DELETE** `delete_task` — Delete a completed or failed task
- **DELETE** `delete_tasks` — Bulk delete: removes ALL tasks the current user has 'task:delete' privilege on. Irreversible.
- **POST** `abort_task` — Abort a running task
- **GET** `list_messages` — List XAPI messages/alerts (e.g. HA alerts, license warnings)
- **GET** `get_message` — Get details of a XAPI message
- **GET** `list_alarms` — List all XAPI alarms (CPU, memory, disk, latency thresholds).
- **GET** `get_alarm` — Get details of a single XAPI alarm.
- **GET** `open_events_stream` — Open an SSE (Server-Sent Events) connection. Returns a subscriber id which is used to add/remove subscriptions. Events emitted: ping (keepalive), add (object created), update (object changed), remove (object deleted).
- **POST** `add_event_subscription` — Add an object-type subscription to an open SSE connection. Returns the subscription id (= collection name).
- **DELETE** `remove_event_subscription` — Remove a subscription from an open SSE connection.
- **GET** `list_backups` — List all backup archives
- **GET** `get_backup` — Get details of a backup archive.
- **GET** `list_backup_jobs` — List all configured backup jobs (VM, metadata, mirror)
- **GET** `get_backup_job` — Get details of a backup job.
- **GET** `list_backup_logs` — List backup execution logs
- **GET** `get_backup_log` — Get details of a single backup log entry.
- **GET** `list_restore_logs` — List restore execution logs
- **GET** `get_restore_log` — Get details of a single restore log entry.
- **GET** `list_backup_repositories` — List all backup repositories (NFS, S3, SMB, local targets where backups are stored).
- **GET** `get_backup_repository` — Get details of a backup repository (capacity, type, status).
- **GET** `list_schedules` — List all schedules (cron triggers attached to backup-jobs).
- **GET** `get_schedule` — Get details of a schedule (cron expression, jobId, enabled).
- **POST** `run_schedule` — Manually trigger the backup-job behind this schedule (outside its cron). Returns task reference.
- **GET** `list_proxies` — List all XO Proxy instances
- **GET** `get_proxy` — Get details of an XO Proxy
- **GET** `list_servers` — List all XCP-ng/XenServer connections registered in XO.
- **GET** `get_server` — Get details of a registered server (status, label, host, username).
- **POST** `add_server` — Register a new XCP-ng/XenServer pool master in XO. Returns {id}. Use connect_server afterwards to establish the XAPI connection.
- **DELETE** `delete_server` — Remove a XCP-ng/XenServer connection from XO
- **POST** `connect_server` — Establish the XAPI connection to a registered server.
- **POST** `disconnect_server` — Drop the XAPI connection to a registered server (without removing it from XO).
- **GET** `list_server_tasks` — List tasks scoped to this server connection.

## Which DADLs are related to Xen Orchestra?

- [NetBox](https://www.dadl.ai/d/netbox/) — NetBox DCIM/IPAM API -- full v4 coverage: sites, racks, devices, modules, interfaces, cables, power, IPAM (prefixes, IPs, VLANs, VRFs, route-targets, VLAN translation), virtualization, circuits (including virtual circuits), tenants, contacts, VPN (IKE/IPSec/L2VPN), wireless, extras (webhooks, event-rules, scripts, config-templates, bookmarks, notifications), users/permissions/tokens, and core data sources & jobs
- [Graylog](https://www.dadl.ai/d/graylog/) — Graylog REST API -- log search (Views/Search + legacy universal), streams, pipelines, inputs, alerts, events, dashboards, users, roles, sidecars, index management, and cluster administration. Targets Graylog 6.x.
- [Mempool](https://www.dadl.ai/d/mempool/) — mempool.space — Bitcoin block explorer, mempool visualizer, fee estimator, Lightning Network explorer, and transaction accelerator
- [Mikrotik](https://www.dadl.ai/d/mikrotik/) — MikroTik RouterOS REST API -- manage interfaces, IP addresses, routing, firewall, DHCP, DNS, PPP, queues, wireless, system configuration, users, certificates, files, logs, and diagnostics on RouterOS v7.1+ devices
- [Alertmanager](https://www.dadl.ai/d/alertmanager/) — Prometheus Alertmanager API v2 -- alerts, silences, receivers, alert groups, status, and operational health
- [BookStack](https://www.dadl.ai/d/bookstack/) — BookStack wiki and documentation platform REST API -- shelves, books, chapters, pages (HTML/Markdown content), attachments, image gallery, comments, cross-entity search, exports (HTML/Markdown/PDF/ZIP), ZIP imports, users, roles, content permissions, recycle bin, audit log and tags. Hierarchy: shelves > books > chapters > pages.

---

**Canonical URL:** https://www.dadl.ai/d/xen-orchestra/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/xen-orchestra.dadl
