Skip to main content
Glama

OSIRIS

PyPI npm Python License

Cache-aware context engine & state governor for AI agents. Standard MCP server, local-first, independent of any model provider.

OSIRIS makes AI agents cheaper, faster, and more reliable: fewer tokens, fewer loops, zero unnecessary tools, and zero loss of context.

OSIRIS does not replace your other MCP servers (filesystem, Git, GitHub, shell, browser…). It coexists alongside them and drastically cuts what they cost in prompt context.


1. The Core Architectural Constraint

An MCP server never sees the final prompt assembled by the client host. It only sees what the agent sends to it. Therefore, OSIRIS cannot:

What we would want

What a standard MCP server can actually do

Write directly into the prompt

Produce canonical state and have the agent carry it

Erase past conversation turns

Decide what to externalize for future turns

Hide another MCP server's tools

Recommend via Tool Compass

Hard-cap prompt tokens

Block an action (invariants, budget enforcement)

The promise is honest: OSIRIS provides stable state and an enforceable safety contract, not a client prompt builder.


Related MCP server: knitbrain

2. Sealed Manifest — The Core Design

osiris.plan returns a deterministic block (~120 tokens) that the agent carries at a fixed position in its context window:

OSIRIS/1 task=7c3f obj="fix PowerShell profile bug" plan=3/7
inv=4 files=6 refs=9 dec=2 budget=ok
SEAL=sha256:3f9a1c…c21b

The SEAL is a SHA256 digest of stable zones. The agent passes it on every turn to osiris.observe: OSIRIS recomputes and detects any state drift immediately.

This is OSIRIS's passive transport: even if the agent stops calling tools, it carries the essential state cleanly.

Three Hashes Because Prompt Cache is Prefix-Based

head_hash   = sha256(system_head ‖ rules)                       immutable
zoneB_hash  = sha256(objective ‖ global_plan ‖ tool_contract)   quasi-stable
tail_hash   = sha256(constraints ‖ pinned_decisions)           append-only
prefix_hash = sha256(head_hash ‖ zoneB_hash)                   ← cached prefix
zoneA_hash  = sha256(head_hash ‖ tail_hash)                    ← full ZONE A

Change

Verdict

Cache Cost

head_hash

CRITICAL DRIFT

Full re-prefill

zoneB_hash

Minor drift

Re-prefill delta only

tail_hash (append)

Normal growth

Re-prefill delta only

Pinned item rewritten

CRITICAL DRIFT (semantic)

Cache intact, task state corrupted

Appending a constraint or decision changes tail_hash but not prefix_hash: the prompt cache holds, only the new tokens are prefilled.

Rewriting a pinned decision is explicitly caught: OSIRIS checks collection identity, flagging a semantic break (semantic_break: true, cause: pinned_rewrite).


3. The 6 MCP Tools

Access footprint: 1,019 tokens of schemas and descriptions in model context (measured via bench/run_bench.py). Paid on task start, amortized across the session — pays off on the very first turn with ≥800 token payloads.

Tool

Role

Typical Response

osiris.plan

Start / update / resume / status of a task; produces sealed manifest

~160 tok

osiris.precheck

Authorize or deny an action (invariants, budget, deduplication)

~70 tok

osiris.observe

Log actions, loop detection, offload large data, update memory

~50 tok

osiris.recall

Rehydrate refs (server-side filtered: grep, range, outline)

variable

osiris.checkpoint

Snapshot, resume, completion report, reversible compaction

~80 tok

osiris.handoff

Executable delegation contracts and structured results

~200 tok

osiris.observe combines logging, loop protection, payload externalization, memory registry, and automated pruning in a single call so the agent always reports back seamlessly.

Extended Operations

Call

Behavior

osiris.observe(kind="dropped", result=<ref>)

Drop receipt: agent confirms payload was evicted from prompt → token savings are proven and credited

osiris.observe(kind="head"|"contract", result=…)

Records system prompt head / client contract and detects cache-busting volatile tokens (timestamps, UUIDs)

osiris.recall(op="grep"|"range"|"head"|"tail"|"outline"|"aggregate"|"jsonl")

Server-side filtering: only requested matches enter the context window

osiris.plan(mode="status")

Context pressure breakdown (measured vs declared vs unknown)

osiris.checkpoint(mode="compact"|"trim"|"clear")

Reversible session compaction preparation

osiris.precheck → suggest_alternative

Active collision resolution for duplicate operations

Resources & Prompts

  • osiris://task/{task_id}/manifest — Active zones, drift status, objective

  • osiris://task/{task_id}/status — Real-time context pressure

  • osiris://ref/{ref} — Raw byte content of any referenced payload

  • Prompt osiris/task-resume — Clean agent recovery template after crashes


4. Architecture

┌──────────────────────────────────────────────────────────────┐
│  Agent (Claude Code, Cursor, MiniMax Code, Codex, Cline…)   │
│  Context: system │ tools │ OSIRIS MANIFEST │ history         │
└───────────────────────────┬──────────────────────────────────┘
                            │  MCP stdio — 6 tools, ~1,019 tok schema
                            ▼
┌──────────────────────────────────────────────────────────────┐
│  osiris-mcp  (server.py)                                     │
│  plan · precheck · observe · recall · checkpoint · handoff   │
└───────────────────────────┬──────────────────────────────────┘
                            │
┌───────────────────────────▼──────────────────────────────────┐
│  core/                                                        │
│   task_state  Typed TaskState (objective, plan, decisions)    │
│   memory     Typed memory registry by kind and scope         │
│   refs       Content-addressed store (verified on read)      │
│   prefix     Zones, 3-hash system, drift, PrefillPlan        │
│   prune      Reversible externalization, 4 modes             │
│   query      Server-side payload filtering (grep, range...)  │
│   compaction trim / compact / clear (lossless)               │
│   pressure   Context pressure metrics & tracking             │
│   loopguard  Fingerprinting, 5 loop patterns detection       │
│   invariants TOML rule engine (guard rails)                  │
│   compass    Tool Compass (dynamic relevance scoring)        │
│   handoff    Executable agent delegation contracts           │
│   events     Append-only event journal + checkpoints         │
│   ledger     Tokens / cost / savings / OSIRIS overhead       │
│   fileops    Sandboxed file inspection (roots, size limits)  │
│   redact     Secret scrubbing before any hashing             │
│   policy     Budget policies & token enforcement             │
└───────────────────────────┬──────────────────────────────────┘
                            ▼
        ~/.osiris/osiris.db  +  ~/.osiris/reports/

5. Memory Model

Deterministic, typed, content-addressable memory — not an opaque vector database.

TaskState
├── objective      immutable
├── constraints[]  append-only
├── decisions[]    append-only, pinned verbatim
├── plan           completed / active / remaining steps
├── files{}        path, SHA-256 hash, mtime, last access, ref
├── tool_results{} cache_key, ref, size, token cost, TTL
├── failures{}     error signature, tool, args hash, attempts, lesson
├── lessons[]      general behavioral rules learned
├── handoffs{}     cross-agent delegation contracts
└── budget         estimated vs consumed tokens and cost

Scopes: task → project → agent → global.


6. Cache-Aware Pruning

Security Invariant: Pruning moves payload data to content-addressed refs (mem://sha256:…). It NEVER deletes.

ZONE_A_pruning_cost = pruned_tokens
ZONE_C_or_D_pruning_cost = 0                      ← always zero cost
net_savings = pruned_tokens − (prefix_tokens × P(cache_dead) × prefix_pruned)

Mode

Trigger

Evicts

Cache Impact

Use Case

cache_ttl (default)

Δt > TTL

C/D, and A/B only if cache expired

Neutral

Recommended default

conservative

Very high threshold

Working zone (C/D) only

Zero

High-cost API models

balanced

Moderate threshold

C/D + cold historical turns

Zero

Standard agent workflows

aggressive

Low threshold

Everything rehydratable

Minor prefill risk

Fast local LLMs


7. LoopGuard Protection

fingerprint = sha256(tool ‖ canonical_args ‖ result_signature)

Detection

Trigger Signal

Verdict

Exact duplicate

Identical fingerprint

suggest_alternative

Repeated failure

Same error signature (≥3 times)

block + required_action

Loop pattern

Same error across varying args

warn

Oscillation

Alternating A/B/A/B pattern

warn

Runaway

N calls with zero state progress

warn / block


8. Invariants (Guard Rails)

Define project safety rules in .osiris/invariants.toml:

[[invariant]]
id = "tests-before-commit"
when = { tool = "git.commit" }
require = { state = "tests_passed" }
message = "Cannot commit while tests are failing"

[[invariant]]
id = "no-test-edit"
when = { path_glob = "tests/**" }
verdict = "block"
message = "Modifying test suites requires explicit approval"

9. Lossless Verification & Non-Loss Proof

OSIRIS guarantees full auditability for offloaded data:

  1. Self-verifying refs: mem://sha256:<hash>. Reads re-verify data integrity against the hash before returning.

  2. Zero deletion paths: data is relocated to the local store, never pruned permanently.

  3. Reproducible audit:

    python -m osiris audit --task <task_id>

    Outputs cryptographic proof of non-loss:

    {"lossless": true, "items_externalized": 14, "items_verified": 14, "items_missing": 0, "integrity_violations": []}

10. Verified Benchmarks

Real measurements from python bench\run_bench.py running an automated coding workflow:

Payload Size

Baseline Context

Fixed OSIRIS

Adaptive OSIRIS

Net Improvement

OSIRIS Mode

Overhead

200 tok

1,583

2,687

1,651

−4.30%

bystander

34 tok

800 tok

3,851

3,755

3,261

+15.32%

light

1,810 tok

2,000 tok

9,015

5,229

5,233

+41.95%

standard

2,492 tok

5,000 tok

20,979

8,171

8,168

+61.07%

standard

2,439 tok

20,000 tok

82,135

23,427

23,440

+71.46%

full

2,422 tok

  • Access Cost: 1,019 tokens of schemas, amortized across session tasks.

  • Session Net Gate: PASS (Worst-case net across full suite: +951 tokens).

  • At 20,000 tokens: +71.46% net savings on context usage.


11. Quick Start

cd D:\MCP-Osiris
uv venv --python 3.12 .venv
uv pip install --python .venv\Scripts\python.exe -e ".[dev]"

CLI Verification

.venv\Scripts\python.exe -m pytest tests -q        # Run test suite (77 passed)
.venv\Scripts\python.exe -m ruff check src tests    # Code linting
.venv\Scripts\python.exe -m osiris health           # Server health check
.venv\Scripts\python.exe -m osiris audit --task t_1 # Cryptographic non-loss proof
.venv\Scripts\python.exe bench\run_bench.py         # Reproduce benchmarks

Registration as MCP Server

Add to your client configuration (mcp.json):

{
  "mcpServers": {
    "osiris": {
      "command": "D:\\mcp-osiris\\.venv\\Scripts\\python.exe",
      "args": ["-m", "osiris"],
      "env": {
        "OSIRIS_HOME": "C:\\Users\\Tech\\.osiris",
        "OSIRIS_ROOTS": "D:\\mcp-osiris"
      }
    }
  }
}

12. Installation

pip install mcp-osiris          # or: uv pip install mcp-osiris
mcp-osiris                      # runs the MCP server on stdio
osiris health                   # CLI verification
osiris-dashboard --port 8770    # Control Plane (dashboard)

From npm (no Python setup)

npx -y osiris-mcp

The npm package is a stdio launcher. It resolves the Python runtime in this order — OSIRIS_PYTHON → uvx → python3 → python — and runs the PyPI package mcp-osiris.

From source

git clone https://github.com/MlkBlk-IT/osiris.git
cd osiris
uv venv --python 3.12 .venv
uv pip install --python .venv\Scripts\python.exe -e ".[dev]"

MCP client configuration

{
  "mcpServers": {
    "osiris": {
      "command": "npx",
      "args": ["-y", "osiris-mcp"],
      "env": {
        "OSIRIS_HOME": "~/.osiris",
        "OSIRIS_ROOTS": "/path/to/project"
      }
    }
  }
}

Variable

Default

Role

OSIRIS_HOME

~/.osiris

SQLite database, reports, caches

OSIRIS_ROOTS

(empty)

Roots allowed for file reading (; separated)

OSIRIS_CACHE_TTL_S

300

Cache TTL (seconds)

OSIRIS_PRUNE_THRESHOLD_TOKENS

40000

Prune threshold

OSIRIS_DISPATCH_ONLY

0

1 → exposes only osiris.call


License

MIT © 2026 Malik Belkacemi (MLKBLK-IT)

Available Tools

6 tools
osiris.checkpointOsiris.CheckpointC

Snapshot d'etat, ou cloture avec rapport, ou compaction.

NameRequiredDescriptionDefault
modeNosnapshot | final | compact | trim | clear.snapshot
labelNoEtiquette.
task_idNoTache.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It mentions compaction and final closure but does not disclose whether those modes are destructive, whether they require required permissions, how they affect existing state, or what happens with trim/clear modes.

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 a single short sentence with no redundant filler, and it puts the main mode outcomes up front. It is efficient, though its extreme brevity makes it cryptic rather than richly structured.

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 tool has multiple modes, three parameters, no annotations, and an output schema. The description omits the trim and clear modes, gives no safety or usage context, and does not explain when each mode is appropriate, leaving important gaps for an agent to infer.

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%, so the schema already documents all three parameters. The description only partially restates the mode values and adds no syntax, constraints, or meaning beyond the schema, so the baseline of 3 applies.

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 names three possible outcomes: state snapshot, closure with report, and compaction. However, it is terse and does not fully clarify the tool's scope, especially the distinction between checkpointing and the trim/clear modes listed in the schema, nor how it differs from siblings like osiris.handoff or osiris.precheck.

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. It lists mode outcomes but does not say which situations should trigger a checkpoint, a final closure, or compaction, and it names no sibling tools or explicit exclusions.

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

osiris.handoffOsiris.HandoffC

Contrat de delegation (create), ou son resultat (complete/collect).

NameRequiredDescriptionDefault
modeNocreate | complete | collect.create
filesNoFichiers.
resultNoResultat (JSON).
missionNoMission du sous-agent.
must_knowNoFaits indispensables (remplacent le contexte parent).
handoff_idNoHandoff vise.
allowed_toolsNoOutils.
budget_tokensNoBudget tokens.
forbidden_actionsNoInterdits.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, yet it discloses nothing about side effects, whether a handoff persists, who can complete or collect it, or what happens if a result is collected twice. The one genuinely important behavior (must_know replaces the parent context) lives only in the schema, not the description.

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

Conciseness3/5

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

One sentence with no padding, so nothing is wasted — but it is under-specified rather than concise, and the highest-value information (the three modes and what each returns) is compressed into parentheses rather than front-loaded.

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?

For a 9-parameter, three-mode orchestration tool with no annotations, this description is far too thin; an output schema excuses explaining return values, but nothing else is covered. An agent cannot tell from this text how a create/complete/collect cycle is supposed to be sequenced.

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%, so the baseline of 3 applies even though the description adds no parameter detail. Note the schema descriptions themselves are mostly one-word glosses ('Outils.', 'Interdits.'), so the effective documentation is thinner than coverage suggests, but the description is not the right place to fix that here.

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 names the resource (a delegation contract / handoff) and enumerates three modes (create, complete, collect), which is more than a tautology. But it is one terse French sentence that never states what a 'contrat de delegation' actually is or produces, and it gives no differentiation from siblings like osiris.plan or osiris.checkpoint.

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 parenthetical mode mapping is the only usage signal; there is no statement of when to choose create vs complete vs collect, no prerequisites, and no mention of the sibling tools an agent should consider instead. The agent must infer the workflow from the parameter names alone.

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

osiris.observeOsiris.ObserveC

Consigne une action : doublons, boucles, externalisation.

NameRequiredDescriptionDefault
argsNoArguments (JSON).
kindNotool_result | payload | file | decision | constraint | lesson | test_result | failure | note | contract | head | dropped.tool_result
pathNoChemin (kind=file).
sealNoSeal (ecart = derive).
toolNoOutil.
resultNoResultat (ou ref, pour kind=dropped).
statusNook | error | skipped.ok
context_tokensNoTaille declaree de ton contexte (0 = inconnu).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/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, yet it says nothing about persistence, whether the call mutates stored state, what 'seal (ecart = derive)' implies, or any side effects. 'Consigne' hints at a write, but the agent gets no confirmation of durability, idempotency, or error behavior.

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?

A single short sentence is front-loaded, but it is under-specified rather than concise. For a tool with 11 enumerated kind values and specialized fields like seal and context_tokens, one cryptic line does not earn its place as the entire description.

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?

An output schema exists, so return values need not be explained, and the schema documents all params. But with no annotations and an opaque one-liner, an agent still lacks the context to know when this tool applies or what recording an 'action' with duplicates/loops/externalization actually means.

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%, so every one of the 8 parameters is documented in the schema, establishing the baseline of 3. The description adds no additional parameter meaning — the words 'doublons, boucles, externalisation' are not mapped to any field such as kind or seal.

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

Purpose2/5

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

The verb 'Consigne' (records/logs) plus 'une action' gives a bare bones of purpose, but the qualifier 'doublons, boucles, externalisation' is cryptic jargon that does not explain what is actually recorded or why. It fails to distinguish this tool from siblings like osiris.checkpoint or osiris.handoff, which plausibly also persist state.

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?

There is no statement of when to call this versus osiris.checkpoint, osiris.recall, or osiris.handoff, and no prerequisites or exclusions. The agent must guess from the tool name alone that this is for logging an observation after an action.

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

osiris.planOsiris.PlanC

Tache : plan, manifeste scelle. start | update | resume | status.

NameRequiredDescriptionDefault
modeNostart | update | resume | status.start
stepsNoEtapes.
task_idNoTache a reprendre.
objectiveNoObjectif.
constraintsNoRegles.
context_tokensNoTokens du contexte (0 = inconnu).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/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. "Manifeste scelle" cryptically implies immutability/sealing of a written plan, which is a genuine behavioral hint, but there is nothing about side effects per mode, whether 'start' persists state, what 'resume' requires, or permissions.

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

Conciseness3/5

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

It is a single short line with no filler, and the task label is front-loaded. However, telegraphic fragments and untranslated jargon ("manifeste scelle") make it read as compressed rather than efficiently structured.

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?

A six-parameter, four-mode lifecycle tool with no annotations needs to explain mode-dependent parameter applicability and write semantics; the description does none of that. The output schema covers return values, but the behavioral gap remains large for a stateful planning tool.

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%, so the schema already explains all six parameters (mode, steps, task_id, objective, constraints, context_tokens). The description adds only the mode enumeration, which duplicates the schema, so the baseline 3 applies.

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

Purpose2/5

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

"Tache : plan, manifeste scelle" largely restates the tool name and adds an unexplained metaphor ("sealed manifest"). The mode list (start | update | resume | status) hints at a lifecycle manager, but the description never states a concrete verb+resource or distinguishes it from siblings like osiris.checkpoint or osiris.handoff.

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 four mode names are listed but no condition is given for choosing among them, and no guidance distinguishes this tool from osiris.precheck, osiris.observe, or osiris.checkpoint. An agent must guess which mode and which sibling to use.

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

osiris.precheckOsiris.PrecheckB

Verifie une action avant qu'elle parte : invariant, doublon, budget.

NameRequiredDescriptionDefault
argsNoArguments (JSON).
actionNoAction (ex: git.commit).
reasonNoPourquoi.
task_idNoTache (vide = tache courante).

Output Schema

NameRequiredDescription

No output 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 full burden. It does add real behavioral content by naming the three validations performed (invariant, duplicate, budget), but it never says whether the tool blocks the action, what a negative verdict means, or whether calling it has 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.

Conciseness4/5

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

A single front-loaded sentence with zero filler; the core intent arrives immediately. It is arguably too terse rather than padded, so it does not lose points for verbosity.

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?

An output schema exists, so return values need not be explained, and the schema covers all parameters. What remains missing is the decision semantics of a gate tool: whether a failed precheck should abort the action and whether human approval is involved.

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%, so all four parameters (action, args, reason, task_id) are already documented in the schema and the baseline is 3. The description adds nothing beyond the schema, not even a note that 'action' is the field being checked.

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?

States a specific verb+resource: it verifies an action before dispatch, and enumerates the three check families (invariant, doublon, budget). An agent can tell this is a pre-execution gate rather than a logging or planning tool, though no sibling is named explicitly.

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?

"avant qu'elle parte" implies the timing (before the action is dispatched), which is implicit usage guidance. There is no explicit when-not, no mention of what to do if the check fails, and no routing against siblings like osiris.plan or osiris.checkpoint.

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

osiris.recallOsiris.RecallC

Rehydrate un ref, ou restitue l'etat / la memoire d'une tache.

NameRequiredDescriptionDefault
opNoOperation de selection cote serveur quand `ref` est fourni : excerpt | grep | range | head | tail | outline | aggregate | jsonl.
endNoDerniere ligne (inclusive) pour op=range.
refNoRef (mem://...).
kindNoType de memoire.
queryNoFiltre texte (extrait cible si un ref est fourni).
scopeNotask | project | agent | global.
startNoPremiere ligne (1-based) pour op=range.
task_idNoTache.
budget_tokensNoBudget tokens.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but says nothing about whether this is a read or write operation, side effects, token-budget limits, or permission requirements. The op/scope/budget_tokens parameters suggest server-side selection and token capping, which are not mentioned. The only disclosed trait is that memory is restored/rehydrated, which is minimal.

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

Conciseness3/5

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

It is a single sentence with no waste, but it is under-specified rather than genuinely concise. The two modes are packed into one clause without explaining how they map to ref versus task_id usage.

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?

A 9-parameter tool with no annotations and multiple selection operations (excerpt, grep, range, head, tail, outline, aggregate, jsonl) needs a richer description than one vague sentence. The presence of an output schema removes the need to explain return values, but the operational modes and interactions between ref/op/scope/task_id remain entirely unexplained.

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 100% and the schema documents all 9 parameters including the op enum-like values, scope, range, and query. The description only hints at 'ref' and 'task', so it adds nothing beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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 gives two modes: 'rehydrate a ref' or 'restores the state/memory of a task', which conveys the general intent of memory/state retrieval. However, 'rehydrate' is jargon and the relationship between the 'ref' path and 'task' path is unclear. It does not differentiate this tool from sibling tools like osiris.observe or osiris.checkpoint.

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 versus the other memory tools, nor any exclusions or prerequisites. The agent must infer that recalling memory is appropriate by reading the schema, not the description.

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 updatesv0.1.0
    • First observedosiris.checkpoint
    • First observedosiris.handoff
    • First observedosiris.observe
    • First observedosiris.plan
    • First observedosiris.precheck
    • First observedosiris.recall

TDQS

B3/5.0

Scored across 6 tools

Disambiguation4/5

The tools mostly map to distinct lifecycle phases: precheck before an action, observe after it, recall memory, checkpoint state snapshots/closure, handoff delegation, and plan task planning. Some boundary blur exists because checkpoint and recall both involve task state, and several tools bundle multiple sub-actions, but overall the purposes are separable.

Naming Consistency5/5

All tools follow the same osiris.<single_lowercase_concept> pattern with no mixing of casing or verb styles. The convention is predictable and readable across the entire set.

Tool Count5/5

Six tools is well-scoped for an agent governance/lifecycle server. Each tool corresponds to a meaningful phase or contract, and the count avoids both thinness and excessive surface area.

Completeness4/5

The set covers the core lifecycle: pre-action checks, observation, recall, checkpointing/closure, delegation handoff, and task planning. Minor gaps exist around explicit listing/inspection or cancellation operations, but agents can likely work around them through recall/status modes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Server-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what agents must produce — the server blocks the call if they don't. Works with any MCP-compatible client.
    211
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Local-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.
    37
    63 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-first MCP server that lets AI agents query their own LLM call history as a branchable DAG and offload conversation context into immutable, AES-256-GCM-encrypted capsules — restorable in full or per segment, crypto-shreddable, with RAID-style replication. 12 tools, no API keys, no cloud.
    104 npm
    3
    MIT