Skip to main content
Glama

Bundle

redctx_bundle
Read-onlyIdempotent

Load a folder or glob selection as redacted context in one call, concatenating multiple text files with markers and truncation limits.

Instructions

Concatenate several redacted text files into one response, each wrapped in --- BEGIN @p_<id> <redacted path> --- and --- END @p_<id> ---. Use it to load a folder or a glob selection as context in one call; use redctx_read for a single file or a line range, since bundles carry no line numbers. Each file is cut at max_chars_per_file with [TRUNCATED], and when max_files or max_total_chars is reached before the last file the bundle ends with [TRUNCATED: file or total character limit reached]. A file in scope over the server's per-file byte limit (5 MB by default), or a scope over its total byte limit (50 MB by default), fails the call.

Input Schema

NameRequiredDescriptionDefault
globNoShell-style patterns matched against each file's root-relative path, for example `*.md` or `notes/*.txt`; a file is kept if it matches any pattern. `*` also matches `/`, so `*.md` matches at every depth. Default `[]` means no filter. Applied within `paths`.
pathsNoFiles or directories to include: root-relative paths or `@p_<id>` references from earlier output. Directories are walked recursively, skipping excluded, protected, symlinked and binary files. Default `[]` means the whole root. With `glob`, only files under these paths that also match a glob are used.
max_filesNoMaximum files to include. Default 80.
max_total_charsNoNo further file is started once this many file characters have been emitted, so the total can exceed it by up to one file. Default 300000.
max_chars_per_fileNoMaximum redacted characters kept per file; longer files end with `[TRUNCATED]`. Default 30000.

Output Schema

NameRequiredDescriptionDefault
textYesThe tool output, identical to the text content block and already redacted: sensitive values appear as deterministic `[CATEGORY_<hex>]` placeholders (forms declared as aliases of one entity share its hex and add a form suffix, `[CATEGORY_<hex>.<form>]`) and files as `@p_<id>` references. When the result has `isError: true`, this is a fixed error message instead, such as a limit error or the notice that context access is blocked until the operator repairs the local redaction config.
receiptYesRedaction statistics for this call only; never contains original values.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv0.10.0
    • addedInput schema / properties / glob / description
      Added value: +"Shell-style patterns matched against each file's root-relative path, for example `*.md` or `notes/*.txt`; a file is kept if it matches any pattern. `*` also matches `/`, so `*.md` matches at every depth. Default `[]` means no filter. Applied within `paths`."
    • addedInput schema / properties / max_chars_per_file / description
      Added value: +"Maximum redacted characters kept per file; longer files end with `[TRUNCATED]`. Default 30000."
    • addedInput schema / properties / max_files / description
      Added value: +"Maximum files to include. Default 80."
    • addedInput schema / properties / max_total_chars / description
      Added value: +"No further file is started once this many file characters have been emitted, so the total can exceed it by up to one file. Default 300000."
    • addedInput schema / properties / paths / description
      Added value: +"Files or directories to include: root-relative paths or `@p_<id>` references from earlier output. Directories are walked recursively, skipping excluded, protected, symlinked and binary files. Default `[]` means the whole root. With `glob`, only files under these paths that also match a glob are used."
    • addedOutput schema / description
      Added value: +"Structured copy of every tool result: the output text plus a receipt of what redaction did."
    • addedOutput schema / properties / receipt / description
      Added value: +"Redaction statistics for this call only; never contains original values."
    • addedOutput schema / properties / receipt / properties / counts_by_category / description
      Added value: +"Placeholders substituted while producing this result (content and paths), keyed by category such as `PERSON`, `EMAIL` or `SECRET`; categories with none are omitted."
    • addedOutput schema / properties / receipt / properties / detector_profile / description
      Added value: +"Active built-in detector profile: `default`, or `extended`, which adds more identifier types and prompt-injection markers."
    • addedOutput schema / properties / receipt / properties / detectors
      Added value: +{
      +  "description": "Present only when the server runs additional local detectors: one entry per detector, in load order.",
      +  "items": {
      +    "properties": {
      +      "name": {
      +        "description": "Detector name.",
      +        "type": "string"
      +      },
      +      "nominated": {
      +        "description": "Distinct values this detector nominated during the call; every occurrence of each is redacted.",
      +        "type": "integer"
      +      },
      +      "positional": {
      +        "description": "Nominated spans redacted only at their own position, because they were too long or exceeded the per-text value budget.",
      +        "type": "integer"
      +      },
      +      "version": {
      +        "description": "Detector version string.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "version",
      +      "nominated",
      +      "positional"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / text / description
      Added value: +"The tool output, identical to the text content block and already redacted: sensitive values appear as deterministic `[CATEGORY_<hex>]` placeholders (forms declared as aliases of one entity share its hex and add a form suffix, `[CATEGORY_<hex>.<form>]`) and files as `@p_<id>` references. When the result has `isError: true`, this is a fixed error message instead, such as a limit error or the notice that context access is blocked until the operator repairs the local redaction config."
  2. First observedv0.4.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description goes beyond by disclosing truncation markers, the max_chars_per_file/max_files/max_total_chars cutoffs, and hard failure thresholds (5 MB per file, 50 MB per scope). It does not say what the exact failure error looks like, but the behavioral profile is unusually complete.

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 the primary action, then usage routing, then truncation and failure semantics in a logical order with no filler. It is dense and runs long, but each sentence carries distinct information.

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?

Output schema exists so return values need no elaboration, yet the description still documents the bundle's textual framing and truncation markers. With annotations, full schema coverage, and 0 required params, an agent has everything needed to invoke it correctly.

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; the description earns above that by explaining the consequences of the limits (per-file cut with [TRUNCATED], bundle terminated with a limit marker, total can exceed max_total_chars by up to one file), which the schema alone does not convey.

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 ('Concatenate several redacted text files into one response') and immediately shows the output framing with the BEGIN/END delimiters. It explicitly distinguishes itself from the sibling redctx_read by scope (whole folder/glob vs. one file or line range).

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 selecting condition directly: use it to load a folder or a glob selection as context in one call, and names redctx_read for the single-file/line-range case, with the reason (bundles carry no line numbers). Nothing is left to inference.

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