Skip to main content
Glama
VrtxOmega

omega-stenographer-mcp

by VrtxOmega

Omega Stenographer MCP

Stenographer preserves conversation turns, extracts decisions and blockers, and builds searchable briefs without deleting the original exchanges.

Version 2.0 requires explicit session scope. Use the same session_id across ingest, brief, compaction, milestone and history calls. A global history search requires cross_session=true. Marking a milestone changes priority; it does not establish that a statement is true.

Install with python -m pip install .. Run omega-stenographer-mcp for explicit MCP ingestion, or python codex_capture.py to run the server with automatic visible-message capture from local Codex transcript files. The compatibility standalone entry point uses the same maintained implementation. No model API key is required for extraction or search.

Data defaults to ~/.omega-stenographer. OMEGA_CODEX_SESSIONS overrides the transcript directory; otherwise capture uses $CODEX_HOME/sessions or ~/.codex/sessions. The initial cutoff defaults to September 7, 2026 and can be set with OMEGA_CAPTURE_SINCE=YYYY-MM-DD. Older files are indexed at their current end, and new appended messages are subsequently captured. One OS lock permits a single observer across multiple MCP processes.

The observer excludes tool results, reasoning and configuration messages; persists source receipts and SQLite file offsets; retries partial lines; and delivers committed exchanges to Omega Brain through a durable local event bus. The two projects carry the same versioned runtime module so Stenographer also installs independently.

stenographer_capture_status reports progress and delivery errors. Start a helper with StenographerClient(session_id="example-task") and use ingest, get_brief, compact_guard, search or mark_milestone within that scope.

See current operating contract for migration, task isolation and backups. Older examples need explicit session IDs. Run python -m unittest discover -s tests -p "test_contracts.py" for standalone contract tests. SSWP software evidence uses the same task IDs and event bus.

Available Tools

6 tools
stenographer_capture_statusB

Report automatic capture progress and delivery errors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'Report' implies a read-only status operation, but the description does not explicitly say whether it has side effects, how fresh the status is, or how delivery errors are represented. It adds basic behavioral context but leaves safety and data-source details implicit.

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?

The description is a single terse sentence with no filler. It front-loads the action ('Report') and immediately specifies what is reported, which is ideal for agent scanning.

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?

For a simple no-parameter tool, the description is minimally adequate: it names the output focus (progress and delivery errors). However, with no annotations and no output schema, it does not explain what the returned status looks like, what 'automatic capture' refers to, or when to prefer this over siblings, leaving notable gaps for an agent.

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 has zero parameters and schema description coverage is 100% vacuously, so there are no parameter semantics for the description to explain. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for missing parameter documentation.

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 specific action ('Report') and a clear resource ('automatic capture progress and delivery errors'), so an agent can tell this is a status/health tool. It is distinguishable from siblings like stenographer_query_history and stenographer_ingest_exchange by its focus on current capture status, though it does not explicitly name or contrast those alternatives.

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 guidance is given about when to use this tool versus the sibling tools. The description does not state whether this should be called for current status only, whether it should precede other operations, or when an alternative like query_history would be more appropriate.

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

stenographer_compact_guardC

Get compressed briefing + task-scoped relevant fragments. Call when context window pressure hits.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
session_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description only implies a read-only operation through 'Get'. It does not disclose whether context is modified, compressed, or discarded, nor any side effects.

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?

The description is extremely concise, with two short sentences that deliver the core purpose and usage trigger without unnecessary verbosity.

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?

The description gives a basic idea of the output ('compressed briefing + task-scoped relevant fragments') but lacks parameter details, return format, side effects, and relationship to sibling tools, leaving important context missing.

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?

The query parameter is not described at all, and session_id is only implied by the schema. With 0% schema description coverage, the agent cannot infer parameter meaning from the description 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?

The description clearly states the action ('Get') and resource ('compressed briefing + task-scoped relevant fragments'), and the trigger condition differentiates it from ordinary retrieval. However, 'task-scoped relevant fragments' is somewhat vague.

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?

It provides an explicit trigger ('Call when context window pressure hits'), which is useful, but does not mention alternatives like get_brief or when not to use this tool.

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

stenographer_get_briefC

Get the live running notes document.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing side effects. The verb 'Get' implies a read-only operation, but the description does not explicitly state that there are no side effects, nor does it mention any potential consequences or required permissions. This partial transparency is insufficient.

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?

The description is a single, concise sentence with no redundant words or extraneous information. It efficiently conveys the core purpose without verbose elaboration.

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?

The description is minimal and lacks essential context. It does not explain what 'live running notes' means, what the output format or content will be, or any special considerations (e.g., whether the session must be active). Since there is no output schema, the description should have provided more detail about the return value, but it does not.

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?

The only parameter, session_id, is defined in the schema with type and minLength, providing basic expectations. The description adds no additional meaning or context about how the parameter is used (e.g., whether it refers to a session ID, a document ID, or something else), so it does not enhance the 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 clearly states the action ('Get') and the object ('live running notes document'), indicating the tool retrieves a brief for a session. However, 'live running notes' is somewhat ambiguous and does not explicitly distinguish from sibling tools like query_history, though the name and parameter imply session-specific retrieval.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or comparisons to sibling tools such as stenographer_query_history or stenographer_capture_status, leaving the agent to infer the appropriate use case.

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

stenographer_ingest_exchangeA

Ingest a conversation turn. Call after every significant user or assistant message. Automatically: extracts decisions/blockers via regex, runs NAFE failure-signature scan (heuristic flags do not establish truth), checks for cross-system CLAEG TERMINAL_SHUTDOWN events, and compresses every STENO_TURN_LIMIT turns into session-scoped tiered briefs. Pass trace_id from omega_preload_context to enable cross-system correlation across Omega Brain, SSWP, and Stenographer.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
contentYes
trace_idNoVERITAS trace ID (VT-YYYYMMDD-xxxxxxxx) from omega_preload_context for cross-system correlation.
session_idYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses significant automatic behavior: regex extraction, NAFE scan, CLAEG TERMINAL_SHUTDOWN checks, and periodic compression into briefs. It also cautions that heuristic flags do not establish truth. Side effects are partially described but not exhaustively.

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 dense but not wordy; it packs a lot of behavior into a single sentence. Jargon like NAFE, CLAEG, and STENO_TURN_LIMIT is unexplained, but the structure is efficient and free of filler.

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?

It explains when to call and what automatic processes occur, but it does not describe what the tool returns or the outcome of the compression, and key constants are undefined. With no output schema, this leaves some gaps for an agent.

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 coverage is low (only trace_id has a description). The description adds useful context for trace_id ('from omega_preload_context to enable cross-system correlation'), but role, content, and session_id rely on their obvious names and types. It partially compensates but does not fully cover the 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?

The description clearly states the tool ingests a conversation turn and provides the trigger ('after every significant user or assistant message'). It is distinguishable from sibling tools like query_history and get_brief by the ingest action, though it does not explicitly name alternatives.

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?

It gives a clear call condition ('after every significant user or assistant message') but does not explicitly state when not to use it or compare it with sibling tools. The usage context is implied rather than fully specified.

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

stenographer_mark_milestoneC

Flag a critical decision for priority priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
session_idYes
exchange_idYes

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a mutation or state change ('Flag'), but gives no detail about persistence, side effects, return values, or required context such as a valid session.

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

Conciseness2/5

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

The description is short but not well-formed; the repeated 'priority priority' and unclear wording make it under-specified rather than effectively concise. It is not front-loaded with useful, accurate information.

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

Completeness1/5

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

With three required parameters, no annotations, and no output schema, the description is far too thin. An agent cannot determine correct usage, parameter semantics, side effects, or what constitutes a successful call.

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 exchange_id, label, or session_id. It fails to explain what these parameters mean, how they relate to the milestone, or what values are valid.

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

Purpose3/5

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

The description uses a specific verb ('Flag') and a resource ('a critical decision'), which gives a rough idea of the operation. However, the phrase 'for priority priority' is garbled and the description never clearly says it marks a milestone, so the purpose remains vague and does not differentiate it from sibling tools.

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?

The description provides no guidance on when to use this tool versus alternatives like stenographer_query_history or stenographer_ingest_exchange. There are no usage conditions, prerequisites, or exclusions.

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

stenographer_query_historyB

FTS5 keyword search over all ingested exchanges.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
session_idNo
cross_sessionNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool performs an FTS5 keyword search over all ingested exchanges, which is useful, but it does not state whether the operation is read-only, how results are ordered or paginated, or how session_id and cross_session affect the search scope.

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 single-sentence description is concise and front-loaded with the main verb and resource. It is not bloated, but it is so terse that it omits important operational details; the structure itself provides no additional guidance.

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?

Given four parameters, no annotations, and no output schema, the description is not complete enough for an agent to call the tool confidently. It lacks expected return format, pagination or limit behavior, session scoping semantics, and any indication of whether results are per-session or cross-session by default.

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 schema has no descriptions for any of the four parameters, and the description does not compensate. It only implies that 'query' is a keyword search string; limit, session_id, and cross_session are left unexplained, so an agent cannot infer their intended values beyond the bare types and defaults in the schema.

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?

The description uses a specific verb ('search') and identifies the resource ('all ingested exchanges'), and it names the mechanism ('FTS5 keyword'). This clearly differentiates it from sibling tools like stenographer_capture_status or stenographer_ingest_exchange, which have obviously different purposes.

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 use case is implied: an agent can infer this tool is for keyword searching ingested exchange data. However, the description provides no explicit when-to-use or when-not-to-use guidance, no mention of alternatives, and no clarification on when session scoping should be applied versus cross-session search.

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. 6 tool updatesv2.0.0
    • Addedstenographer_capture_status
    • Changedstenographer_compact_guard2 fields changed
      • addedInput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "session_id"
        +]
    • Changedstenographer_get_brief2 fields changed
      • addedInput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "session_id"
        +]
    • Changedstenographer_ingest_exchange3 fields changed
      • addedInput schema / properties / session_id / minLength
        Added value: +1
      • addedInput schema / properties / trace_id
        Added value: +{
        +  "description": "VERITAS trace ID (VT-YYYYMMDD-xxxxxxxx) from omega_preload_context for cross-system correlation.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "role",
        -  "content"
        -]New value: +[
        +  "role",
        +  "content",
        +  "session_id"
        +]
    • Changedstenographer_mark_milestone2 fields changed
      • addedInput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "exchange_id",
        -  "label"
        -]New value: +[
        +  "exchange_id",
        +  "label",
        +  "session_id"
        +]
    • Changedstenographer_query_history2 fields changed
      • addedInput schema / properties / cross_session
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
  2. 5 tool updates
    • First observedstenographer_compact_guard
    • First observedstenographer_get_brief
    • First observedstenographer_ingest_exchange
    • First observedstenographer_mark_milestone
    • First observedstenographer_query_history

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a distinct, non-overlapping purpose: querying history, checking status, ingesting exchanges, retrieving briefs, managing compaction, and marking milestones. No ambiguity in tool selection.

Naming Consistency5/5

All tools share the consistent 'stenographer_' prefix and follow a clear verb_noun pattern (e.g., query_history, capture_status, ingest_exchange), making naming predictable and uniform.

Tool Count5/5

With 6 tools, the set is well-scoped for a stenographer/note-taking domain, covering essential operations without being overly numerous or sparse.

Completeness5/5

The tool set covers the full lifecycle: ingestion, querying, status monitoring, brief retrieval, compaction, and milestone marking. No obvious missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Persistent memory and handoff intelligence layer for MCP agents. Most memory servers retrieve text — Memory Nexus compounds operational context, learning from usage and progressively synthesizing observations into higher-order intelligence across sessions and tools.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    AI agent provenance, trust, and auditability layer. VERITAS multi-gate scoring, Cortex approval gates, S.E.A.L. hash-chain audit ledger, and semantic RAG with cryptographic provenance tracking for every decision an agent makes.
    27
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    SSWP MCP — Deterministic software attestation for AI-augmented development. Witness any repo through a 5-gate pipeline, adversarially probe dependencies, and produce self-verifying .sswp.json attestations. Fleet registry across 131 nodes with tamper-proof audit ledger and FTS5 search. Agent-native — one tool call from Hermes, Claude, or Cline.
    8
    3
    MIT