Skip to main content
Glama

Aegis MCP

An AI-assisted, ten-step confidentiality hardening project for Linux and Windows architectures, with MCP integration and professional reporting.

The auditor uses OpenCode, another MCP-compatible AI host, or a custom SDK application. The host connects the chosen model to Aegis; Aegis collects evidence from operator-registered systems, evaluates it against an embedded best-practice guide, and renders a professional English report. The model explains findings and priorities while the server supplies the evidence tables, ISO references and visual design.

Project subject: Summary of a Ten-Step Best-Practice Guide to the Hardening Process of an Information System in Preparation for a Confidentiality Audit

The guide and every report preserve exactly ten steps. The operator provides an authorized existing architecture; this repository implements the MCP server and report workflow.

Implementation status: Linux, Linux inside WSL, Linux VPSs over SSH and existing Linux containers have implemented collectors. Native Windows uses a separate PowerShell collector in the extension design below; that collector and Windows-specific checks are planned. A WSL assessment records the Linux guest, while a native Windows assessment must record Windows settings.

Architecture · Audit workflow · Ten-step guide · ISO references · Setup · Report preview

Who uses it and why

User

Use

Deliverable

Auditor or student

Assess an authorized system using the ten-step method

Traceable findings, missing evidence and an English audit dossier

System administrator

Review a hardening plan and verify supported changes

Exact diffs, prerequisites and a before/after comparison

Professor or technical reviewer

Follow the method from system observations to conclusions

Consistent ten-step structure, ISO mappings and independent review items

Related MCP server: sec-ops-mcp

System architecture

flowchart TB
    Auditor["Auditor / system owner"] --> Host["OpenCode / MCP host / custom SDK app"]
    Host <-->|"Inference"| Model["Chosen language model"]

    subgraph Aegis["Aegis MCP — this project"]
        Server["Tools · resources · prompts"]
        Registry["Operator target registry"] --> Server
        Guide["Ten steps + ISO references"] --> Server
        Server --> Collector["Bounded collectors + check engine"]
        Collector --> Evidence["Private evidence snapshots"]
        Server -->|"AI narrative"| Renderer["Report context + template engine"]
        Evidence --> Renderer
    end

    Host <-->|"MCP: stdio / loopback HTTP"| Server
    Collector <-->|"Registered access"| Linux["Linux / WSL / VPS / Docker"]
    Collector -.-> Windows["Native Windows workstation / server<br/>PowerShell collector — planned"]
    Renderer --> Reports["English HTML / Markdown / JSON"]
    Reports --> Review["Auditor review · browser print-to-PDF"]
    classDef planned stroke-dasharray: 5 5
    class Windows planned

The host coordinates; the model interprets; Aegis collects, evaluates and renders; the auditor reviews. Model credentials and inference belong to the host. Aegis uses the MCP protocol to expose capabilities to that host, as described in the official MCP architecture.

Layer

Implementation

Responsibility

MCP interface

server.py, official Python MCP SDK

Expose nine tools, four resources and two prompts over stdio or loopback HTTP

Method and references

catalog.py, assets/prompts/

Keep the exact subject, ten guide steps, ISO identifiers and AI workflow instructions

Audit orchestration

engine.py, checks.py

Collect observations, evaluate checks, preserve review gaps and manage plans/comparisons

Target access

targets.py, agent.py

Resolve registered IDs and run fixed, bounded Linux collection/remediation operations

Evidence custody

workspace.py, private .runtime/

Store SHA-256-addressed snapshots, HMAC-sealed plans and chained workflow events

Report generation

reporting.py, assets/templates/

Validate AI narrative and generate consistent offline reports from recorded evidence

The operator configures addresses, access, container names and metadata paths locally. MCP calls use registered IDs such as wsl or vps; the model cannot supply an arbitrary destination or shell command through Aegis tools. An architecture with several registered nodes is assessed node by node, with a separate audit/report for each target. Dashed Windows elements show the planned extension. Technical data flow and trust boundaries.

From an audit request to a report

Phase

Interaction

Result

Define the scope

Auditor registers owned/authorized targets; host connects Aegis to the selected model

Known target IDs and explicit access boundaries

Load the method

Model calls get_hardening_guide and list_targets

Exact subject, ten steps, ISO references and target capabilities

Gather evidence

audit_target(target_id) runs the bounded collector

Timestamped observations, check statuses, review items and an audit_id

Review treatment

If requested, create_hardening_plan(target_id, audit_id)

Supported actions, exact diffs, prerequisites and manual work

Verify changes

When authorized and enabled, apply the plan and compare the returned after audit with the before audit

Recorded changes and observed status transitions

Draft once

get_report_context(audit_id) supplies compact facts, the writing brief and narrative schema

Model writes a short summary, priorities and optional step notes

Render and review

render_report(audit_id, narrative) fills the packaged template

HTML, Markdown and JSON paths for auditor review; PDF via browser printing

The read-only audit-to-report path works without applying a plan. For example, an auditor can ask OpenCode to assess wsl, receive an audit ID, review gaps and produce a report using the same snapshot. Reassessing is useful after a change or when evidence has become stale.

The ten-step method

Step

Best-practice domain

Confidentiality purpose

Suggested ISO/IEC 27001 Annex A controls

01

Scope, inventory and classify

Know which assets and data need protection

A.5.9, A.5.12, A.5.13

02

Maintain a patched baseline

Reduce exposure from vulnerable software

A.8.8, A.8.9

03

Constrain identities and access

Permit access only to approved identities

A.5.15, A.5.16, A.5.18, A.8.2, A.8.5

04

Separate network trust zones

Restrict unintended paths to sensitive services

A.8.20–A.8.22

05

Protect cryptography and keys

Protect confidential data in transit and storage

A.8.24, A.5.17

06

Reduce system attack surface

Reduce information leaks and excess privilege

A.8.9, A.8.19, A.8.27

07

Minimize data exposure

Reduce permissive files and data disclosure

A.8.3, A.8.11, A.8.12, A.5.34

08

Observe and investigate access

Produce usable access and incident evidence

A.8.15–A.8.17

09

Secure backups and prove recovery

Protect copies and demonstrate recovery

A.8.13, A.5.30

10

Validate and build the audit dossier

Preserve evidence, review gaps and verify changes

A.5.35, A.5.36, A.8.32

Each step supplies a risk, best practice, expected audit evidence and suggested standards mapping. Technical checks use pass, fail, unknown or not_applicable; organizational and application controls retain independent human review items. Missing evidence and inherited host controls never become passes. Read the complete embedded guide.

How ISO references guide the assessment

Reference

Role in the project

Auditor's use

ISO/IEC 27001:2022

ISMS requirements and suggested clause/Annex A mappings

Establish scope, assess risks and validate control applicability

ISO/IEC 27002:2022

Guidance for information-security controls

Consult implementation guidance and identify the evidence needed for each domain

ISO/IEC 27001:2022/Amd 1:2024, linked from the official 27001 page

Amendment concerning organizational context

Include the amendment when reviewing the actual ISMS context

The model obtains the project's original guidance and official reference links through get_hardening_guide, aegis://standards/mappings and get_report_context. Clause and control identifiers orient the assessment; they are suggested mappings for the auditor to validate against the organization and its Statement of Applicability (the record of applicable controls and their justification).

For the normative text, the auditor follows the official ISO links or uses institutional access under its permitted terms. The MCP supplies original guidance, identifiers and links; the full standards remain separately managed references. ISO's publication terms also govern permitted AI use of its text. Technical snapshots support audit preparation and require organizational evidence and independent review before any conformity conclusion.

Getting started

Requires Python 3.11+, uv and a Linux execution environment. Run the server in WSL when using a Windows machine. SSH targets and existing containers need Python 3.9+ inside the target; missing tools are recorded as missing evidence.

uv sync --frozen
cp --no-clobber targets.example.yaml targets.yaml
# Edit targets.yaml: keep only targets you own and intend to assess.
uv run aegis doctor
uv run aegis-mcp

aegis-mcp waits for an AI client over stdio. It does not print a dashboard. Register the launch command in your MCP client using the connection examples.

You can verify setup before connecting an AI:

uv run aegis guide
uv run aegis targets
uv run aegis audit wsl
# Save the returned audit_id and use it in the following commands.
uv run aegis plan wsl --audit <audit_id>
uv run aegis report --audit <audit_id>

The report command fills the existing template with deterministic summary prose. A connected AI can supply a richer narrative through get_report_context and render_report.

Connect OpenCode or another AI host

Integration

Connection

Model handling

OpenCode

Merge examples/opencode.json; verify with opencode mcp list

Select/configure the model in OpenCode

Another MCP-compatible host

Use the matching stdio, VS Code or HTTP example

The host manages its model and tool-use policy

Custom SDK application

Use an MCP SDK client plus a model SDK or local inference runtime

Your application forwards tool requests/results and controls the agent loop

For OpenCode, follow the setup instructions. Look for aegis connected; tools appear with names such as aegis_audit_target. The configuration shape is an mcp mapping, documented in OpenCode's official MCP guide.

For clients using the common mcpServers configuration shape:

{
  "mcpServers": {
    "aegis": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/audit_mcp", "run", "--frozen", "aegis-mcp"],
      "env": {
        "AEGIS_TARGETS": "/absolute/path/to/audit_mcp/targets.yaml",
        "AEGIS_WORKSPACE": "/absolute/path/to/audit_mcp/.runtime",
        "AEGIS_ALLOW_APPLY": "0"
      }
    }
  }
}

Use absolute paths and make uv available to the client process. Client configuration shapes differ; see connection examples. Aegis works with MCP-compatible AI hosts. A model without an MCP host needs an adapter. Your chosen host handles model credentials and inference; Aegis does not call a paid model itself.

Suggested first request:

Use Aegis to summarize the ten-step hardening best-practice guide, audit my registered wsl target for confidentiality readiness, and produce a professional English report using the embedded template. Keep missing evidence and human review items visible. Do not apply target changes.

MCP interface

Tool

Result

get_hardening_guide

Exact English subject, ten steps and ISO links

list_targets

Locally registered IDs and capabilities

audit_target

Read-only target observations and a SHA-256 audit ID

create_hardening_plan

Sealed plan, exact diffs, prerequisites and manual work

apply_hardening_plan

Supported changes, target backup and after evidence

rollback_hardening_plan

Restore managed settings and collect new evidence

compare_audits

Status transitions between snapshots

get_report_context

Compact ten-step evidence, writing brief and narrative schema

render_report

Offline HTML, Markdown and JSON files

Resource

Supplies

aegis://guide/ten-steps

Exact subject and ten-step best-practice guide

aegis://standards/mappings

Suggested clause/control identifiers and official reference links

aegis://report/director

Instructions for concise, evidence-based AI narrative

aegis://report/template

Packaged report structure

Two reusable prompts orient the model: confidentiality_audit(target_id) guides assessment, and professional_report(audit_id, before_audit_id?) supplies report context. Hosts that primarily support tools can follow the same workflow through the nine tools above.

Professional report, with little model effort

The design is built in: editorial cover, mint accents, clear typography, ten-step evidence sections, ISO control chips, status filters, search, a before/after comparison and a print-to-PDF layout. It requires no external fonts, analytics or network requests.

The AI receives compact facts and a strict narrative schema. It drafts the title, executive summary, priorities and optional step notes once. The server generates all tables and styling. Narrative cannot override collected counts or statuses. HTML is escaped and protected by a restrictive content-security policy.

Artifact

Contents

Use

report.html

Ten-step findings, review items, AI narrative, references and visual navigation

Present the assessment; print/save a PDF in a browser

report.md

The same assessment in readable Markdown

Review conclusions and share approved text

evidence.json

Compact assessed evidence, scope, ISO mappings and optional comparison

Inspect the data supporting the report

render_report returns absolute paths under .runtime/reports/ for the selected audit. The template handles formatting and tables so the model can focus on concise, evidence-based interpretation.

Reports and system evidence stay in .runtime/, which is ignored by Git. Evidence may include operational hostnames, usernames and configured paths: review a report before sharing it externally.

Professional report template preview

The interactive report preview uses synthetic evidence to demonstrate the design. See the report structure and narrative contract.

Target scope and supported hardening

Target

Access adapter

Status

Assessment boundary

Existing local Linux / WSL

Local Python collector

Implemented

Linux guest evidence; WSL findings do not establish Windows-host security

Existing Linux VPS

Key-authenticated SSH with strict host-key checks

Implemented

Visible guest settings and operator-configured metadata paths

Existing Linux Docker container

docker exec into the registered container

Implemented

Container evidence; audit-only, with host controls requiring separate assessment

Native Windows workstation / server

Bounded PowerShell collector and Windows checks

Planned

Windows configuration evidence under the same ten-step method

Linux is the implemented collection scope. Application IAM, cloud policies, hypervisors and organizational practices require separate evidence and human review. SSH/container targets need Python 3.9+; collection needs the permissions appropriate to each check. The collector is ephemeral and reads fixed system settings and configured file metadata.

The native Windows design retains the same MCP workflow and report structure, using Windows-specific evidence for updates, privileged accounts, firewall profiles, BitLocker status, service privileges, NTFS permissions, audit logging and backups. Its checks should use an operator-approved baseline, guided by Microsoft's Windows security baselines. See the Windows extension design; it requires implementation and operational validation before native Windows audits are available.

Audit collection is read-only on the target. Target changes require both AEGIS_ALLOW_APPLY=1 in the server environment and allow_apply: true for the target. The operator still controls conversational authorization through the AI host.

The current automatic catalogue is deliberately explicit:

  • Linux kernel information-disclosure and link-protection settings: dmesg_restrict, kptr_restrict, protected_hardlinks, protected_symlinks.

  • A managed login-shell umask 027 drop-in. Existing processes and service policies are unaffected.

  • Key-only SSH and disabled direct root SSH login, after independent key access and configuration prerequisites are verified locally.

Patching, firewall changes, application IAM, volume encryption, MFA, logging custody, backup encryption and restore exercises are guided work requiring environment-specific review. Docker targets are audit-only; WSL kernel controls are inherited from its host. Aegis does not provision, restart or rebuild containers.

Read the exact prerequisites and rollback behavior before enabling target writes.

Development and verification

uv sync --frozen
uv run ruff check src tests scripts
uv run pytest -q
uv run python scripts/check_repository.py
uv run pip-audit --skip-editable
uv build

Tests cover the real MCP protocol using synthetic target evidence, target/option injection, evidence tampering, local permission gates, stale plans, rollback, inherited-control handling, report escaping and content-security hashes. Adapter and operational test boundaries are documented in validation.

Repository layout

src/aegis_mcp/      MCP server, bounded collector, adapters, evidence and reporting
  assets/prompts/  Ten-step workflow and one-pass report director
  assets/templates/ Professional offline HTML/CSS/JS template
docs/              Setup, guide, architecture, hardening and template preview
examples/          MCP host configuration examples
tests/             Protocol, security and report regression tests
scripts/           Publication checks and synthetic template preview
targets.example.yaml Operator target configuration template
uv.lock            Locked dependencies

ISO mapping references: ISO/IEC 27001:2022, ISO/IEC 27002:2022. This repository contains original guidance and control identifiers, not copied ISO standard text. See SECURITY.md and MIT license.

Available Tools

9 tools
apply_hardening_planA
Destructive

Apply a reviewed, sealed plan to its registered target; requires explicit local write opt-ins and root access. Backs up, validates and collects after evidence.

NameRequiredDescriptionDefault
plan_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context — that it backs up, validates, and collects evidence afterwards — which materially affects an agent's risk assessment and expectation of recoverability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action and follows with preconditions and side effects. No filler, though the 'collects after evidence' phrasing is slightly compressed and could be clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary. For a destructive mutation tool the description supplies prerequisites, side effects (backup, validation, evidence collection), and hints of recoverability, leaving only the plan_id contract underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 0% schema description coverage, so the schema documents nothing beyond the name. The description implies the plan reference via 'reviewed, sealed plan' but gives no format, provenance, or validity requirements for plan_id. It partially compensates but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Apply ... plan to its registered target') and constrains it to a 'reviewed, sealed' plan, which implicitly separates it from create_hardening_plan and rollback_hardening_plan. It is clear what the tool does, though it never names the sibling alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Apply a reviewed, sealed plan' implies a plan must first be created and reviewed, and the description adds two concrete preconditions (local write opt-ins, root access). However, there is no explicit when-to-use/when-not statement and no routing to alternatives such as rollback_hardening_plan if the application fails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_targetB

Collect read-only Linux evidence and save a local audit snapshot. No target configuration changes.

NameRequiredDescriptionDefault
target_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is largely covered. The description usefully reconciles the non-read-only hint by stating it writes a local snapshot while making no target configuration changes, but it omits other behavioral details such as where the snapshot lands, how long collection takes, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences; the core action comes first and the scoping caveat second. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. Still, for a tool whose whole job is producing a saved artifact, the description omits where the snapshot is stored and what target_id must match, leaving moderate gaps given the 0%-coverage schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter target_id has 0% schema description coverage, so the description carries the full burden for it and says nothing about what a target id is or how to obtain one (e.g., via list_targets). The phrase 'target configuration changes' only obliquely hints that target_id refers to a managed host.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb pair (collect, save) and concrete resources (read-only Linux evidence, local audit snapshot), so the agent knows exactly what is produced. It does not, however, differentiate itself from siblings like get_report_context or compare_audits, which also deal with audit data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no named alternative. The agent must infer that this is the evidence-collection step versus compare_audits or create_hardening_plan, and there is no mention of prerequisites such as a valid target existing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_auditsB
Read-only

Compare evidence status changes for the same target registration.

NameRequiredDescriptionDefault
after_audit_idYes
before_audit_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so the safety profile needs no restating. The description adds the meaningful constraint that both audits must belong to the same target, but says nothing about what is compared (which evidence fields), how differences are surfaced, or ordering assumptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is appropriately sized for a two-parameter tool, though its brevity leaves the ordering semantics unresolved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained. Still, with 0% schema description coverage the definition should clarify parameter ordering and what 'evidence status' denotes; as written it is minimally sufficient rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%: both before_audit_id and after_audit_id are undocumented in the schema. The description alludes to temporal ordering via 'changes' but never states that before_audit_id is the earlier audit or how the two IDs relate to the same target, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Compare') plus resource ('evidence status changes') and an explicit scope constraint ('for the same target registration'). This clearly separates it from siblings like audit_target or get_hardening_guide, though it never names an alternative to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the same target registration' implies a usage precondition and rules out comparing audits of different targets. However, there is no explicit when-to-use trigger, no when-not guidance, and no named alternative, so usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_hardening_planA

Build a sealed plan with exact diffs, supported actions, prerequisites and manual work. Does not modify the target.

NameRequiredDescriptionDefault
audit_idYes
target_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false (a plan resource is created) while the description clarifies that the target itself is left untouched — a genuinely useful disambiguation, not a contradiction. It also discloses what the plan contains and that it is 'sealed'. It stops short of stating auth needs or whether plans can be regenerated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the verb and resource, with the key non-mutation caveat at the end. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be described, and the description covers the plan's contents adequately. However, with two opaque required parameters and no usage routing, it leaves gaps for a tool sitting between audit_target and apply_hardening_plan in a multi-step workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Two required parameters (audit_id, target_id) have 0% schema description coverage, so the schema contributes nothing. The description mentions neither parameter nor their relationship, leaving their meaning and the requirement for a prior audit entirely to inference from the names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Build a sealed plan') and enumerates the plan's contents (diffs, supported actions, prerequisites, manual work). The closing clause 'Does not modify the target' implicitly separates it from apply_hardening_plan, though the sibling is never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it creates a plan, so an agent infers this precedes apply_hardening_plan. It never states when to prefer this over get_hardening_guide or that an audit must exist first, and names no alternative or prerequisite workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hardening_guideB
Read-only

Return the exact English subject and the ten-step confidentiality hardening guide.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful content-level detail (it returns a fixed ten-step guide plus a subject string), but omits any note on idempotency, static vs dynamic content, or rate considerations. With annotations carrying the safety burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. The only cost is that 'the exact English subject' is unexplained, which is a minor clarity issue rather than verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need no explanation, and there are no parameters to document. The description states what the tool yields, which is sufficient for a no-arg retrieval tool, though it never clarifies what the 'subject' is for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is no parameter meaning to document. The description correctly spends no words re-explaining an empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (Return) plus the resource (the ten-step confidentiality hardening guide), which is clearly distinct from action-oriented siblings like create_hardening_plan or apply_hardening_plan. The phrase 'the exact English subject' is cryptic on its own and slightly muddies otherwise clear intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use context or routing guidance is offered. With zero parameters the tool is likely always callable, but the description never says whether it should precede create_hardening_plan, be called standalone, or how it relates to get_report_context/render_report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_report_contextB
Read-only

Get the compact ten-step evidence bundle, report director and narrative schema. The server handles design and tables; draft the narrative once.

NameRequiredDescriptionDefault
audit_idYes
before_audit_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false). The description adds context about the division of labor—the server handles design and tables, so the agent should focus on drafting the narrative—but it does not disclose permissions, rate limits, or output size beyond 'compact.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler, and the main action is front-loaded. The second sentence provides a useful directive, though the term 'report director' is slightly opaque and could be clearer without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't explain return values, and annotations cover safety. However, the complete absence of parameter semantics leaves the agent without guidance on what audit_id and before_audit_id do, which is a notable gap for a tool whose primary job is fetching context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention either parameter. With two parameters and no schema descriptions, the description needed to compensate by explaining the purpose of audit_id and before_audit_id, but it adds no semantic meaning at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and specifies the resources returned: a compact ten-step evidence bundle, report director, and narrative schema. It distinguishes the tool's role from rendering by noting that the server handles design and tables, but it does not name any sibling tools explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by instructing to 'draft the narrative once' and noting the server handles design and tables, which gives context for when to call this tool. However, it does not state when to use this versus alternatives like render_report or compare_audits, nor does it provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_targetsA
Read-only

List operator-registered target IDs and capabilities. Does not connect to targets.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds the meaningful guarantee that it does not connect to targets (no live side effects), which is useful context beyond the annotations. It does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed immediately by the important behavioral caveat. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value structure need not be explained, and for a zero-parameter read tool the description covers purpose and side-effect behavior adequately. Only minor details (ordering, empty-result behavior) are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description briefly characterizes what is listed (target IDs and capabilities), which is the only semantic content possible for a no-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List operator-registered target IDs and capabilities') with a clear qualifier ('operator-registered') that scopes the result set. No sibling tool performs enumeration, so it is implicitly distinguished from audit_target, the hardening-plan tools, and the report tools without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'Does not connect to targets' hints that this is a cheap, offline enumeration step versus the live work done by audit_target or apply_hardening_plan. There is no explicit statement of when to call it or what alternative to prefer, so an agent must infer the workflow placement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_reportB

Fill the supplied professional template and export offline HTML, Markdown and JSON. Narrative is escaped commentary; observed tables cannot be overridden.

NameRequiredDescriptionDefault
audit_idYes
narrativeNo
before_audit_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is a non-read-only, non-destructive, closed-world operation. The description adds real behavioral context beyond that: narrative input is escaped and treated as commentary, and observed tables cannot be overridden. That tells the agent the tool's write scope is constrained, which is genuinely useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the action front-loaded and the constraint second. No filler, no repetition of the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, but for a mutating/exporting tool with three completely undocumented parameters and no usage context, the description is too thin. It should at minimum explain what audit_id and before_audit_id select.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, so the description must compensate and largely does not. It hints that 'narrative' is escaped commentary but says nothing about audit_id, before_audit_id, or the structure of the narrative object. The agent is left to infer required inputs from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (fill/export) and resource (report), plus the output formats (offline HTML, Markdown, JSON). It distinguishes itself reasonably from siblings like get_report_context, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites stated for the template, and no mention of alternatives among the eight sibling tools. An agent must infer that this is the final rendering step after auditing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_hardening_planA
Destructive

Restore the backed-up managed configuration for a successfully applied plan; rejects drift and collects after evidence.

NameRequiredDescriptionDefault
plan_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation profile is covered. The description adds genuinely new behavior: it rejects drift (a guard condition) and collects after-evidence, which the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the action first and the guard conditions after the semicolon. 'Collects after evidence' is slightly jargon-heavy but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a single-parameter destructive mutation, the description covers the precondition, the drift-rejection behavior, and the evidence collection, leaving only plan_id provenance unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One required parameter with 0% schema description coverage, so the schema does no work here. The description adds only indirect meaning for plan_id by requiring it reference a successfully applied plan; it does not document the id format or source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Restore) and resource (backed-up managed configuration) scoped to 'a successfully applied plan', which distinguishes it from apply_hardening_plan. It stops short of explicitly naming that sibling, so differentiation requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a successfully applied plan' is an implicit precondition, and 'rejects drift' hints at a failure condition, but the description never states when to roll back versus re-applying or auditing, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedapply_hardening_plan
    • First observedaudit_target
    • First observedcompare_audits
    • First observedcreate_hardening_plan
    • First observedget_hardening_guide
    • First observedget_report_context
    • First observedlist_targets
    • First observedrender_report
    • First observedrollback_hardening_plan

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Each tool maps to a distinct stage of the hardening workflow (guide, targets, audit, plan, apply, rollback, compare, report). The only mild overlap is between get_hardening_guide and get_report_context, both informational retrievals, but descriptions make their purposes clearly separable.

Naming Consistency5/5

All nine tools follow a consistent snake_case verb_noun pattern (get_, list_, audit_, create_, apply_, rollback_, compare_, render_). No mixed conventions or stylistic deviations.

Tool Count5/5

Nine tools are well-scoped for a focused Linux hardening and reporting workflow, with each tool earning its place at a distinct lifecycle stage. No redundant or trivially thin tools.

Completeness4/5

The surface covers a full lifecycle: guidance, target listing, audit, plan creation, apply, rollback, comparison, and reporting. The only apparent gap is a register/remove target operation, since targets are described as operator-registered out of band.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.
    4
    1
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs and AI agents to perform defensive security posture assessments, privilege escalation surface audits, and post-quantum cryptography readiness checks through read-only diagnostic tools.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables enterprise MCP security auditing through 12 deterministic no-LLM tools for evidence-gated claims, skill/prompt supply-chain audits, token profiling, and server auth-mode checks.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables read-only inspection of local Windows and Linux systems for host, resource, network, service, software, identity, startup, certificate, SSH key metadata, and environment-variable name evidence through MCP tools. It normalizes platform outputs into stable schemas while avoiding arbitrary shell execution, credential reads, secret values, or remediation.
    23
    MIT