Skip to main content
Glama
privacyscrubber-mcp

privacyscrubber-mcp

stream_reveal_text

Read-only

Detokenize LLM SSE and stdio stream chunks in real time, buffering split token candidates across boundaries to prevent corrupted characters or tokens; use flush on the final chunk.

Instructions

STEP 3 (Streaming): Real-time streaming token detokenizer for LLM Server-Sent Events (SSE) and stdio chunk pipelines. Buffers split token candidates across chunk boundaries (e.g. '[EM' + 'AIL_1]') so no characters or tokens are corrupted. Pass 'flush: true' on the final chunk.

Input Schema

NameRequiredDescriptionDefault
chunkYesThe incoming text chunk from the LLM stream or stdout.
flushNoOptional. Set to true on the final chunk or at EOF to flush remaining buffer. Defaults to false.
resetNoOptional. Set to true to reset internal streaming buffer for this session. Defaults to false.
session_idNoOptional session ID matching the sanitize_text call for multi-agent isolation. Defaults to 'default'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.3

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false and idempotentHint=false, so the safety and statefulness profile is covered structurally. The description usefully adds that internal buffering persists across calls (with the '[EM' + 'AIL_1]' example) and that a final flush is required to avoid truncated output — genuinely non-obvious behavior. However it never mentions the reset or session_id mechanics that govern buffer lifecycle, so the added context is partial.

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?

Three front-loaded sentences with an inline example that earns its place by making the split-token hazard concrete. Minor cost: the 'STEP 3' label references a pipeline sequence the reader has no context for, and 'so no characters or tokens are corrupted' is slightly redundant with the preceding buffering statement.

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?

For a 4-parameter, well-documented tool with annotations covering safety, the description covers purpose, streaming mechanics and the flush requirement. The main remaining gap is that no output schema exists and the description never indicates what a call returns — presumably the detokenized fragment plus any held-back partial token — which matters for an agent consuming stream output.

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?

Schema description coverage is 100%, including explicit docs for chunk, flush, reset and session_id, so the schema already carries parameter meaning. The description only restates the flush rule that the schema documents and says nothing about reset or session_id, adding no meaning beyond the structured fields — the baseline of 3 applies.

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?

Names a specific verb and resource: a 'real-time streaming token detokenizer' for SSE and stdio chunk pipelines, and explains the core mechanic (buffering split token candidates across chunk boundaries). The 'STEP 3 (Streaming)' prefix plus the streaming qualifier implicitly separates it from the non-streaming reveal_text sibling, but it never states that comparison outright, so it stops short of a 5.

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 usage context (LLM SSE streams and stdio chunk pipelines) and an actionable operating rule: 'Pass flush: true on the final chunk.' It does not state when NOT to use it — e.g. that a single complete string should go to reveal_text instead of being fed through the buffer — so an agent must infer the exclusion.

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