Skip to main content
Glama

load_config

Destructive

Replace Caddy's full running config with snapshot-based rollback, preview via dry-run, and reject admin API changes that break undo.

Instructions

[WRITE][risk=high] Replace caddy's FULL running config; reversible — the prior config is snapshotted first and the undo re-loads it.

Pass dry_run=True to preview.

Refuses a config that disables the admin API or moves admin.listen off the configured base_url — the undo re-POSTs the snapshot over that same API. Send the admin block unchanged, or omit it. The refusal applies under dry_run too, which must report it rather than preview a refused call.

Args: config: The full config tree to load (a JSON object). dry_run: If True, preview without loading. target: Proxy target name from config; omit for the default.

Input Schema

NameRequiredDescriptionDefault
configYes
targetNo
dry_runNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say non-readonly/non-idempotent/destructive; the description goes well beyond that, disclosing that the prior config is snapshotted so the call is reversible via undo, the exact refusal conditions, and that the refusal also applies under dry_run (which must report rather than preview). For a destructive write that is precisely the extra context an agent needs.

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?

Front-loaded with [WRITE][risk=high] severity tag, then reversibility, then caveats, then an Args block. Mostly tight, though the dry_run/refusal interplay is restated twice and could be tightened; no sentence is pure filler.

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?

No output schema exists, and the description still covers replacement semantics, reversibility, refusal handling, and parameter roles, so an agent can call it safely. The one gap is that the nested structure of the config tree is not characterized at all, which matters given the nested-object schema.

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?

Schema description coverage is 0%, so the description carries the burden and does: config is the full config tree as a JSON object, dry_run previews without loading, target is a proxy target name that defaults when omitted. It does not describe the shape of the nested config tree, but it correctly disambiguates all three parameters.

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

Purpose5/5

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

Opens with a specific verb+resource+scope: 'Replace caddy's FULL running config'. The 'FULL' qualifier and the sibling set (set_config_value, set_config_value, delete_config_path) make it clear this is a wholesale replacement rather than a path-level edit.

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

Usage Guidelines4/5

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

Gives clear trigger conditions ('Pass dry_run=True to preview') and a hard guardrail explaining that configs disabling the admin API or moving admin.listen are refused. It does not name a sibling alternative (e.g. set_config_value for partial edits), so it stops short of explicit routing, but the context is otherwise unambiguous.

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