context-crystal
This MCP server provides tools to manage Context Crystal context lifecycle, search, shaping, linking, archiving, and pruning for auditable human/AI collaboration.
Initialize new context crystals with name, goal, intent, tasks, and author.
Create DAG checkpoints with anchors, summaries, and fidelity levels.
Add or complete tasks and transition goal status (in_progress, concluded_success, concluded_abandoned).
Lease, clean, or promote transient resources (e.g. worktrees, mock services).
Execute compound semicolon-delimited atomic commands in one batch to minimize roundtrips.
Hydrate shaped context beams using tail, from/to slice range, depth, or summary-only mode.
Slice/fork crystal sub-DAGs into new child crystals, optionally pruning the source.
Melt intermediate sub-DAG transitions into a consolidated checkpoint node.
Connect, disconnect, or list directed lattice bonds between crystals (relates_to, depends_on, blocks, supersedes, references).
Register, list, or inspect virtual/physical artifacts in cave or crystal scope.
Search crystals by text, temporal bounds, leases, tasks, lessons, status, aging, archived state, author, path, sorting, and pagination.
Compute cave statistics, disk footprints, temporal genesis, structural totals, and token savings.
Triage hygiene (active/solid/stale), archive/unarchive cold storage, and prune single crystals or retention-policy batches.
Context Crystal
An open, standardized context lifecycle and interchange format for human and machine collaboration.
Context Crystal decouples context, goals, transient resources, and entities from ephemeral chat sessions, IDE windows, and agent runtimes. Inspired by OpenTimelineIO (OTIO) and grounded in cybernetics, it structures AI-assisted collaborative work as an immutable, auditable state lattice (DAG).
Why Context Crystal?
Modern AI-assisted engineering suffers from a few critical bottlenecks:
The Navigational Void (Context vs. Memory): Tools frequently conflate "context" with "memory" (vector databases, RAG retrieval, associative search, or endless chat transcripts). While memory attempts to simulate cognitive recall, engineering requires a navigational map and compass: a deterministic record of where we have been (verified milestones, executed tools, resolved friction) and where we are going (goal nucleus, active acceptance criteria). Crystals are self-contained and inert at rest; active use and hydration turn them into meaningful, high-bandwidth context.
The Session Boundary Problem: Work is trapped in ephemeral chat windows. When a context window fills, a session restarts, or work hands off between human steersmen and autonomous agents, nuance evaporates. Summaries suffer from lossy compaction, prompt drift, and hallucinated progress.
Repository Pollution & Accidental Exposure: Persistent context tools often clutter codebases with dotfiles, agent scratchpads, private identities, and conversational logs. Worse, unmonitored agent logs risk permanently committing sensitive credentials or authorization tokens into git history.
The Token Tax & Trial-and-Error Loops: Traditional context summarizers consume substantial LLM tokens simply re-reading and re-summarizing prior chat turns. Worse, when an agent hits an architectural dead end, that negative knowledge is lost upon session compaction—causing subsequent agents to repeat the exact same failed attempts. Context Crystal operates with 0 LLM tokens consumed for context management, delivers sub-5ms native cold starts, and automatically projects unresolved lessons learned into hydrated beams so agents never repeat failed spikes.
Context Crystal solves these challenges: It provides a deterministic, machine-readable state transition DAG that acts as an auditable map and compass across sessions, guarantees a 100% clean codebase through decoupled out-of-tree storage, eliminates context overhead with zero LLM tokens consumed for state tracking, and enforces a strict zero-secret posture.
Related MCP server: anthropic_skill
Installation & Quickstart
Context Crystal binaries are pre-compiled with LLVM Thin Link-Time Optimization (Thin LTO) for maximum runtime speed and minimal disk footprint.
1. Universal POSIX Bootstrap (macOS & Linux)
Install the latest release binary into ~/.local/bin/ccrystal with a single command:
curl -fsSL https://raw.githubusercontent.com/oswaldo/context-crystal/main/install.sh | shTo install into a custom directory or pin a specific release version:
curl -fsSL https://raw.githubusercontent.com/oswaldo/context-crystal/main/install.sh | sh -s -- --to /usr/local/bin --version v1.0.02. Homebrew (macOS & Linux)
brew install oswaldo/context-crystal/ccrystalOr add the tap repository first:
brew tap oswaldo/context-crystal
brew install ccrystal3. Coursier (Universal Zero-Install: Windows, macOS, Linux, BSD)
For developers and automated agents on any operating system with Java 17+ installed:
# Instant launch via official Coursier contrib channel:
cs launch --contrib ccrystal
# Or install globally to your PATH:
cs install --contrib ccrystal(You can also launch directly via immutable Maven Central coordinates: cs launch io.github.oswaldo:ccrystal-cli_3:latest.release -- --help)
4. Platform Support Matrix
Platform | Tier | Architecture | Runtime / Engine | Status |
Linux | Tier 1 |
| Native binary (Thin LTO) | Fully supported |
macOS | Tier 1 | Apple Silicon ( | Native binary (LLVM -O3) | Fully supported (tested on macOS 14, 15, and 26 Apple Silicon) |
Windows (PowerShell / CMD) | Tier 1 | Any architecture ( | JVM / Coursier ( | Fully supported via Maven Central; standalone native MSVC binary planned for post-1.0 |
Windows (WSL) | Tier 1 |
| Native binary / POSIX script | Fully supported |
Universal (BSD, Solaris, etc.) | Tier 1 | Any POSIX / JVM target | JVM ( | Fully supported via Maven Central ( |
Zero-Learning-Curve: Agent-as-Operator
Human developers never need to memorize ccrystal commands, flags, or installation scripts.
Context Crystal is designed around the Agent-as-Operator paradigm:
Humans instruct in natural language.
Agents self-bootstrap and operate the crystal.
When an AI agent (Google Antigravity, Claude Code, Cursor, Windsurf, Copilot, etc.) encounters this repository or a project referencing Context Crystal, it reads the native agent skill, self-detects whether the binary is present, runs self-installation if missing, and manages state transitions autonomously.
Natural Language Workflows
Developer Utterance | What the Agent Executes Behind the Scenes |
"Let's start working on the user authentication refactor." | Self-bootstraps |
"What did we accomplish on this branch yesterday?" | Calls |
"While refactoring auth, I noticed our token parser fails on empty strings." | Calls |
"Spin up a temporary mock auth server for testing." | Leases a transient resource via |
"We're done! Wrap up and clean up." | Verifies all transient resource leases are resolved, records lessons learned, and marks tasks complete. |
100% Clean Codebase Guarantee (Decoupled Storage)
Context Crystal adapts to your team's workflow without polluting your code:
┌────────────────────────────────────────────────────────┐
│ Target Project Repository │
│ (100% Clean: No agent dotfiles, zero tool noise) │
└───────────────────────────┬────────────────────────────┘
│
Points to context store via:
• CLI flag: --store <path>
• Environment: CCRYSTAL_STORE=<path>
• File pointer: .ccrystal-store
│
▼
┌────────────────────────────────────────────────────────┐
│ Decoupled Context Companion Repo │
│ (Immutable DAG, transient leases, lessons learned) │
└────────────────────────────────────────────────────────┘In-Tree Mode (
.ccrystals/): Default for internal projects where teams want context history versioned alongside source code.Decoupled Out-of-Tree Mode (
CCRYSTAL_STORE): Set an environment variable or add a single.ccrystal-storepointer line. All crystals, entity logs, and transient leases are written to an isolated companion repository. Your public source repository remains pristine.
Key Capabilities
Topological State DAG: Context is structured as an immutable directed acyclic graph capturing human prompts, agent reasoning, tool executions, and verifiable checkpoints.
Capture Fidelity Guarantees: Distinguishes between Inferred context (agent synthesis, chain-of-thought) and Intercepted execution records (deterministic, verbatim tool input/output), preventing synthetic hallucinations from masquerading as verified facts.
First-Class Transient Resource Leases: Tracks temporary resources (
git_worktree, test environment overrides, mock services, dummy assets) with automated cleanup gates before task conclusion.Context Cleavage & Slicing (
ccrystal slice): Prune context lattices to avoid token saturation, or slice and fork unexpected discoveries into linked child crystals with full parent lineage.Selective Context Hydration & Beam Shaping (
ccrystal cast/hydrate --from): Reconstitutes living state (Goal, Tasks, Leases, Lessons) while focusing the state transition beam on a specific milestone (--from <anchor|id>,--to <anchor|id>,--tail <N>), keeping prompts lean without permanent forking.Continuous Improvement & Lessons Learned: Built-in ledger tracking friction, root causes, and verified action audit trails.
Sub-Millisecond Atomic Batching: Pipelined CLI execution (
ccrystal batch "...") combines multi-step state transitions into a single roundtrip, eliminating agent latency and token waste.Deterministic Zero-LLM Housekeeping & Melting: Sub-DAG topological melting (
ccrystal melt) collapses intermediate transition chains into consolidated checkpoint nodes with aggregated artifact links, preserving key decisions while drastically reducing prompt token overhead with zero LLM dependency.Cold Storage Archiving & Cave Hygiene Triage: Classify workspace health into
Active,Solid, andStalestates (ccrystal triage --solid/--stale). Move completed crystals to cold storage (ccrystal archive) to keep active context listings lean while preserving full history and artifacts.Secret Sanitization & Zero-Leak Invariant: Context crystals capture operational lineage without compromising security. Enforces a strict pointers over values invariant (referencing
env:VARor vault keys rather than literal credentials) with automated scanning recommendations (such as Betterleaks or Gitleaks) to prevent sensitive token exposure in context repositories.Multi-Dimensional Search & Temporal Scoping (
ccrystal search/crystal_search): Query cave history across full-text contents, temporal bounds (--since 7d,--today,--yesterday), active leases, touching paths, open tasks, aging status, and author identities, with deterministic sorting and defensive pagination.
Pre-Packaged Agent Adapters
Context Crystal includes ready-to-use skills and instruction adapters for major agent harnesses:
Google Antigravity: Full agent skill with symbiotic and autonomous fallback modes.
Claude Code: CLAUDE.md integration instructions for Anthropic's CLI.
Cursor & Windsurf: Rule definitions for prompt hydration and automatic checkpointing.
Generic POSIX Skill: Universal agent specification adaptable to any tool-calling harness.
Native Model Context Protocol (MCP) Server (ccrystal mcp)
Context Crystal includes an embedded, zero-overhead MCP server built directly into the native binary. It connects Claude Desktop, Cursor, Zed, Windsurf, and agent harnesses to your workspace crystals with zero Python or Node.js runtime dependencies.
Compound Atomic Tools (17 tools):
Batching & Inception:
crystal_batch,crystal_init.Transitions & Provenance:
crystal_checkpoint,crystal_task_transition,crystal_goal_transition.Artifacts & Leases:
crystal_artifact,crystal_transient_lease.Context Shaping & Slicing:
crystal_hydrate,crystal_slice_fork.Lattice Bonds & Topology:
crystal_connect(cross-crystal relations, cycle-defended directed DAG edges, and depth-1 defensive hydration context projection).Metrics, Search & Lifecycle:
crystal_stats,crystal_search(multi-dimensional filtering and pagination),crystal_triage,crystal_melt,crystal_archive,crystal_unarchive,crystal_prune.
Dynamic Context Resources (
ccrystal://):ccrystal://{id}/state: Living state container JSON (Goal status, pending tasks, active leases, open lessons).ccrystal://{id}/dag: Normalized DAG nodes and parent lineage JSON.ccrystal://{id}/hydrate: Synthesized Markdown context beam formatted for immediate LLM prompt injection (supports?from=...&to=...&tail=...query parameters).ccrystal://{id}/bonds: Lattice bonds and inbound/outbound topology JSON.ccrystal://artifacts: Global cave artifact registry.ccrystal://{id}/artifacts: Crystal-scoped referenced artifacts.ccrystal://entities: Registered cave identities and authors.
Prompt Beams & Triage: Hydrate shaped context beams directly via
hydrate_context(acceptingfrom,to,tail,depth) and review cave lifecycle hygiene viatriage_cave.
Client Configuration
Add to your MCP client settings (e.g., Claude Desktop claude_desktop_config.json, Cursor .cursor/mcp.json, or Antigravity mcp_config.json):
{
"mcpServers": {
"context-crystal": {
"command": "ccrystal",
"args": ["mcp"]
}
}
}For detailed protocol specifications and editor templates, see docs/mcp/README.md.
Verified CLI Quickstart
If you want to run commands directly or script automation, the native CLI is fast and ergonomic.
Quick Installation (Recommended)
Install the standalone native binary for Linux or macOS with a single command:
curl -fsSL https://raw.githubusercontent.com/oswaldo/context-crystal/main/install.sh | shThe script automatically detects your OS and architecture (linux-x86_64, macos-aarch64, macos-x86_64), installs ccrystal into ~/.local/bin, and verifies binary execution.
Building from Source (Alternative)
If you prefer building from source, ensure you have:
Java Development Kit (JDK): Version 21+ (verified on JDK 21 LTS and bleeding-edge OpenJDK 26 across Linux x86_64 and macOS Apple Silicon)
Build Tool:
sbt1.10+Compiler: Scala 3.9+
Native Linker:
clang(for Scala Native LLVM target;sudo apt install clang/sudo dnf install clangon Linux, or included with Xcode CommandLineTools on macOS)
Collaborator Quickstart & Hardware Baseline:
Idiomatic Bleeding-Edge Setup: We recommend bootstrapping your environment with Coursier:
# Single command installs bleeding-edge JDK 26, sbt, scalafmt, scala-cli, and configures PATH cs setup --jvm 26 -yShell PATH: Ensure
~/.local/binand Coursier's application bin directory (~/.local/share/coursier/binon Linux, or~/Library/Application Support/Coursier/binon macOS) are exported in your~/.bashrc,~/.zshrc, or shell profile.Memory Baseline: Scala Native Thin LTO linking benefits from 8 GB+ RAM. A
.jvmoptsbaseline (-Xmx4g) is included in the repository. On lightweight machines, runsbt "coreJVM/test; cliJVM/test"for fast local iteration.Contributing: See docs/contributing.md for our dual-key cryptographic policy and local verification workflow.
# 1. Fast build (development mode, ~10s)
sbt "cliNative/nativeLink"
# 2. Optimized release build with Thin LTO (~25s, dead-code elimination, peak runtime performance)
sbt 'set cli.native / nativeConfig ~= { _.withMode(scala.scalanative.build.Mode.releaseFast).withLTO(scala.scalanative.build.LTO.thin) }; cliNative/nativeLink'
# Install into local user PATH (portable across macOS BSD and Linux GNU)
mkdir -p ~/.local/bin
rm -f ~/.local/bin/ccrystal
cp ./cli/native/target/scala-3.9.0/ccrystal-cli ~/.local/bin/ccrystal
chmod +x ~/.local/bin/ccrystal
strip ~/.local/bin/ccrystalEssential Commands
# 1. Initialize a new crystal
ccrystal init auth-refactor -g "Refactor JWT Validation" -i "Replace legacy parser with Nimbus"
# 2. Add and check off task milestones
ccrystal task add auth-refactor -d "Write failing reproduction test"
ccrystal task done auth-refactor -t t1
# 3. Append verifiable state transitions to the DAG
ccrystal node add auth-refactor -k human_prompt -s "Investigate parser NPE"
ccrystal node add auth-refactor -k tool_execution -s "sbt test" --fidelity intercepted
# 4. Track temporary scaffolding with transient resource leases
ccrystal transient lease auth-refactor -t git_worktree -p "../ccrystal-worktrees/auth" -d "Isolated worktree" --policy revert_on_conclusion
# 5. Hydrate prompt / inspect context (markdown view)
ccrystal hydrate auth-refactor
# 6. Execute atomic multi-command batch (ideal for agents)
ccrystal batch "task add auth-refactor -d 'Deploy to staging'; transient clean auth-refactor -l l1; node add auth-refactor -k checkpoint -s 'Ready for review'"
# 7. Context Cleavage: slice and fork into a child crystal
ccrystal slice auth-refactor --from node-1 --to node-3 --fork-to auth-edge-cases --prune
# 8. Selective Context Hydration & Beam Shaping
ccrystal hydrate auth-refactor --from v1-checkpoint --tail 5
# 9. Deterministic Sub-DAG Melting (Squash intermediate node chains)
ccrystal melt auth-refactor --from node-auth-refactor-init --to checkpoint-1 --summary "Finalized initial auth spec & scaffolding"
# 10. Cross-Crystal Lattice Bonds & Defensive Hydration Paging
ccrystal connect auth-core api-gateway -r depends_on -d "Gateway relies on token contract"
ccrystal connections auth-core # Inspect outbound and inbound bonds
ccrystal disconnect auth-core api-gateway # Sever cross-crystal link
# 11. Cave Metrics & Storage Footprint
ccrystal stats # High-level cave metrics, disk footprints, and token savings
ccrystal stats --since 7d --detailed # Scoped breakdown for crystals updated in last 7 days
# 12. Cave Hygiene Triage, Cold Storage Archiving & Retention Pruning
ccrystal triage --solid # Inspect concluded crystals ready for cleanup
ccrystal archive auth-refactor # Move completed crystal to cold storage (.ccrystals/archive/)
ccrystal unarchive auth-refactor # Restore crystal to active cave
ccrystal search --archived # Search across active and archived crystals
ccrystal prune auth-refactor -f # Permanently prune single crystal with entity cascade
ccrystal prune --older-than 90d # Prune archived crystals exceeding 90-day retention
ccrystal prune --older-than 30d --dry-run # Preview candidates and freed bytes without deleting
# 13. Dual-Audience Guidance & Entity Conventions
ccrystal --for-ai # Operational invariants, PII rules, and entity schemes for AI agents
ccrystal entity conventions # Display canonical entity prefixes (usr_, agt_, mdl_, tool_, sys_)
# 14. Universal Agent Runtime Onboarding & The Golden Triad
ccrystal agent doctor # Diagnose Golden Triad status (Runtime Binary, MCP Server & Agent Skill)
ccrystal agent doctor --json # Machine-readable JSON diagnostic report
ccrystal agent install --dry-run # Preview automated MCP and skill distribution without disk changes
ccrystal agent install # Safely auto-configure detected agent harnesses and deploy agent skills
ccrystal agent install --symlink-skill # Symlink canonical skill from workspace instead of copying
ccrystal agent install --workspace-skill # Install canonical skill into local workspace (.agents/skills/context-crystal/SKILL.md)
ccrystal agent install --no-skill # Configure MCP server only without installing skill files
ccrystal agent install --target cursor # Auto-configure specific harness (cursor, claude-code, zed, etc.)Repository & Monorepo Architecture
Context Crystal is built as a high-performance cross-compiled Scala 3 monorepo:
├── spec/ # Vendor-neutral JSON Schema v1 specification & compliance suite
├── core/ # Pure functional models, DAG engine, codecs, and FsCrystalStore SPI
│ ├── shared/ # Cross-platform core logic (Scala 3)
│ ├── jvm-native/# Shared filesystem engine, POSIX locks & OCC rebase (JVM & Native)
│ ├── jvm/ # JVM target-specific platform primitives
│ ├── native/ # Scala Native (LLVM) target-specific platform primitives
│ └── js/ # Scala.js target
├── cli/ # Decline-based command-line interface & native MCP server
├── skills/ # Canonical agent skills and IDE/CLI adapters (Antigravity, Claude, Cursor)
├── docs/ # Cybernetic philosophy & operational guidelines (for_devs.md, for_ais.md)
└── conductor/ # Conductor Spec-Driven Development (SDD) tracks & system tenetsStorage Isolation & Concurrency Control
Context Crystal is engineered for safe simultaneous collaboration across multiple human developers and autonomous AI agents:
Atomic Inode Replacement: File writes stage to
.<target>.tmp-<time>-<nano>in the target directory and perform an atomic swap via POSIXrename(2)(REPLACE_EXISTING), eliminating torn reads.Optimistic Concurrency Control (OCC): The storage-isolated
CrystalStore.update(id)(f)API executes pure functional transformations with deterministic 128-bitContentFingerprintvalidation and automatic bounded rebase retries.Defensive Agent Installation:
ccrystal agent installchecks pre-read fingerprints to detect external file modifications, preventing data loss or clobbering of concurrent user edits.Ephemeral Mutex Serialization: Short-lived
.lockmutex files with PID tracking and 5-second staleness auto-expiration prevent filesystem races during multi-entity write operations.
Running Tests
# Run full cross-platform test suite (Native, JVM, JS)
sbt test
# Fast iteration on JVM only
sbt "coreJVM/test; cliJVM/test"
# Run formatting and scalafix linter checks
sbt "scalafmtCheckAll; scalafixAll"Quality Guards & Automated Git Hooks
Context Crystal includes repository-managed git hooks in .githooks/ to enforce zero push-fail cycles:
# Activate automated pre-commit and pre-push quality guards
./scripts/setup-hooks.shpre-commit: Runssbt scalafmtCheckAllon staged.scalafiles.pre-push: Runssbt "scalafmtCheckAll; scalafixAll --check"andsbt testbefore pushes.
Philosophy & Foundations
We model human and machine collaborators not as theatrical roleplaying personas, but as self-governing Entities operating on explicit feedback loops toward measurable goals:
👨💻 For Developers: Why shedding anthropomorphic overhead lowers cognitive fatigue and accelerates flow.
🤖 For AI Entities: How immutable context lattices prevent attention degradation and prompt drift.
📖 System Tenets & Specification: Detailed architectural tenets, including capture fidelity, transient leasing, and decoupled storage.
Craftsmanship: Proudly Human-in-the-Loop (Not AI Slop)
Context Crystal firmly rejects the paradigm of unsupervised brute-force agent swarms and synthetic slop. It is proudly human-in-the-loop — conceived, architected, audited, and reviewed with care, love, and rigor in deliberate partnership with computational intelligence. We treat AI not as a reckless replacement for human judgment and discernment, but as a cognitive amplifier operating under rigorous human stewardship, using its extraordinary capabilities for what they were genuinely destined to achieve.
Contributing
All development strictly follows Conductor Spec-Driven Development (SDD) and strict Git worktree isolation.
Please read AGENTS.md before starting any work or submitting pull requests.
Available Tools
17 toolscrystal_archiveA
Archive a concluded or inactive crystal to cold storage (.ccrystals/archive/) to reduce cave bloat while preserving all state and artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| crystal_id | Yes | Identifier of the crystal to archive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the storage target, that state and artifacts are preserved (non-destructive/reversible), and the reason for doing it. It omits auth requirements, failure conditions for active crystals, and whether the operation is undoable via crystal_unarchive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and target, and every clause earns its place by adding destination, precondition, and rationale.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description covers purpose, precondition, destination, and side effects adequately. Only minor gaps remain, such as how to reverse the archive or what error occurs on an active crystal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter (crystal_id) and schema coverage is 100%, so the schema already documents it fully. The description adds no syntax, format, or sourcing detail beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (archive) and resource (crystal) plus the destination path (.ccrystals/archive/) and the motivation (reduce cave bloat). The contrast with destructive siblings like crystal_delete or crystal_melt is implied by 'preserving all state and artifacts' but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection condition: only concluded or inactive crystals should be archived, which frames when the tool applies. It stops short of naming alternatives (e.g., crystal_delete for removal, crystal_unarchive for restoration) or stating what happens if the crystal is still active.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_artifactC
Register, list, or inspect virtual and physical artifacts across cave or crystal.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Artifact identifier (required for register/inspect) | |
| uri | No | Artifact URI pointer | |
| cave | No | Target cave registry | |
| name | No | Artifact human-readable name | |
| role | No | Role: target, instrument, or precondition | |
| action | Yes | Action: list, register, or inspect | |
| geo_uri | No | Geo coordinates URI | |
| substrate | No | Substrate: virtual or physical | |
| crystal_id | No | Optional crystal ID for crystal-scoped operations | |
| media_type | No | MIME / media type | |
| description | No | Artifact description | |
| civic_address | No | Physical civic address | |
| location_name | No | Physical location name | |
| bench_coordinates | No | Physical bench coordinates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of behavioral disclosure, and it falls well short. It never states that 'register' mutates persistent state, whether registration is idempotent or overwrites existing artifacts, what the cave vs crystal registries mean, or what a failed lookup returns for a 14-parameter tool with three distinct actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though for a tool with 14 parameters and three actions it is arguably thinner than the surface area warrants, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is fully documented and carries the parameter semantics, so the description is not the sole source of detail. Still, with no annotations, no output schema, and three distinct actions sharing one parameter bag, the description should have clarified which parameters apply to which action and what register actually does to persisted state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is individually documented, so the baseline is 3. The description adds only marginal meaning ('virtual and physical' mirrors the substrate enum, 'cave or crystal' mirrors the cave boolean and crystal_id), offering no per-action parameter applicability beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives three specific verbs (register, list, inspect) against a named resource (artifacts) and adds scope qualifiers (virtual/physical, cave/crystal). It is clear enough to distinguish from generic siblings like crystal_delete or crystal_hydrate, but it never distinguishes itself from crystal_list, which plausibly overlaps with the 'list' action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The agent is not told when to choose register vs inspect vs list, whether 'cave' or 'crystal' scoping should be preferred, or what preconditions exist (e.g. an id is required for register/inspect per the schema, but the description never says so).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_batchB
Execute compound semicolon-delimited atomic transition recipes (e.g. 'node add -s "..." demo; task done -t task-1 demo'). Maximizes efficiency by minimizing roundtrips.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Semicolon-separated compound crystal commands |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It never says whether the batch is transactional (does one failing command abort the rest?), what permissions are required, or what happens on partial failure — and the word 'atomic' is ambiguous about whether it describes each command or the whole batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the purpose stated first and the efficiency rationale second, plus an inline example. Nothing is wasted, though the example sentence is dense and could be set apart for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description covers purpose and input format adequately but omits failure/ordering semantics and error behavior — the main things an agent needs to safely batch mutating commands.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100% for the single 'commands' parameter, so the baseline is 3. The description goes beyond the schema's bare 'semicolon-separated' phrasing by giving a concrete worked example showing subcommand syntax and quoting, which materially clarifies the expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Execute) and resource (compound semicolon-delimited atomic transition recipes), and the example makes the compound/batch nature concrete. It is distinguishable from single-transition siblings like crystal_task_transition, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Maximizes efficiency by minimizing roundtrips' implies the tool is for batching multiple commands in one call, which is useful implied guidance. However, it never states when NOT to batch, nor names the singular sibling tools as the alternative for one-off transitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_checkpointC
Create an anchor checkpoint node in the crystal DAG.
| Name | Required | Description | Default |
|---|---|---|---|
| anchor | No | Optional anchor tag name | |
| summary | Yes | Checkpoint summary | |
| fidelity | No | Fidelity: full, selective, summary | |
| crystal_id | Yes | Crystal identifier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden yet discloses nothing about effects: whether the checkpoint is reversible, what permissions are required, how it interacts with the DAG, or what fidelity actually changes. 'Create an anchor checkpoint node' restates the operation without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the core operation front-loaded and no filler. It is arguably too terse for a mutation tool, but it wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a rich 4-parameter surface, the description is far too thin. It omits what a checkpoint does to the DAG, side effects, and any return or error behavior an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (anchor, summary, fidelity, crystal_id) are already documented in the schema, making a baseline of 3 appropriate. The description adds no syntax, format, or meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (anchor checkpoint node) within the crystal DAG, so the basic operation is unambiguous. However, it offers no differentiation from the many crystal_* siblings such as crystal_artifact or crystal_slice_fork, and 'anchor checkpoint node' remains jargon-heavy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to create a checkpoint versus using siblings like crystal_artifact, crystal_slice_fork, or the transition tools. No prerequisites, triggers, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_connectB
Connect, disconnect, or inspect directed lattice bonds between crystals in the cave, enforcing an acyclic graph invariant and supporting cross-crystal context hydration.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action: connect (establish bond), disconnect (sever bond), or list (inspect inbound and outbound bonds; default: connect) | |
| relation | No | Bond relation type (relates_to, depends_on, blocks, supersedes, references; required for connect) | |
| crystal_id | No | Crystal ID to inspect when action is 'list' (or alias for source_crystal_id) | |
| description | No | Optional human or agent rationale explaining the cross-crystal bond | |
| json_output | No | When action is 'list', return structured JSON instead of formatted text (default: false) | |
| source_crystal_id | No | Source crystal ID initiating the bond | |
| target_crystal_id | No | Target crystal ID being connected to (required for connect) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does usefully disclose that an acyclic invariant is enforced, implying connect can fail and disconnect may be the remedy, and that bonds feed cross-crystal context hydration. It says nothing about failure modes on cycle detection, permission requirements, or whether disconnect cascades to dependent bonds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence packs the operations, the resource, and the key invariant without filler. It is dense rather than padded, though the trailing 'cross-crystal context hydration' clause is the least informative part and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation-and-read tool with no annotations and no output schema, the description is adequate but thin: it omits what a list returns, what happens on cycle rejection, and how bonds behave when a referenced crystal is archived or melted by a sibling. The safety and lifecycle context an agent needs to call this confidently is partially missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 seven parameters, including the action/relation enums and the list-time crystal_id alias. The description adds no syntax, format, or interaction detail beyond mapping its three verbs onto the action enum. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific set of operations (connect, disconnect, inspect) on a specific resource (directed lattice bonds between crystals), and names the acyclic-graph constraint that governs them. The 'crystals in the cave' metaphor is domain jargon, but the verb+resource pairing is unambiguous once the reader knows the domain. It does not explicitly distinguish itself from siblings like crystal_hydrate, which it gestures at via 'cross-crystal context hydration'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the 17 siblings, nor any prerequisites about when a bond should be created rather than recorded some other way. 'Enforcing an acyclic graph invariant' is a behavioral constraint rather than guidance on tool selection. Usage is only weakly inferable from the action enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_goal_transitionB
Transition a crystal's top-level goal status (conclude successfully, abandon, or reopen) with optional resolution summary or reason.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Target goal status (in_progress, concluded_success, concluded_abandoned) | |
| summary | No | Optional resolution summary or abandonment reason | |
| crystal_id | Yes | Crystal identifier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for what is clearly a state-mutating tool. It names the target states but says nothing about permissions required, whether transitions are reversible, whether concluding a goal affects open tasks, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no redundancy, and the core action plus the outcome options are front-loaded. Slightly dense but nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate minimum for a state-transition tool: it conveys the action, the target states, and the optional summary. However, with no annotations and no output schema, the description should have covered transition legality and side effects on related tasks; those gaps leave the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the enum values. The description adds only a loose conceptual mapping ('reopen' → in_progress, 'abandon' → concluded_abandoned), which is mild value on top of a fully-covered schema — the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — transitioning a crystal's top-level goal status — and enumerates the three transitions (conclude successfully, abandon, reopen). It implicitly distinguishes itself from crystal_task_transition by scoping to the 'top-level goal', though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated transition options imply what the tool is for, but there is no statement of when to choose it over crystal_task_transition, no preconditions (which current statuses permit a transition), and no exclusions. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_hydrateC
Hydrate context beam from a crystal with selective shaping (tail, slice range from/to, depth, or summary only).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Ending anchor or node ID/prefix for transition slice | |
| from | No | Starting anchor or node ID/prefix for transition slice | |
| tail | No | Number of recent transitions to include in slice | |
| depth | No | Maximum traversal depth (default: 10, alias for tail) | |
| crystal_id | Yes | Target crystal identifier | |
| summary_only | No | Exclude DAG transitions and hydrate living state summary only (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Hydrate' implies reconstruction/read, but the description never confirms it is read-only, whether it mutates crystal state, what permissions it needs, or what the beam actually contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the shaping options come early. It is efficient, though the dense jargon reduces readability more than length does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no output schema, the description is thin. It neither explains the returned 'context beam' nor clarifies the default traversal behavior, leaving the agent guessing about the operation's effect and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters with descriptions. The description's list of shaping modes loosely maps to the params but adds no syntax, defaults, or interaction rules beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('hydrate') and resource ('context beam from a crystal') and enumerates the shaping modes. However, the domain jargon ('context beam', 'crystal') is opaque without external context, and it draws no boundary against the many crystal_* siblings such as crystal_slice_fork or crystal_checkpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical list (tail, slice range from/to, depth, summary only) names parameter modes, not usage conditions. There is no statement of when to hydrate versus checkpointing, forking, or listing, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_initC
Initialize a new context crystal.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Title/goal of the crystal | |
| name | Yes | Crystal identifier | |
| tasks | No | Optional initial acceptance criteria / tasks | |
| author | No | Optional author name | |
| intent | No | Optional detailed intent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether initialization persists state, whether the name must be unique, what happens on a duplicate name, or whether the crystal becomes active immediately. 'New' implies creation, but nothing beyond that is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste and the action front-loaded. But at this length it is under-specified rather than genuinely concise, leaving the agent with no more information than the tool name alone provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter creation tool with no annotations and no output schema, the description is far too thin. It omits uniqueness constraints, side effects, and any indication of what is returned, so an agent cannot call it with confidence about outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (name, goal, tasks, author, intent) are already documented in the schema. The description adds no meaning beyond it, which places it at the baseline of 3 for fully-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Initialize') and resource ('context crystal'), which is enough to separate it from crystal_delete, crystal_melt, and crystal_list. However, 'context crystal' is undefined domain jargon and the description offers no differentiation from creation-adjacent siblings like crystal_hydrate or crystal_slice_fork, so the agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no stated prerequisites, and no mention of when it should not be used. With 15 siblings all sharing the 'crystal' prefix, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_meltC
Melt and squash intermediate sub-DAG transitions into a single consolidated checkpoint node with aggregated artifact links (Zero-LLM deterministic squashing by default).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Ending node ID or anchor to melt | |
| from | Yes | Starting node ID or anchor to melt | |
| anchor | No | Optional anchor label for the consolidated node | |
| summary | No | Optional manual summary override for the consolidated node | |
| crystal_id | Yes | Identifier of the target crystal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that squashing is deterministic and Zero-LLM by default, which is useful, but it omits key mutation details: whether intermediate nodes are deleted, whether the operation is reversible, what permissions are required, and what happens to existing artifacts or transitions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant filler and puts the core operation first. The jargon and parenthetical are dense, but the sentence is appropriately sized for a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-trivial consolidation tool with five parameters, no annotations, and no output schema, the description is missing usage guidance and critical behavioral details about mutation and reversibility. The 100% schema coverage handles parameters, but the description should do more to explain the operation's context and consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all five parameters. The description does not add any parameter-level meaning such as format, constraints, or examples beyond what the schema provides, which matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair ('Melt and squash') and resource ('intermediate sub-DAG transitions'), and states the resulting artifact ('single consolidated checkpoint node with aggregated artifact links'). It does not explicitly differentiate itself from close siblings like crystal_checkpoint or crystal_task_transition, but the core operation is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives, nor any prerequisites or exclusions. The parenthetical 'Zero-LLM deterministic squashing by default' hints at a default behavior but does not tell the agent when to choose this over crystal_checkpoint or crystal_task_transition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_pruneB
Permanently prune a crystal or cold storage archives by retention policy (with entity and artifact cascade).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Batch prune all archived crystals in cold storage (default: false) | |
| force | No | Force deletion/pruning without confirmation prompt (default: true for single crystal delete, false for batch prune) | |
| dry_run | No | Preview candidates and cascade impact without deleting (default: false for batch prune) | |
| crystal_id | No | Crystal identifier to delete (active or archived) | |
| older_than | No | Batch prune archived crystals inactive for duration (e.g. '30d', '2w', '3m') | |
| archive_only | No | Restrict deletion strictly to cold storage (default: true for batch prune) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully flags that the operation is 'permanent' (irreversible) and that deletion cascades to entities and artifacts, which is genuinely important context for a destructive tool. It omits, however, any statement of permissions/auth requirements, confirmation behavior, or scope differences between single-crystal and batch modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the destructive nature and the resource. It is efficient, though the phrasing 'a crystal or cold storage archives' is slightly awkward and mixes singular/plural scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, zero-annotation, no-output-schema tool, the description conveys permanence and cascade but leaves gaps around batch-vs-single semantics, safety parameters, and how it relates to sibling archive/melt tools. The 100% schema coverage compensates for parameter detail, keeping this at minimum viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, and the baseline is 3. The description's 'retention policy' and 'cascade' phrasing loosely maps to older_than and the cascade behavior but adds no syntax, format, or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (prune) plus resource (crystal / cold storage archives) and mechanism (retention policy with entity/artifact cascade). However, it does not distinguish itself from close siblings like crystal_melt, crystal_archive, or crystal_unarchive, which an agent would need to tell apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named despite several plausible siblings (crystal_melt, crystal_archive). The retention-policy phrasing implies a scenario but leaves the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_searchB
Search and list crystals in the cave with multi-dimensional filtering (query text, temporal bounds, leases, tasks, lessons, status, aging, archived, sorting, and pagination). When called without filters, lists active crystals (most recently active first).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order: recent (default), oldest, name | |
| aging | No | Filter by aging category (active, solid, stale) | |
| limit | No | Maximum number of results to return per page (default: 20; 0 to uncap) | |
| query | No | Free-text search query across crystal ID, title, intent, DAG nodes, lessons, and artifacts | |
| since | No | Filter crystals active on or after ISO-8601 date/datetime or relative expression (today, yesterday, 1d, 7d) | |
| until | No | Filter crystals active on or before ISO-8601 date/datetime or relative expression | |
| author | No | Filter by author entity ID | |
| offset | No | Result offset for pagination (default: 0) | |
| status | No | Filter by goal status | |
| has_lessons | No | Filter crystals with recorded lessons learned | |
| json_output | No | Output structured JSON array instead of text table (default: false) | |
| touching_path | No | Match leases or artifacts referencing the specified filesystem path or URI | |
| has_open_tasks | No | Filter crystals with incomplete acceptance criteria | |
| include_archived | No | Include crystals in cold storage (default: false) | |
| has_active_leases | No | Filter crystals holding active transient resource leases |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the default no-filter behavior and sort order, which is genuinely helpful, but says nothing about read-only nature, permissions, result format, or pagination limits beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, with the default-behavior caveat placed second. Dense but efficient; the parenthetical enumeration is long yet earns its place by signaling breadth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter read tool with no annotations and no output schema, the description covers defaults and filtering scope but omits return-value shape and result-set behavior. Adequate but leaves gaps the schema alone can't fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description lists filter categories that map onto those parameters but adds no syntax, defaults, or semantics beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search and list') and resource ('crystals'), and enumerates the filter dimensions it supports. An agent can distinguish this from crystal_stats or crystal_triage, though it doesn't explicitly name those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one useful context cue: called with no filters it lists active crystals, most recently active first. But it offers no when-to-use vs. alternatives guidance (e.g., when to reach for crystal_stats or crystal_hydrate instead), leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_slice_forkC
Extract crystal fragment or fork sub-DAG into a new crystal.
| Name | Required | Description | Default |
|---|---|---|---|
| prune | No | Whether to prune source crystal to anchor | |
| fork_to | Yes | Destination crystal identifier | |
| crystal_id | Yes | Source crystal identifier | |
| from_anchor | No | Optional source anchor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says nothing about permissions, whether the operation mutates the source crystal, what 'prune' destroys, or whether it is reversible — notable gaps for a tool whose own parameter implies data loss on the source anchor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero redundancy, which is good. However, the brevity crosses into under-specification for a 4-parameter mutation tool, so it is efficient but too thin to earn higher marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a destructive-sounding 'prune' parameter, the description should explain mutation effects, permissions, and the fork/extract distinction. It provides none of that, so an agent cannot call this safely on description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented in the schema itself, which sets the baseline at 3. The description adds no syntax, format, or interpretation beyond that, so it neither helps nor hurts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb ('Extract ... fork') and a resource ('crystal fragment / sub-DAG ... into a new crystal'), but the domain jargon is dense and the description never distinguishes this from siblings like crystal_melt, crystal_batch, or crystal_hydrate. An agent knows roughly what happens but not exactly which operation this is relative to the rest of the family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. The 'or' between 'extract fragment' and 'fork sub-DAG' hints at two modes but never says which parameter selects which mode, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_statsB
Compute and inspect workspace cave statistics, temporal genesis, structural totals, physical disk footprints, and quantitative prompt token savings across global cave or filtered search criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| aging | No | Filter by aging category (active, solid, stale) | |
| query | No | Optional free-text search query to scope statistics calculation | |
| since | No | Filter crystals active on or after ISO-8601 date/datetime or relative expression (today, yesterday, 1d, 7d) | |
| until | No | Filter crystals active on or before ISO-8601 date/datetime or relative expression | |
| author | No | Filter by author entity ID | |
| status | No | Filter by goal status | |
| detailed | No | Show detailed per-crystal storage breakdown and ranking (default: false) | |
| has_lessons | No | Filter crystals with recorded lessons learned | |
| json_output | No | Output structured JSON instead of human-readable dashboard table (default: false) | |
| touching_path | No | Match leases or artifacts referencing the specified filesystem path or URI | |
| has_open_tasks | No | Filter crystals with incomplete acceptance criteria | |
| include_archived | No | Include crystals in cold storage (default: false) | |
| has_active_leases | No | Filter crystals holding active transient resource leases |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Compute and inspect' strongly implies a non-destructive read, and the global-vs-filtered framing conveys scope, but nothing is said about cost/performance, whether results are cached, or permissions. It signals read-only behavior implicitly rather than explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with the verb first, which is good. However, the clause stack ('temporal genesis', 'structural totals', 'physical disk footprints', 'quantitative prompt token savings') is jargon-heavy and overlapping, adding length without sharpening meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter analytics tool with no annotations and no output schema, the description covers the broad purpose and scoping but omits any indication of the returned structure, which the json_output param implies is selectable. Adequate as a minimum-viable statement, but it leaves real gaps for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 13 parameters are already fully documented in structured form, establishing a baseline of 3. The description adds only the high-level notion of 'filtered search criteria' and global scope, contributing no syntax or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('compute and inspect') and resource ('workspace cave statistics'), and enumerates the metric families it returns (disk footprints, token savings, structural totals). An agent can distinguish it from crystal_search (which retrieves crystals) because this tool aggregates rather than lists. It stops short of explicitly naming siblings or contrasting scope, keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It hints at two modes ('global cave or filtered search criteria') but never states when to reach for this tool over crystal_search or crystal_triage, nor when filtering is preferable. There are no exclusions or prerequisites given. Usage must be inferred entirely from the name and param list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_task_transitionC
Add or complete a task in a crystal.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: add or done | |
| crystal_id | Yes | Crystal identifier | |
| description_or_id | Yes | Task description (for add) or task ID (for done) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it. It is a mutation tool (adds state, marks tasks done) yet says nothing about idempotency, whether 'done' fails on an unknown ID, who may invoke it, or what happens to the crystal on completion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence, front-loaded with both verbs and the resource, with no filler. Its brevity borders on under-specification, but as structure goes it is clean and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Three required parameters, a mutation semantic, no annotations, and no output schema — yet the description is one clause. Nothing explains the dual-purpose description_or_id parameter or the consequences of each action, so an agent must infer behavior entirely from field names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (action enum, crystal_id, description_or_id with its dual add/done semantics) are already documented in the schema. The description adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair plus resource: 'Add or complete a task in a crystal.' An agent can tell it manipulates tasks rather than goals, leases, or slices. However, it does not name crystal_goal_transition, the near-identical sibling, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus crystal_goal_transition or any other sibling, and no prerequisites or context. The description only restates the two operations without saying which situations call for each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_transient_leaseC
Create, clean, or promote a transient resource lease.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: lease, clean, or promote | |
| lease_id | No | Lease ID | |
| crystal_id | Yes | Crystal identifier | |
| description | No | Lease description | |
| resource_type | No | Resource type (default: workspace_branch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It lists three actions but does not disclose what 'clean' destroys, what 'promote' changes, whether leases expire, what permissions are required, or any side effects or reversibility constraints. This leaves major behavioral questions unanswered for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise, though its brevity contributes to the lack of actionable detail for a five-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, three mutation actions, no annotations, and no output schema, the description is too thin. It does not explain the lease lifecycle, action-specific prerequisites, which parameters apply to which actions, or expected outcomes, leaving the agent to infer critical invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented in the input schema, and the enum values are already fully specified. The description repeats the action names but adds no additional meaning about parameter interactions or expected values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('transient resource lease') and three operations ('create, clean, or promote'), so the general purpose is inferable. However, it does not explain what a transient lease is or distinguish this tool meaningfully from the many other crystal_* lifecycle tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as crystal_checkpoint, crystal_slice_fork, or crystal_melt. The action enum implies three possible uses, but the description does not state when each action is appropriate or what conditions should lead an agent to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_triageB
Triage workspace cave crystals for lifecycle hygiene and aging, categorizing them into keep (active), candidates for cleanup (concluded/abandoned with 0 open leases), and requires review.
| Name | Required | Description | Default |
|---|---|---|---|
| aging | No | Optional filter by aging classification state | |
| json_output | No | Output structured JSON array instead of markdown report (default: false) | |
| include_archived | No | Include archived crystals from cold storage (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the categorization rules (keep = active, cleanup = concluded/abandoned with 0 open leases, plus a review bucket), which is genuinely useful decision logic. It never states whether the operation is read-only or mutating, what permissions are needed, or whether it changes state, which is a notable gap for a triage tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the action and then the outcome categories; no filler. It is slightly clause-heavy but every clause contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must carry more weight; it partially compensates by enumerating the three result buckets. It still omits the return format, whether any state is modified, and any safety profile, leaving the agent with an incomplete picture of a triage operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so aging, json_output, and include_archived are already fully documented in the schema, establishing a baseline of 3. The description adds no additional parameter meaning beyond a passing reference to 'aging'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (triage) and resource (cave crystals) and defines the three output buckets precisely, so the agent knows what the tool produces. It does not, however, differentiate itself from siblings like crystal_list or crystal_melt, leaving the agent to infer when triage is preferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for lifecycle hygiene and aging' hints at intent but there is no explicit when-to-use statement, no prerequisites, and no named alternative among the many crystal_* siblings. The agent gets no guidance on when this tool is the right choice over crystal_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crystal_unarchiveA
Restore an archived crystal from cold storage (.ccrystals/archive/) back to the active cave.
| Name | Required | Description | Default |
|---|---|---|---|
| crystal_id | Yes | Identifier of the crystal to restore |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does add real behavioral context by naming the source location (.ccrystals/archive/) and the destination (active cave), i.e. a state transition, but it omits critical mutation semantics: whether restoring overwrites an existing active crystal with the same id, required permissions, and error behavior when the id is not archived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero waste, front-loaded with the verb and the resource. Nothing is padded or repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a fully documented schema and no output schema, the description supplies enough to invoke it correctly: what is restored and from/to where. The only meaningful gap is the overwrite/conflict behavior on an already-active id, which is minor at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so the schema already documents crystal_id ('Identifier of the crystal to restore'). The description adds no format, naming, or lookup guidance beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Restore) and resource (an archived crystal), and the 'archived' qualifier plus the archive path makes the inverse relationship to crystal_archive clear without opening either schema. It stops short of naming the sibling explicitly, which is what separates a 4 from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer 'use this to bring an archived crystal back' from the wording, but there is no explicit when-to-use, no precondition (e.g. crystal must currently be archived), and no reference to alternatives such as crystal_archive or crystal_hydrate.
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.
3 tool updates
v1.2.0- Added
crystal_connect - Removed
crystal_delete - Added
crystal_prune
3 tool updates
v1.1.0- Removed
crystal_list - Added
crystal_search - Added
crystal_stats
15 tool updates
v0.1.0- First observed
crystal_archive - First observed
crystal_artifact - First observed
crystal_batch - First observed
crystal_checkpoint - First observed
crystal_delete - First observed
crystal_goal_transition - First observed
crystal_hydrate - First observed
crystal_init - First observed
crystal_list - First observed
crystal_melt - First observed
crystal_slice_fork - First observed
crystal_task_transition - First observed
crystal_transient_lease - First observed
crystal_triage - First observed
crystal_unarchive
TDQS
Scored across 17 tools
Most tools target distinct lifecycle operations (init, checkpoint, task/goal transition, hydrate, archive/unarchive, prune, connect). A few overlap conceptually—checkpoint vs melt both manipulate DAG nodes, and several tools bundle multiple actions (crystal_artifact handles register/list/inspect; crystal_transient_lease handles create/clean/promote)—but descriptions keep boundaries clear enough.
Every tool follows the crystal_<snake_case_noun/verb> pattern consistently, with readable and predictable suffixes. No camelCase or stylistic drift.
17 tools is on the heavier side but justified by a rich domain (DAG lifecycle, leasing, artifacts, archival, bonding). Each tool maps to a distinct operation, though a couple could theoretically be merged.
Covers the full lifecycle: init, checkpoint, task/goal transitions, leases, forking, hydration, triage, archive/unarchive, melt, prune, connect, search, stats, and batch. Some minor gaps (e.g. no rename/update-metadata or explicit delete beyond prune) but core workflows are complete.
Maintenance
Related MCP Connectors
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
Related MCP Servers
- AlicenseBqualityCmaintenanceProduction-grade, autonomous Model Context Protocol (MCP) server that elevates AI models from stateless code generators into persistent, self-verifying software engineers.211MIT
- FlicenseNot gradedqualityDmaintenanceA robust, lightweight Model Context Protocol (MCP) server designed to empower your AI Agents with context-awareness, safe execution sandboxes, and dedicated thought logs.-
- AlicenseNot gradedqualityBmaintenanceLocal-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.49 npm3MIT

ellmos-homebase-mcpofficial
AlicenseCqualityBmaintenanceEnables local-first LLM orchestration with persistent memory, knowledge management, routing, swarm patterns, API probing, tests, automation planning, and plugin discovery via a stdio MCP server, using SQLite for offline storage.5162 npm1MIT