Model Context Protocol server for Liongard configuration management integration. Provides tools for interacting with the Liongard API to manage environments, agents, inspections, systems, detections, metrics, timeline events, and asset inventory.
Liongard MCP server demonstrates solid fundamentals: all 24 tools have verb-prefixed names following the pattern verb_noun (liongard_navigate, liongard_environments_list, etc.), meaningful descriptions (averaging ~150 chars), and explicit JSON Schema with typed parameters. Strengths include comprehensive enum constraints for domain selection, clear pagination patterns (page/pageSize), and explicit destructive operation warnings. However, output schemas are entirely undocumented, no tool response schema is visible in the source code, forcing LLMs to reason blindly about return structure. Parameter descriptions are present but generic; risk categorization exists but lacks recovery guidance. Error handling is minimal, no visible guidance on retryability, partial failure compensation, or user-fixable conditions. Tool composition is strong (24 focused tools covering 8 domains), but inter-tool reference chains are incomplete (e.g., liongard_environments_list returns environment details but missing IDs needed for related entity calls in some flows).
⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes an agent from Liongard and removes all associated monitoring data and configurations. This action cannot be undone. Confirm with the user before invoking.
List agents in Liongard with pagination. Agents are installed on-premise to facilitate inspections and data collection.
Get detailed information about a specific detection by its ID via GET /api/v1/detections/{id}.
List detections in Liongard via POST /api/v2/detections. Defaults to the last 30 days; pass startDate/endDate (ISO-8601) to override the date range. Returns a paginated envelope with `Data` and `Pagination`.
Get the total count of environments in Liongard. Useful for understanding the size of your environment inventory.
Output schemas completely undocumented. No tool response structure is visible in source code. LLMs cannot infer what fields to expect or how to chain results between tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 73 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Create a new environment in Liongard. Only Name is required, all other fields are optional.
Get detailed information about a specific environment by its ID. Returns full environment profile including status, visibility, and tier.
List environments (customers/companies) in Liongard with pagination. Returns environment details including name, status, and tier.
Get related entities for a specific environment. Returns associated launchpoints, agents, integration mappings, and child environments.
Create a new launchpoint (configured inspection instance). Requires an inspector ID, environment ID, and a name.
List available inspectors (inspection types) in Liongard with pagination. Inspectors define what data is collected.
List launchpoints (configured inspection instances) in Liongard with pagination. Launchpoints are configured instances of inspectors tied to environments.
Trigger an immediate inspection run for a specific launchpoint. The inspection will execute as soon as possible.
Get detailed information about a specific device profile by its ID. Returns full device profile details.
List device profiles in Liongard for a specific environment. Device profiles represent hardware and software assets discovered through inspections. Use liongard_environments_list to find environment IDs.
List asset identities in Liongard for a specific environment. Identities represent users, accounts, and other identity entities discovered through inspections. Use liongard_environments_list to find environment IDs.
Get detailed information about a specific identity by its ID. Returns full identity profile.
Evaluate metrics across all systems. Returns metric evaluation results for all systems in the environment.
Evaluate a metric for a specific system. Returns metric evaluation result for the given system.
List metrics in Liongard with pagination. Metrics are evaluation criteria used to assess system configurations and states.
Discover available Liongard tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite.
Get detailed information about a specific system by its ID. Returns full system profile and properties.
List systems (infrastructure components) discovered through inspections with pagination. Systems represent infrastructure entities tracked by Liongard.
Get a chronological timeline of inspection events and configuration changes. Returns paginated timeline events ordered by date.
Error handling lacks recovery guidance. Destructive operations (liongard_agents_delete) have warnings but no confirmation mechanism or dry-run option. Errors are not categorized as retryable, user-fixable, or fatal.
Parameter descriptions are minimal and lack constraints. Descriptions like 'The environment ID' or 'Page number' do not include ranges, allowed values, or format hints. For example, detections date range parameters lack ISO-8601 format specification in descriptions even though ISO-8601 is mentioned in tool description.
Tool composition gaps: inventory tools (liongard_inventory_identities, liongard_inventory_devices) require environment ID parameter but discovery path unclear. Tool descriptions mention 'Use liongard_environments_list to find environment IDs' but liongard_environments_list response schema is undocumented, so LLM cannot verify it returns needed fields.
Pagination documentation incomplete. All list tools (liongard_environments_list, liongard_agents_list, etc.) accept page/pageSize but return values for total count or has_next_page are undocumented. Agents cannot reliably determine when to stop paginating.
Filter parameter in liongard_detections_list and liongard_inventory_* tools accepts 'array of filter objects' but filter structure is completely undocumented. LLMs cannot construct valid filters without knowing expected object shape.