Skip to content
Back to skills

Overview

ASecurity

Use this skill when Claude needs context about the Liongard platform, terminology, capabilities, authentication patterns, or API structure. Covers environments, agents, inspectors, launchpoints, systems, detections, and common MSP workflows for automated IT documentation.

  • 48 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 27, 2026
data-aijavascriptjavabashexpressapisecuritydocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add wyre-technology/msp-claude-plugins --skill overview --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Overview?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Overview
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyre-technology-overview/badge)](https://www.skillsdirectory.com/skills/wyre-technology-overview)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "Liongard Overview"
description: >
  Use this skill when Claude needs context about the Liongard platform,
  terminology, capabilities, authentication patterns, or API structure.
  Covers environments, agents, inspectors, launchpoints, systems, detections,
  and common MSP workflows for automated IT documentation.
when_to_use: "When claude needs context about the Liongard platform, terminology, capabilities, authentication patterns, or API structure"
triggers:
  - liongard
  - liongard overview
  - liongard platform
  - liongard api
  - roar api
  - liongard terminology
  - liongard authentication
  - liongard capabilities
---

# Liongard Platform Overview

## What Is Liongard?

Liongard is an automated IT documentation and configuration management platform built for Managed Service Providers (MSPs). It continuously inspects and documents IT environments across hundreds of technology platforms, providing:

- **Automated documentation** of customer IT infrastructure
- **Change detection** to identify configuration drift and anomalies
- **Compliance monitoring** to enforce security baselines
- **Cross-platform visibility** from a single dashboard
- **Historical snapshots** of system configurations over time

Liongard replaces manual documentation processes with automated, scheduled inspections that capture the state of servers, firewalls, cloud services, and more.

## Key Terminology

### Environments

Environments represent customer organizations or sites being monitored. Each environment contains agents, launchpoints, systems, and detections. Environments can be organized into groups and tiers for logical management.

| Field | Type | Description |
|-------|------|-------------|
| `ID` | int | Unique environment identifier |
| `Name` | string | Environment display name |
| `Description` | string | Optional description |
| `Status` | string | Active or Inactive |
| `Visible` | boolean | Visibility in UI |
| `Tier` | string | Service tier classification |
| `CreatedOn` | datetime | Creation timestamp |
| `UpdatedOn` | datetime | Last update timestamp |

### Agents

Agents are lightweight software deployed to customer sites that execute inspections. Each agent connects back to the Liongard platform and runs configured inspection tasks on a schedule.

- Agents can be installed on Windows, Linux, or macOS
- Each agent is associated with one or more environments
- Agents report status (Online, Offline, Error)
- Dynamic installer generation available via API

### Inspectors

Inspectors are templates defining what to inspect. Liongard provides hundreds of built-in inspectors for common platforms:

- **Active Directory** - Users, groups, policies, domain controllers
- **Microsoft 365** - Tenants, users, licenses, security settings
- **Cisco Meraki** - Networks, devices, VPN, firewall rules
- **VMware vSphere** - Hosts, VMs, datastores, networking
- **Fortinet FortiGate** - Firewall policies, VPN, interfaces
- **SonicWall** - Security policies, VPN, zones
- **Datto** - Backup status, agents, recovery points
- And hundreds more across networking, security, cloud, and backup platforms

### Launchpoints

Launchpoints are configured inspection instances that tie together an inspector template, a target environment, an agent, credentials, and a schedule. They represent "run this inspector against this target on this schedule."

| Component | Description |
|-----------|-------------|
| Inspector | What to inspect (template) |
| Environment | Where it belongs (customer) |
| Agent | Who runs it (deployed software) |
| Credentials | How to authenticate to the target |
| Schedule | When to run (cron expression) |

### Systems

Systems are discovered items from inspections. When a launchpoint runs, it discovers systems such as servers, firewalls, cloud services, user accounts, and other entities. Each system contains detailed configuration data captured during inspection.

### Detections

Detections are automated change and anomaly alerts generated when inspections find differences from previous runs. They enable MSPs to:

- Monitor configuration changes across all clients
- Identify unauthorized modifications
- Track compliance drift
- Alert on security-relevant changes

### Metrics

Custom metrics allow MSPs to define and track specific values across systems and environments. Metrics can be evaluated per-system or aggregated across environments.

### Timeline

The timeline provides an audit trail of all events and changes within Liongard, including inspection runs, detection triggers, user actions, and system events.

### Dataprints

Dataprints provide JMESPath-evaluated data extraction from system details. They allow precise querying of nested configuration data captured during inspections.

### Asset Inventory

Asset Inventory (v2) provides identity and device profile management across all inspected environments, aggregating user accounts and devices discovered through inspections.

## Authentication

### API Key Authentication

Liongard uses API key authentication via the `X-ROAR-API-KEY` header:

```http
GET /api/v1/environments
X-ROAR-API-KEY: YOUR_API_KEY
Content-Type: application/json
```

**Required Headers:**

| Header | Value | Description |
|--------|-------|-------------|
| `X-ROAR-API-KEY` | `{api_key}` | API key from Liongard portal |
| `Content-Type` | `application/json` | For POST/PUT requests |

### Instance-Based URLs

Liongard uses instance-based URLs where each customer has a unique subdomain:

```
https://{instance}.app.liongard.com/api/v1
https://{instance}.app.liongard.com/api/v2
```

For example, if your instance is `acmemsp`:
```
https://acmemsp.app.liongard.com/api/v1/environments
```

### Obtaining API Credentials

1. Log into your Liongard instance
2. Navigate to **Settings > Access Keys**
3. Click **Create Access Key**
4. Copy the API key (store securely)
5. Note your instance name from the URL

### Environment Variable Setup

```bash
export LIONGARD_INSTANCE="yourcompany"
export LIONGARD_API_KEY="your-api-key-here"
```

### Security Best Practices

1. **Never commit API keys** - Use environment variables or secret managers
2. **Rotate keys periodically** - Generate new keys on a regular schedule
3. **Use HTTPS only** - All Liongard API calls require HTTPS
4. **Limit key access** - Only share with necessary services
5. **Monitor usage** - Watch for unauthorized access patterns

## Dual API Versions

Liongard provides two API versions with different entity coverage:

### v1 Endpoints

Most entities are accessed through v1:

| Endpoint | Methods | Description |
|----------|---------|-------------|
| `/api/v1/environments` | GET, POST, PUT, DELETE | Environment management |
| `/api/v1/environments/count` | GET | Environment count |
| `/api/v1/agents` | GET, DELETE | Agent management |
| `/api/v1/inspectors` | GET | Inspector templates |
| `/api/v1/launchpoints` | GET, POST, PUT, DELETE | Configured inspections |
| `/api/v1/launchpoints/{id}/run` | POST | Trigger inspection |
| `/api/v1/systems` | GET | Discovered systems |
| `/api/v1/systems/{id}/detail` | GET | System detail data |
| `/api/v1/detections` | POST | Query detections |
| `/api/v1/alerts` | GET, POST, PUT, DELETE | Alert rules |
| `/api/v1/alerts/triggered` | GET | Triggered alerts |
| `/api/v1/metrics` | GET, POST, PUT, DELETE | Custom metrics |
| `/api/v1/timeline` | GET | Timeline events |
| `/api/v1/users` | GET | User management |
| `/api/v1/groups` | GET | Group management |
| `/api/v1/accesskeys` | GET, POST, DELETE | API key management |

### v2 Endpoints

Newer and enhanced endpoints are available through v2:

| Endpoint | Methods | Description |
|----------|---------|-------------|
| `/api/v2/environments` | GET, POST, PUT, DELETE | Enhanced environment management |
| `/api/v2/environment-groups` | GET, POST, PUT, DELETE | Environment grouping |
| `/api/v2/agents` | GET, DELETE | Enhanced agent management |
| `/api/v2/agents/installer` | POST | Dynamic installer generation |
| `/api/v2/detections` | POST | Enhanced detection queries |
| `/api/v2/metrics` | GET, POST, PUT, DELETE | Enhanced metrics |
| `/api/v2/metrics/evaluate` | POST | Metric evaluation |
| `/api/v2/metrics/evaluate-systems` | POST | Per-system metric evaluation |
| `/api/v2/timelines-query` | POST | Enhanced timeline queries |
| `/api/v2/inventory/identities` | GET | Identity profiles |
| `/api/v2/inventory/devices` | GET | Device profiles |
| `/api/v2/dataprints-evaluate-systemdetailid` | POST | JMESPath data extraction |
| `/api/v2/webhooks` | GET, POST, PUT, DELETE | Webhook management |

## Pagination

### GET Request Pagination

For GET requests, use `page` and `pageSize` query parameters:

```http
GET /api/v1/environments?page=1&pageSize=100
X-ROAR-API-KEY: {api_key}
```

### POST Request Pagination

For POST-based queries (detections, timelines), include a `Pagination` object in the request body:

```json
{
  "Pagination": {
    "Page": 1,
    "PageSize": 100
  },
  "conditions": []
}
```

### Pagination Parameters

| Parameter | Type | Default | Max | Description |
|-----------|------|---------|-----|-------------|
| `page` / `Page` | int | 1 | - | Page number (1-indexed) |
| `pageSize` / `PageSize` | int | 50 | 2000 | Items per page |

### Pagination Response

```json
{
  "Data": [...],
  "TotalRows": 1500,
  "HasMoreRows": true,
  "CurrentPage": 1,
  "TotalPages": 15,
  "PageSize": 100
}
```

### Efficient Pagination Pattern

```javascript
async function fetchAllItems(endpoint) {
  const allItems = [];
  let page = 1;
  let hasMore = true;

  while (hasMore) {
    const response = await fetch(
      `https://${instance}.app.liongard.com/api/v1/${endpoint}?page=${page}&pageSize=500`,
      {
        headers: {
          'X-ROAR-API-KEY': process.env.LIONGARD_API_KEY
        }
      }
    );

    const data = await response.json();
    allItems.push(...data.Data);

    hasMore = data.HasMoreRows;
    page++;

    // Respect rate limits
    if (hasMore) {
      await sleep(200);
    }
  }

  return allItems;
}
```

## Filtering

### Condition-Based Filtering

For POST-based endpoints, Liongard supports JSON condition filters:

```json
{
  "conditions": [
    {
      "path": "Status",
      "op": "eq",
      "value": "Active"
    },
    {
      "path": "Tier",
      "op": "eq",
      "value": "Premium"
    }
  ]
}
```

### Filter Operators

| Operator | Description | Example |
|----------|-------------|---------|
| `eq` | Equals | `{"op": "eq", "value": "Active"}` |
| `ne` | Not equals | `{"op": "ne", "value": "Inactive"}` |
| `gt` | Greater than | `{"op": "gt", "value": 100}` |
| `lt` | Less than | `{"op": "lt", "value": 50}` |
| `gte` | Greater than or equal | `{"op": "gte", "value": 10}` |
| `lte` | Less than or equal | `{"op": "lte", "value": 100}` |
| `contains` | String contains | `{"op": "contains", "value": "Acme"}` |
| `in` | Value in list | `{"op": "in", "value": [1, 2, 3]}` |

### Field Selection

Use `fields[]` to limit returned fields:

```json
{
  "fields": ["ID", "Name", "Status"],
  "conditions": []
}
```

### Sorting

Use `orderBy[]` to control result ordering:

```json
{
  "orderBy": [
    {
      "path": "Name",
      "direction": "asc"
    }
  ]
}
```

## Rate Limiting

### Conservative Default: 300 Requests per Minute

Liongard does not publicly document specific rate limits. A conservative default of **300 requests per minute** is recommended to avoid throttling.

### Retry Strategy with Exponential Backoff

```javascript
async function requestWithRetry(url, options, maxRetries = 5) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      const response = await fetch(url, options);

      if (response.status === 429) {
        const retryAfter = parseInt(response.headers.get('Retry-After')) || 30;
        const jitter = Math.random() * 1000;
        console.log(`Rate limited. Waiting ${retryAfter}s...`);
        await sleep(retryAfter * 1000 + jitter);
        continue;
      }

      if (!response.ok) {
        throw new Error(`HTTP ${response.status}: ${response.statusText}`);
      }

      return await response.json();
    } catch (error) {
      if (attempt === maxRetries - 1) throw error;

      const delay = Math.pow(2, attempt) * 1000 + Math.random() * 1000;
      console.log(`Attempt ${attempt + 1} failed. Retrying in ${delay}ms...`);
      await sleep(delay);
    }
  }
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
```

## Error Handling

### HTTP Status Codes

| Code | Meaning | Action |
|------|---------|--------|
| 200 | Success | Process response |
| 201 | Created | Entity created successfully |
| 400 | Bad Request | Check request format/values |
| 401 | Unauthorized | Verify API key |
| 403 | Forbidden | Check permissions |
| 404 | Not Found | Entity doesn't exist |
| 429 | Rate Limited | Implement backoff |
| 500 | Server Error | Retry with backoff |

### Error Handling Pattern

```javascript
async function handleLiongardRequest(endpoint, options = {}) {
  const baseUrl = `https://${process.env.LIONGARD_INSTANCE}.app.liongard.com/api/v1`;

  const response = await fetch(`${baseUrl}/${endpoint}`, {
    ...options,
    headers: {
      'X-ROAR-API-KEY': process.env.LIONGARD_API_KEY,
      'Content-Type': 'application/json',
      ...options.headers
    }
  });

  if (!response.ok) {
    const error = await response.json().catch(() => ({}));

    switch (response.status) {
      case 401:
        throw new Error('Invalid API key. Check LIONGARD_API_KEY.');
      case 403:
        throw new Error('Permission denied. Check API key permissions.');
      case 404:
        throw new Error(`Resource not found: ${endpoint}`);
      case 429:
        throw new Error('Rate limit exceeded. Implement backoff.');
      default:
        throw new Error(error.Message || `API error: ${response.status}`);
    }
  }

  return response.json();
}
```

## Common MSP Workflows

### New Client Onboarding

1. **Create environment** - Add new customer organization
2. **Deploy agent** - Install Liongard agent on client site
3. **Configure launchpoints** - Set up inspectors for AD, O365, firewalls, etc.
4. **Run initial inspections** - Trigger immediate inspection runs
5. **Review systems** - Verify discovered systems and data quality
6. **Configure detections** - Set up change monitoring and alerts
7. **Set up metrics** - Define compliance and health metrics

### Change Monitoring

1. **Review detections** - Check recent detection alerts
2. **Investigate changes** - Drill into system details for specifics
3. **Compare snapshots** - View before/after configuration data
4. **Document findings** - Record change context and approvals
5. **Update baselines** - Accept changes or flag for remediation

### Compliance Reporting

1. **Define metrics** - Create metrics for compliance requirements
2. **Evaluate across environments** - Run metric evaluations
3. **Generate reports** - Export metric results and trends
4. **Identify gaps** - Flag non-compliant systems
5. **Track remediation** - Monitor progress toward compliance

### Inspection Troubleshooting

1. **Check agent status** - Verify agent is online
2. **Review launchpoint** - Check configuration and credentials
3. **Check last inspection** - Look at most recent run status
4. **Review timeline** - Check for errors or warnings
5. **Re-run inspection** - Trigger manual inspection via API

## Data Relationships

```
Environment (ID)
    |
    +-- Agents (AgentID)
    |       +-- Installer Generation
    |
    +-- Launchpoints (LaunchpointID)
    |       +-- Inspector (InspectorID)
    |       +-- Schedule (Cron)
    |       +-- Systems (SystemID)
    |               +-- System Details
    |               +-- Dataprints
    |               +-- Inspections (InspectionID)
    |
    +-- Detections (DetectionID)
    |
    +-- Metrics (MetricID)
    |       +-- Metric Evaluations
    |
    +-- Timeline Events
    |
    +-- Asset Inventory
            +-- Identities
            +-- Device Profiles
```

## Related Skills

- [Liongard Environments](../environments/SKILL.md) - Environment management
- [Liongard Inspections](../inspections/SKILL.md) - Inspectors and launchpoints
- [Liongard Systems](../systems/SKILL.md) - Systems and dataprints
- [Liongard Detections](../detections/SKILL.md) - Change detection and alerts

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…