Skip to main content
Glama

Maintain Storage

maintain_storage
DestructiveIdempotent

Compress old chats, find or delete duplicate conversations, update storage settings, and report capabilities for Chronicle MCP archives.

Instructions

Housekeeping for the archive: compress old chats, find or remove duplicates, change settings, or report server capabilities. Use it for storage and configuration only, not for reading or searching chats. op_type 'compress': gzips chats older than days_old (default from settings, 30) in place and returns {compressed, skipped_recent, days_threshold}; compressed chats stay readable and searchable. 'deduplicate': finds chats with identical content; with dry_run=true (default) it only lists them, with dry_run=false it permanently deletes the duplicates, returning {dry_run, duplicates, unique_count}. 'configure': updates settings (see 'settings') and returns which keys changed. 'capabilities': read-only summary of tools, prompts, version and client paths. Destructive only for deduplicate with dry_run=false; ask the user before doing that.

Input Schema

NameRequiredDescriptionDefault
clientNoArchive namespace (a subfolder of the chats directory). Built-in: 'default', 'cursor', 'chatgpt', 'claude'; any other name creates its own subfolder. Omit to use 'default'.default
dry_runNoFor 'deduplicate': true lists duplicates only; false deletes them permanently.
op_typeYesMaintenance operation (see the tool description).
days_oldNoFor 'compress': minimum age in days; omit to use compression_days_threshold (30 by default).
settingsNoFor 'configure' only. Allowed keys: auto_save_message_threshold (int, messages before manage_session_state save persists), compression_days_threshold (int), summary_pruning_days_threshold (int), client_paths (object: client name to a relative folder), transcripts_dirs (object: client name to a folder), cursor_transcripts_dir (string). Unknown keys are ignored.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.6.2
    • addedInput schema / properties / client / description
      Added value: +"Archive namespace (a subfolder of the chats directory). Built-in: 'default', 'cursor', 'chatgpt', 'claude'; any other name creates its own subfolder. Omit to use 'default'."
    • changedInput schema / properties / days_old / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / days_old / description
      Added value: +"For 'compress': minimum age in days; omit to use compression_days_threshold (30 by default)."
    • addedInput schema / properties / dry_run / description
      Added value: +"For 'deduplicate': true lists duplicates only; false deletes them permanently."
    • addedInput schema / properties / op_type / description
      Added value: +"Maintenance operation (see the tool description)."
    • addedInput schema / properties / op_type / enum
      Added value: +[
      +  "compress",
      +  "deduplicate",
      +  "configure",
      +  "capabilities"
      +]
    • addedInput schema / properties / settings / description
      Added value: +"For 'configure' only. Allowed keys: auto_save_message_threshold (int, messages before manage_session_state save persists), compression_days_threshold (int), summary_pruning_days_threshold (int), client_paths (object: client name to a relative folder), transcripts_dirs (object: client name to a folder), cursor_transcripts_dir (string). Unknown keys are ignored."
  2. First observedv1.5.4

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing that compress is in-place and leaves chats readable/searchable, that deduplicate defaults to dry_run=true but permanently deletes when false, and that capabilities is read-only. The explicit "ask the user before" guidance adds a safety signal the destructiveHint annotation cannot express. Minor gap: no mention of cost, scale, or failure behavior for large archives.

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 a one-line purpose and scope, then organized per op_type with quoted labels, which makes it scannable. It is dense as a single paragraph and returns shapes could be trimmed since an output schema exists, but essentially no sentence is wasted.

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

Completeness5/5

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

For a five-parameter, multi-mode mutation tool, the description covers every mode, its defaults, its destructive potential, and its scoping against siblings. Since an output schema exists, it does not need to restate return values, and nothing an agent needs to invoke it safely is missing.

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 coverage is 100%, so the baseline is 3, but the description adds real semantics: which parameters apply to which op_type (days_old to compress, dry_run to deduplicate, settings to configure) and that days_old falls back to a configured threshold. It stops short of adding detail not already in the schema descriptions.

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 framing ("Housekeeping for the archive") and enumerates the four concrete operations (compress, deduplicate, configure, capabilities). It also explicitly scopes itself against siblings with "not for reading or searching chats," so an agent can separate it from search_history and get_chat_logs without reading either schema.

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

Usage Guidelines5/5

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

States the when (storage and configuration tasks) and the when-not (reading or searching chats), and adds a prerequisite-style instruction: "Destructive only for deduplicate with dry_run=false; ask the user before doing that." The per-op sentences further disambiguate which op_type to pick for which intent.

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