Skip to main content
Glama

OpsContext for AI Agents

AI that doesn't break what it can't see.

Claude Code, Cursor, and Copilot write code without seeing your servers β€” so they suggest the wrong port, restart the wrong service, deploy into the wrong env. OpsContext gives them eyes on what's actually running, plus a tamper-proof log of every change they make. Free core, no signup, runs entirely on your machine.

Previously published as @compr/contextengine-mcp. The 2.0 rename reflects what the project actually does: Claude Code sees the code, OpsContext sees the infra that runs it.

npm License: BSL-1.1 VS Code

OpsContext is an MCP server. It runs locally, snapshots your live infra (PM2 processes, nginx config, Docker containers, git status, cron jobs, redacted env), and exposes it via tools your AI coding agents (Claude Code, Cursor, Copilot, Windsurf, OpenClaw) can call in real time. Everything stays on your machine β€” no telemetry, no code uploads.

🌐 Browser Capture (Phase 1, shipped 2026-06): OpsContext now records prompts, assistant responses and tool calls from Claude.ai, ChatGPT.com, and your Claude Code terminal sessions in the same hash-chained audit log. Since 2.9.0 a prompt or a response is kept as its length and a keyed fingerprint, never its words; commands are kept with credentials redacted. Cross-surface drift detection becomes possible (e.g. catch when a model says one thing in the browser and another in the terminal). See Step 3 below.

Why

Claude Code already reads your CLAUDE.md, copilot-instructions.md, and source files. It has hooks, skills, and native memory. It does not β€” and structurally cannot β€” see what's running on your servers. Live process state, nginx routes, port conflicts across fleets, git working-tree drift across 30+ repos β€” that's the operational context AI agents lack.

OpsContext fills that gap, plus two compliance layers regulated industries demand from any agent stack:

  1. Operational visibility (the moat) β€” collectors for PM2 / nginx / Docker / git / cron / .env (redacted) / composer / systemd. Cross-project + check_ports + fleet HTML scoring. Claude Code can't see this; we feed it cleanly.

  2. Tamper-evident audit log (compliance) β€” hash-chained JSONL at ~/.contextengine/audit.log. Every state change recorded with prev_hash/hash. Designed to produce evidence aligned with SOC 2 CC7.2 (change monitoring) and ISO 27001 A.12.4.1 (event logging). These are evidence artifacts, not a certification. OpsContext is not itself SOC 2– or ISO 27001–certified; the audit log helps your org's auditor satisfy those controls.

  3. Policy-as-code hooks (enforcement) β€” declarative .contextengine/policy.json for secret patterns (with paths scoping), diff-aware doc coverage (replaces the workaround-y 4-hour staleness gate), deploy-verify hosts, and signed bypass tokens. Runs as a pre-commit hook layer alongside gitleaks.

Plus the persistent-memory + search features carried forward from the contextengine era:

  • πŸ” Hybrid Search β€” keyword (BM25) ships always; semantic re-ranking is opt-in

  • 🧠 Semantic Search (optional) β€” all-MiniLM-L6-v2 runs locally on CPU, no API keys. Install with npm install @huggingface/transformers (~250MB, native onnxruntime). BM25 alone is plenty for most workspaces; turn semantic on when you have many similar projects and want fuzzy matches.

  • πŸ“ Auto-discover β€” finds copilot-instructions.md, CLAUDE.md, .cursorrules, AGENTS.md across all projects

  • πŸ’» Code Parsing β€” extracts functions, classes, interfaces from TS/JS/Python source files

  • βš™οΈ Operational Intelligence β€” collects git, Docker, PM2, nginx, cron, package.json data

  • πŸ”’ Local-only β€” nothing leaves your machine

  • ⚑ Instant startup β€” keyword search ready immediately, embeddings load in background

  • πŸ’Ύ Session Persistence β€” AI agents can save/restore context across conversations

  • πŸ’‘ Learning Store β€” permanent operational rules that auto-surface in search results

  • πŸ›‘οΈ Protocol Firewall β€” progressive enforcement that ensures agents commit, document, and save learnings

  • πŸ”Œ Plugin Adapters β€” extend with custom data sources (Notion, Jira, RSS, etc.)

  • 🧩 MCP native β€” works with any MCP-compatible client (VS Code, Claude, Cursor, OpenClaw)

What OpsContext is NOT

  • Not a replacement for Claude Code, Cursor, or your IDE assistant. It runs alongside them as their ops/compliance backend. Code context = their job. Infra context + audit + policy = ours.

  • Not a code quality tool β€” it checks project structure (CI, tests, Docker, docs) and validates content depth, but won't tell you if your code is good. An A+ score means "well-organized for AI agents," not "production-ready."

  • Not required for tiny / solo projects β€” agents read copilot-instructions.md natively, and the audit log + policy gates earn their keep when there's more than one developer to coordinate or a compliance officer to answer to.

  • Not worth chasing 100% score β€” invest in your PIPELINES.md and SKILLS docs instead of score-chasing. Those prevent costly mistakes; the score keeps you honest.

Related MCP server: local-repo-mcp

Quick Start

1. Scaffold config (optional)

npx @compr/opscontext-mcp init

Detects your project type, creates contextengine.json + .github/copilot-instructions.md template.

2. Add to your MCP client

VS Code (recommended β€” per-project setup)

Create .vscode/mcp.json in your project root:

{
  "servers": {
    "contextengine": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@compr/opscontext-mcp"]
    }
  }
}

This activates ContextEngine when the workspace is open. Add this file to each project that needs it.

Note: VS Code deprecated MCP configuration in user settings.json. Use .vscode/mcp.json per workspace instead.

Claude Desktop β€” add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "ContextEngine": {
      "command": "npx",
      "args": ["-y", "@compr/opscontext-mcp"]
    }
  }
}

Cursor β€” add to MCP settings:

{
  "mcpServers": {
    "ContextEngine": {
      "command": "npx",
      "args": ["-y", "@compr/opscontext-mcp"]
    }
  }
}

OpenClaw β€” add ContextEngine as an MCP server in your OpenClaw config, or use the bundled skill:

# Option 1: Copy the skill to your OpenClaw workspace
cp -r node_modules/@compr/opscontext-mcp/skills/contextengine ~/.openclaw/workspace/skills/

# Option 2: Add as MCP server in openclaw.json
{
  "mcpServers": {
    "contextengine": {
      "command": "npx",
      "args": ["-y", "@compr/opscontext-mcp"],
      "env": { "CONTEXTENGINE_WORKSPACES": "~/Projects" }
    }
  }
}

3. Capture browser + Claude Code events (optional)

Phase-1 browser capture wires Claude.ai / ChatGPT.com / Claude Code into the same hash-chained audit log the MCP server already writes to. Three small commands; each one is independent.

3a. Generate the browser extension secret

npx @compr/opscontext-mcp init-extension-secret

Writes a 32-byte hex token to ~/.contextengine/extension-secret (mode 0600). The Chrome extension authenticates to your local MCP server with this secret β€” nobody else on your network can post events.

Verify:

ls -la ~/.contextengine/extension-secret    # β†’ -rw------- (0600)

Then load the unpacked extension and paste the secret into its Options page. Full install steps (build, load unpacked, paste secret): chrome-extension/README.md. (Chrome Web Store listing coming.)

3b. Auto-start the local server (macOS)

npx @compr/opscontext-mcp install-autostart

Installs a LaunchAgent so OpsContext binds 127.0.0.1:7842 on every login β€” that's the port the browser extension and the Claude Code hook both post to.

Verify:

curl http://127.0.0.1:7842/health           # β†’ {"ok":true,...}

Companion commands: uninstall-autostart, autostart-status.

3c. Wire Claude Code terminal sessions

npm i -g @compr/opscontext-mcp && opscontext install-claude-hook

(Prefer the global install here: the hook scripts keep absolute paths to the CLI, and an npx cache copy can be pruned.)

Adds UserPromptSubmit, PostToolUse, and SessionStart hook entries to ~/.claude/settings.json so every Claude Code prompt (kept as a length and a keyed fingerprint, not its words) and tool call (credentials redacted) lands in the same audit log as the browser events, plus a Stop entry: the session gate (2.7.0). A Claude Code turn cannot end while the repo's OpsContext session is older than the last commit; the agent is told which session to save, which session doc to update, and how far the agent docs are behind. No more "did you save the session?" at the end of a day. Details: npx @compr/opscontext-mcp session-gate --help.

Verify:

npx @compr/opscontext-mcp watch --once       # β†’ tails recent events; should show claude_code_* kinds after one prompt

If you have a contextengine.json with custom sources, add this to your shell profile (~/.zshrc or ~/.bashrc):

export CONTEXTENGINE_CONFIG="$HOME/path/to/contextengine.json"

Without this, ContextEngine falls back to auto-discovery (finds copilot-instructions.md etc.) but won't load your explicit sources, code dirs, or custom patterns.

That's it. ContextEngine auto-discovers your docs in ~/Projects.

πŸ“¦ VS Code Extension

ContextEngine has a free VS Code extension that provides proactive enforcement β€” no MCP setup required:

Install Extension

  • πŸ“Š Value meter β€” shows what ContextEngine saved you this session: learnings recalled, learnings saved, estimated time saved. Falls back to git status when no MCP session is active

  • πŸ“ˆ Live stats dashboard β€” click ℹ️ to see real-time session metrics (tool calls, recalls, nudges, truncations, time saved)

  • @contextengine chat β€” /status, /commit, /search, /remind, /sync in Copilot Chat

  • Escalating notifications β€” warns when files accumulate without commits

  • Terminal watcher β€” monitors commands with smart classification (git, deploy, database, python, build, test), credential redaction in logs, and stuck-pattern detection (alerts after 3+ consecutive failures)

  • One-click commit β€” commit all changes across all repos

The extension reads live metrics from the MCP server (via ~/.contextengine/session-stats.json). For search, learnings, sessions, and scoring β€” it uses the MCP server (npx @compr/opscontext-mcp).

⭐ PRO Features

OpsContext is source-available with a free tier. The free tier covers everything agents need β€” search, memory, sessions, and compliance enforcement. PRO adds team and ops intelligence across multiple projects. Licensed under BSL-1.1, which is not OSI-approved open source (converts to AGPL-3.0 on 2030-02-22). See docs/about.md for the full publisher disclosure and licensing intent.

Feature

Free

PRO

Hybrid search (keyword + semantic)

βœ…

βœ…

Persistent learnings

βœ…

βœ…

Session save/load

βœ…

βœ…

End-of-session enforcement

βœ…

βœ…

Protocol Firewall (agent compliance)

βœ…

βœ…

VS Code extension (git monitor, chat)

βœ…

βœ…

Plugin adapters

βœ…

βœ…

Project health score (A+ to F)

β€”

βœ…

Compliance audit

β€”

βœ…

Port conflict detection

β€”

βœ…

Multi-project discovery

β€”

βœ…

HTML score reports

β€”

βœ…

Pricing

Plan

Price

Machines

Pro

CHF 2/mo

2

Team

CHF 12/mo

5

Enterprise

CHF 36/mo

10

β†’ Get PRO Β· Annual plans save 17%

# Activate after purchase
npx @compr/opscontext-mcp activate

CLI Usage (no MCP required)

ContextEngine also works as a standalone CLI tool β€” no MCP client setup needed:

# Search across all your project knowledge
npx @compr/opscontext-mcp search "docker nginx"
npx @compr/opscontext-mcp search "rate limiting" -n 10

# List all indexed sources
npx @compr/opscontext-mcp list-sources

# Discover and analyze all projects
npx @compr/opscontext-mcp list-projects

# AI-readiness score β€” no argument scores the CURRENT project only
npx @compr/opscontext-mcp score
npx @compr/opscontext-mcp score ContextEngine          # by project name
npx @compr/opscontext-mcp score ~/Projects/PLANK.io    # or by path

# Score every discovered project (writes a SCORE.md into each β€” opt in explicitly)
npx @compr/opscontext-mcp score --all
npx @compr/opscontext-mcp score --all --no-save        # scan without writing

# Visual HTML report (opens in browser)
npx @compr/opscontext-mcp score --html
npx @compr/opscontext-mcp score ContextEngine --html

# List permanent learnings (optionally by category)
npx @compr/opscontext-mcp list-learnings
npx @compr/opscontext-mcp list-learnings security

# Show live MCP session stats (value meter)
npx @compr/opscontext-mcp stats

# Run compliance audit across all projects
npx @compr/opscontext-mcp audit

# Scaffold config for a new project
npx @compr/opscontext-mcp init

# Show all commands
npx @compr/opscontext-mcp help

CLI mode uses keyword search (BM25) which is instant β€” no model loading required.

Tools (20)

Tool

Description

Tier

search_context

Hybrid keyword+semantic search with mode selector

Free

list_sources

Show all indexed sources with chunk counts

Free

read_source

Read full content of a knowledge source by name

Free

reindex

Force full re-index of all sources

Free

save_session

Save key-value entry to a named session

Free

load_session

Load all entries from a named session

Free

list_sessions

List all saved sessions

Free

delete_session

Delete a saved session

Free

end_session

Pre-flight checklist β€” uncommitted changes + doc freshness

Free

save_learning

Save a permanent operational rule β€” auto-surfaces in search

Free

list_learnings

List all permanent learnings, optionally by category

Free

delete_learning

Remove a learning by ID

Free

import_learnings

Bulk-import learnings from Markdown or JSON files

Free

audit_verify

Verify tamper-evident audit log chain (evidence aligned with SOC 2 CC7.2, ISO 27001 A.12.4.1 β€” not a certification)

Free

activate

Activate a PRO license on this machine

Free

activation_status

Check current license status

Free

list_projects

Discover and analyze all projects (tech stack, git, docker)

PRO

check_ports

Scan all projects for port conflicts

PRO

run_audit

Compliance agent β€” git, hooks, .env, Docker, PM2, versions

PRO

score_project

AI-readiness scoring 0-100% with letter grades (A+ to F)

PRO

All tools are wrapped by the Protocol Firewall β€” a built-in enforcement layer that ensures agents save learnings, persist sessions, and commit code. No action needed from users; it's automatic.

Configuration

ContextEngine works zero-config β€” it auto-discovers documentation files in ~/Projects.

For full control, create a contextengine.json:

{
  "sources": [
    { "name": "Team Runbook", "path": "./docs/RUNBOOK.md" },
    { "name": "Architecture", "path": "./docs/ARCHITECTURE.md" }
  ],
  "workspaces": ["~/Projects"],
  "patterns": [
    ".github/copilot-instructions.md",
    "CLAUDE.md",
    ".cursorrules",
    "AGENTS.md"
  ],
  "codeDirs": ["src"],
  "adapters": [
    { "name": "feeds", "module": "./adapters/rss-adapter.js", "config": { "feeds": ["https://blog.example.com/rss.xml"] } }
  ]
}

Auto-discovered patterns

Pattern

Description

.github/copilot-instructions.md

GitHub Copilot project instructions

.github/instructions/copilot-instructions.md

VS Code instructions folder format

.github/SKILLS.md

Team skills inventory

CLAUDE.md

Claude Code project instructions

.cursorrules

Cursor AI rules

.cursor/rules

Cursor AI rules (folder format)

AGENTS.md

Multi-agent instructions

CONTEXT_MAP.md

File-to-concern mapping for agents

Config resolution order

Which config file is read (both the search corpus and the project fleet):

Priority

Source

1

CONTEXTENGINE_CONFIG env var

2

./contextengine.json

3

~/.contextengine.json

Which project fleet is scanned β€” this is what score --all, audit, list_projects and check_ports operate on:

Priority

Source

1

CONTEXTENGINE_WORKSPACES env var (colon-separated)

2

workspaces in the config file

3

~/Projects auto-discover

The env var wins. It is set per-invocation, so it is the most specific statement of intent β€” and it is what the MCP config blocks in this README set. Use it to scope a run:

CONTEXTENGINE_WORKSPACES=/tmp/sandbox npx @compr/opscontext-mcp score --all

Note: the search corpus (search, reindex, list-sources) still prefers the config file's workspaces over the env var. If you rely on the env var to scope indexing, set CONTEXTENGINE_CONFIG to a config without workspaces, or unset workspaces there.

Plugin Adapters

Extend ContextEngine with custom data sources via the adapter interface. Adapters are ES modules that collect data and return searchable chunks.

{
  "adapters": [
    {
      "name": "notion",
      "module": "./adapters/notion-adapter.js",
      "config": { "token": "$NOTION_API_TOKEN" }
    },
    {
      "name": "feeds",
      "module": "./adapters/rss-adapter.js",
      "config": { "feeds": ["https://blog.example.com/rss.xml"], "maxItems": 20 }
    }
  ]
}

Creating an Adapter

An adapter is a JS/TS module that exports an object with a collect() method:

// my-adapter.js
export default {
  name: "my-source",
  description: "Fetches data from My Source",

  validate(config) {
    if (!config?.apiKey) return "Missing apiKey";
    return null;
  },

  async collect(config) {
    // Fetch data and return Chunk[]
    return [{
      source: "my-source",
      section: "## Title",
      content: "Content to index...",
      lineStart: 1,
      lineEnd: 1,
    }];
  },
};

See examples/adapters/ for complete Notion and RSS adapter examples.

Adapter Features

  • Environment variable resolution β€” use "$ENV_VAR" syntax in config

  • Factory pattern β€” export createAdapter(config) for per-instance configuration

  • Validation β€” optional validate() method checks config before collection

  • Lifecycle hooks β€” optional init() and destroy() for setup/cleanup

  • Safe execution β€” adapter failures never crash the server

How It Works

Your Project Files           ContextEngine              AI Agent
+-----------------+    +-------------------+    +---------------+
| copilot-        |    | 1. Parse & chunk  |    | GitHub        |
|  instructions   |--->| 2. Embed vectors  |<-->|  Copilot      |
| CLAUDE.md       |    | 3. Hybrid search  |    | Claude        |
| source code     |    | 4. Return top-k   |    | Cursor        |
| git/docker/pm2  |    | 5. Persist state  |    | Windsurf      |
+-----------------+    +-------------------+    +---------------+
                            stdio (MCP)
  1. Parse β€” chunks markdown + extracts functions from source code

  2. Embed β€” sentence embeddings run locally on CPU (no API keys)

  3. Search β€” hybrid keyword + semantic scoring

  4. Collect β€” operational data from git, package.json, Docker, PM2, nginx

  5. Audit β€” compliance checks, port conflicts, AI-readiness scoring

Scoring

The score command evaluates project AI-readiness across documentation, infrastructure, code quality, and security β€” producing a letter grade from A+ to F.

Grade scale: A+ (90%+) Β· A (80%+) Β· B (70%+) Β· C (60%+) Β· D (50%+) Β· F (<50%)

What gets scored, and what gets written

score writes a SCORE.md into each project it scores. Because that is a write into your repositories, the scope is never inferred:

Command

Scores

Writes SCORE.md to

score

the project you are standing in (walks up to the repo root)

that one project

score <name> / score <path>

that one project

that one project

score --all

every discovered project

every discovered project

any of the above --no-save

as above

nothing

A project argument may be a name (PLANK.io) or a path (~/Projects/PLANK.io, ../PLANK.io, or an absolute path). A path also works for projects outside your configured workspaces.

Project Naming & Structure Tips

The scorer discovers projects from your configured workspaces directories (default: ~/Projects). Each subdirectory is treated as a separate project. For best results:

  • Use descriptive folder names β€” the folder name becomes the project name in reports

  • Keep one project per directory β€” monorepos should have a root copilot-instructions.md

  • Real files over symlinks β€” each project should have its own configs with project-specific content

  • Install your tools β€” a linting config without the linter installed doesn't count as linting

Architecture

TypeScript monorepo β€” MCP server + CLI + search engine + operational collectors.

See the npm package for installation and usage.

Development

npm install @compr/opscontext-mcp
npx @compr/opscontext-mcp help

Requirements

  • Node.js 18+

  • No API keys needed β€” embeddings run locally

Contributing

Feedback, feature requests, and bug reports welcome β€” email yannick@compr.ch.

If you're using ContextEngine, we'd love to hear about it.

Privacy & Data Security

ContextEngine runs 100% on your machine. Your code, your data, your rules.

Everything happens locally β€” search, scoring, learnings, sessions, embeddings. No project data is ever sent to an external server.

What stays on your machine (always)

Data

Storage

Leaves your machine?

Project files & source code

Read locally, never stored externally

❌ Never

Learnings (operational rules)

~/.contextengine/learnings.json

❌ Never

Sessions (decisions, progress)

~/.contextengine/sessions/

❌ Never

Session stats (value meter)

~/.contextengine/session-stats.json

❌ Never

Search index & embeddings

In-memory + ~/.contextengine/embeddings.bin (vectors) and ~/.contextengine/index/ (shared index)

❌ Never

Git history & branches

Local git commands

❌ Never

Dependencies & package.json

Read locally

❌ Never

.env variable names

Read locally (values are never read)

❌ Never

What the activation server receives (PRO only)

Data

When

Purpose

License key (CE-XXXX-...)

Activation + daily heartbeat

Validate subscription

Machine ID (SHA-256 hash)

Activation + daily heartbeat

Enforce machine limit

Email

Activation only

Tie the licence to an account

Package version

Activation only

Recorded with your activation, so support knows which version a machine runs

Platform/arch (e.g., darwin/arm64)

Activation only

Compatibility check

Licence bundle version

Daily heartbeat

Compatibility marker carried in the signed licence

That is the complete list. The activation request sends exactly six fields and the heartbeat exactly three β€” enforced by a lock comment in src/activation.ts that forbids adding a seventh field reflecting usage.

The server never receives: project names, file contents, learnings, sessions, git history, dependencies, code, .env variables, or anything about your actual work.

These are the only two network calls the tool makes. activate and heartbeat, both in src/activation.ts. Nothing else in the codebase opens a connection β€” verify it yourself with grep -rn "fetch(" src/.

What's obfuscated, and what isn't

One file in the published package is deliberately unreadable: dist/rubric.js, which holds the scoring thresholds (what earns which points). Those values are commercial IP under BSL-1.1, and knowing them exactly makes an AI-readiness score easy to game by padding files to hit a number rather than doing the work.

What that hides: values. What it does not hide: behaviour. No code path, network call, file access, or data flow is concealed anywhere in this package. The scoring logic itself, every collector, the search ranker, and both network calls above ship as readable JavaScript β€” and the full source is public at FASTPROD/ContextEngine. If a privacy claim on this page were false, the code that broke it would be right there to find.

Why this matters

Most AI coding tools (Copilot, Cursor, Codeium) send your code to external servers for processing. ContextEngine takes the opposite approach β€” embeddings run locally on CPU, search runs locally, and all persistent state stays in ~/.contextengine/ on your disk. The only network call is a lightweight license check for PRO users.

License

BSL-1.1 (Business Source License) β€” see LICENSE.

You may use ContextEngine for any purpose, including production, except offering it as a hosted/managed service competing with ContextEngine PRO/Team/Enterprise.

Converts to AGPL-3.0 on February 22, 2030.

For commercial licensing: yannick@compr.ch


Publisher

OpsContext is built by PROD LLC, an operating brand of CSS LLC (Cross Stream Solutions SΓ rl), a Swiss company incorporated in 2005. The engineering team works under the FASTPROD name, which is also the GitHub organisation hosting this repository.

The VS Code Marketplace lists the extension under the legal-parent publisher ID css-llc; the npm package is published under the @compr scope. Both belong to the same entity.

PROD LLC also operates these products. The full, current list is on compr.fr.

Product

What it does

Site

CROWLR

Recruitment software: applicant tracking for companies, a job app for candidates, live event sensing

admin.crowlr.com Β· app.crowlr.com Β· crowlr.io

KONIVE

AI career agent: salary negotiation and job matching

konive.com

INVOC

Grocery scanner app for shoppers, brand monitoring for food companies

invoc.io

INVOC.me

Demand forecasting shared by operations, sales and finance

invoc.me

PLANK

Hyperlocal social app for iOS and Android

plank.io

compR

Company site, and candidate credibility scoring

compr.fr Β· compr.app

Contact: yannick@compr.ch. Full corporate disclosure at docs/about.md.

Available Tools

22 tools
activateA

Activate a ContextEngine Pro license to unlock premium tools (score_project, run_audit, check_ports, list_projects, HTML reports). Get a license at https://api.compr.ch/contextengine/pricing

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail associated with the license
license_keyYesYour ContextEngine license key

TDQS

A3.7/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 full burden. It lacks disclosure of important behavioral traits such as idempotency, error handling for invalid keys, network requirements, or side effects of activation.

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

Conciseness5/5

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

The description is extremely concise with two sentences: first stating purpose and listing unlocked tools, second providing a URL. No unnecessary words, front-loaded.

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?

Given the tool's simplicity (2 params, no output schema), the description covers the basic activation purpose but lacks behavioral details and does not reference related tools like activation_status for context.

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% with both parameters described. The tool description does not add further meaning beyond the schema, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Activate a ContextEngine Pro license') and the result ('unlock premium tools'). It lists specific tools unlocked, distinguishing it from siblings like activation_status.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (to activate a license) and includes a link to obtain one. However, it does not explicitly mention when not to use it or alternatives like activation_status.

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

activation_statusA

Check current ContextEngine license status, plan, and available premium tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It clearly indicates a read-only operation via 'Check'. While it could mention authentication or side effects, for a simple status check with no parameters, it is sufficiently transparent.

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

Conciseness5/5

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

The description is a single sentence of eight words, directly front-loading the key information with no unnecessary text.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately specifies what the tool checks (license status, plan, premium tools). It provides enough context for an agent to understand the tool's purpose and expected return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so baseline 4 applies. The description does not need to add parameter details since none exist.

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

Purpose5/5

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

The description clearly states the verb 'Check' and the specific resource 'ContextEngine license status, plan, and available premium tools'. It directly distinguishes from the sibling tool 'activate' which implies a mutation.

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

Usage Guidelines3/5

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

The description implies usage when license information is needed but does not explicitly state when not to use it or provide alternatives. Given the sibling tools, the context is clear, but no direct guidance is given.

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

agent_costA

Multi-agent cost report from Claude Code's own transcripts on this machine: tokens moved (cache read/write, fresh input, output), valued cost at API list prices (marked NOTIONAL on a subscription, UNPRICED when no rate matches), capacity intensity (subagents, failed, died at window, tool calls per agent, cache reuse), top runs, and context_burn / fanout_without_canary signals. Call it after a fan-out to read what it consumed, or before one to compare with the last. Thresholds come from .contextengine/policy.json agent_cost, else built-in defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
runNoFilter by run id (wf_... or task group id)
topNoHow many runs to list (default 10)
daysNoOnly runs started within the last N days
jsonNoReturn the structured JSON report instead of the text one
projectNoFilter by project slug as it appears in ~/.claude/projects (e.g. -Users-yan-Projects-ContextEngine)
sessionNoFilter by parent session id
policy_dirNoAbsolute path of the repo whose .contextengine/policy.json supplies agent_cost thresholds and rates. Default: the MCP server's working directory, which under launchd is the home dir, not a repo; the report names which source it used on its 'thresholds:' line

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It details the data source (local transcripts), cost basis (API list prices), special markers (NOTIONAL/UNPRICED), capacity metrics, and threshold fallback from policy.json. It implies a read-only report but never explicitly states side effects or access requirements, so it's not a 5.

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

Conciseness4/5

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

Three dense sentences front-load the report's contents, then give usage timing and threshold sources. The metric enumeration makes it longer than minimal, but every sentence contributes information the agent needs.

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

Completeness4/5

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

The description covers what the report contains, where the data comes from, pricing caveats, threshold sources, and when to call it. Given no output schema and no annotations, this is fairly complete, though it lacks an explicit example and an unambiguous side-effect statement.

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 is 3. The description adds general context about thresholds and report contents but does not add per-parameter meaning beyond what each schema property already states.

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

Purpose5/5

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

States it produces a 'Multi-agent cost report' from Claude Code's own transcripts on this machine, listing specific metrics (tokens, cost, capacity intensity, top runs, signals). The resource and scope are precise and clearly differentiate it from sibling tools like run_audit or score_project.

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

Usage Guidelines4/5

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

Gives explicit timing guidance: 'Call it after a fan-out to read what it consumed, or before one to compare with the last.' This is clear context, but the description does not name alternative tools or when-not-to-use conditions, so it stops short of a 5.

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

audit_verifyA

Verify the integrity of the local audit log chain. Returns OK + record count, or BROKEN + break index when a record has been edited or the chain otherwise diverges. Produces evidence aligned with SOC 2 CC7.2 (change monitoring) and ISO 27001 A.12.4.1 (event logging) β€” evidence artifacts, not a certification (OpsContext is not itself SOC 2– or ISO 27001–certified; see docs/compliance/). The audit log lives at ~/.contextengine/audit.log and records every state-changing operation (learning save/delete/import, session save/delete, activation activate/deactivate) as a hash-chained JSONL line.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoISO date β€” restrict integrity report counters to records on/after this timestamp (chain still verified end-to-end)
untilNoISO date β€” restrict counters to records on/before this timestamp

TDQS

A3.6/5.0
Behavior4/5

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

Without annotations, the description must disclose behavioral traits. It explains the return values (OK+count or BROKEN+index), the existence and location of the audit log file, and the compliance evidence context. It does not contradict any annotations (none present).

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 well-structured: first sentence states purpose, second details return values, third adds compliance context. It is front-loaded and informative, though the compliance evidence sentence is relatively long and might be streamlined.

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

Completeness4/5

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

Given no output schema, the description adequately explains return values (OK+count, BROKEN+index) and the nature of the audit log. It does not cover error cases (e.g., log file missing), but the overall context is sufficiently complete for a verification tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters (since, until) with 100% coverage. The description adds context by explaining that these parameters restrict counters while the chain is still verified end-to-end. This goes beyond the schema's descriptions.

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

Purpose4/5

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

The description clearly states that the tool verifies the integrity of the local audit log chain and returns OK or BROKEN results. It specifies the resource (audit log) and the action (verify). However, it does not explicitly distinguish this tool from its sibling 'run_audit', which may also perform audit-related functions.

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 lacks guidance on when to use this tool versus alternatives. It does not mention prerequisites, conditions, or scenarios where this tool is preferred over sibling tools like 'run_audit' or others.

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

check_portsA

Scan all projects for port declarations (ecosystem.config.js, docker-compose.yml, .env, package.json) and detect port conflicts. Returns a port allocation map with conflict warnings. Requires Pro license.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It describes scanning and returning a conflict map, implying read-only behavior. However, it does not explicitly state non-destructive nature, but the 'scan' and 'returns' language is sufficient.

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

Conciseness5/5

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

Extremely concise: two sentences. First covers purpose and files, second covers output and license. No wasted words.

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

Completeness4/5

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

Given no output schema, the description mentions output type (port allocation map with warnings), which is helpful. It could add more detail on map format or error handling, but for a simple tool with no params, it's quite complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds no param info (unnecessary), but mentions file types which provides context. Baseline for zero params is 4.

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

Purpose5/5

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

The description clearly states it scans all projects for port declarations and detects conflicts, specifying file types. The verb 'scan' and resource 'projects' are specific, and it distinguishes from siblings which focus on other areas like activation, sessions, audits.

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

Usage Guidelines4/5

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

The description mentions a prerequisite (Pro license) and implies usage for port conflict detection. It lacks explicit when/not-to-use or alternatives, but given no sibling tool does port checking, it's clear enough.

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

delete_learningA

Delete a learning by its ID. Use list_learnings first to find the ID of the learning you want to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the learning to delete

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It states the destructive action ('delete') but lacks disclosure of side effects, permissions, reversibility, or error behavior. The minimal information is insufficient 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.

Conciseness5/5

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

Two sentences, no redundancy, front-loaded with action. Every word serves a purpose. Highly efficient.

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?

Given the simple single-parameter nature, the description covers the essential action and provides a useful prerequisite. However, it omits details about return values, error handling, and behavioral nuances that would aid an agent in robust usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'id' parameter is fully described in the schema (100% coverage). The description repeats the ID usage but adds no additional semantic meaning beyond the schema. The prerequisite hint (list_learnings) is useful but not directly parameter-related.

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

Purpose5/5

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

The description clearly states the action ('Delete a learning by its ID') and distinguishes it from siblings like list_learnings and import_learnings. The verb 'delete' and resource 'learning' are specific and unambiguous.

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

Usage Guidelines4/5

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

Explicitly advises using list_learnings first to obtain the ID, providing a clear prerequisite and workflow direction. Does not mention when not to use or name specific alternatives, but the guidance is helpful.

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

delete_sessionA

Delete a saved session by name. Returns success/not-found. Use for cleanup of stale or obsolete session context.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSession name to delete

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. Mentions 'Returns success/not-found,' which indicates outcomes. However, lacks details on irreversibility, permissions needed, or side effects.

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

Conciseness5/5

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

Two sentences: first states action and return, second provides usage context. Every sentence adds value, no redundancy.

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

Completeness4/5

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

For a simple delete tool with one parameter, the description covers the action, return, and usage. Could mention irreversibility, but the 'not-found' return implies the session may not exist. Adequate given simplicity.

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% with the 'name' parameter already described. The description adds 'by name' which matches the schema, but no additional semantic value beyond what's in the schema.

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

Purpose5/5

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

Clearly states 'Delete a saved session by name' with specific verb and resource. Distinguishes from sibling tools like save_session and load_session by focusing on deletion. Also mentions return behavior.

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

Usage Guidelines4/5

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

Explicitly says 'Use for cleanup of stale or obsolete session context,' which provides clear context for when to use. Does not explicitly mention when not to use, but the intent is clear enough.

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

drift_statusA

Returns active drift / loop / stuck-tool / fabrication / silent-failure signals detected over the recent audit-log window. Use to self-check before starting a major task phase. If any 'critical' signal is active (fabrication_suspect or silent_failure), pause and surface to the human.

ParametersJSON Schema
NameRequiredDescriptionDefault
minSeverityNoFloor filter for severity. Default 'info' (everything).
windowSecondsNoLook-back window in seconds. Default 300 (5 min).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description fully discloses the tool's behavior: it returns specific signal types and includes a recommended action for critical cases. It does not mention side effects but implies a read-only operation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the purpose, and contains no wasted words. Every sentence adds value.

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

Completeness4/5

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

The description covers the output (signal types) and a usage recommendation, making it sufficiently complete for a simple read tool without output schema. It lacks details on parameter effects but the schema covers those.

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%, so the description doesn't need to explain parameters. It does not add any extra meaning beyond the schema, which is adequate.

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

Purpose5/5

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

The description clearly states it returns active drift/loop/fabrication signals, using specific verbs and resource types. It distinguishes itself from sibling tools like run_audit by focusing on a specific self-check function.

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

Usage Guidelines4/5

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

The description explicitly advises when to use ('before starting a major task phase') and what to do if critical signals are found ('pause and surface to human'). While it doesn't discuss when not to use, the guidance is actionable and clear.

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

end_sessionA

MUST be called before ending any coding session. Checks all project repos for uncommitted changes, verifies documentation freshness (copilot-instructions.md, SKILLS.md, session docs), and returns a checklist of required actions. Will report PASS/FAIL for each check. The AI agent should resolve all FAIL items before ending.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Although the description details what the tool checks and returns, it does not explicitly state that it is read-only or non-destructive, nor does it discuss potential side effects or permissions. With no annotations provided, the description falls short of fully disclosing behavioral traits.

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

Conciseness5/5

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

The description is concise with three short sentences. It front-loads the critical usage instruction ('MUST be called before ending any coding session') and provides all necessary details without extraneous information.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description covers the essential aspects: what it checks, what it returns (PASS/FAIL checklist), and the required follow-up action. It could mention idempotency or the absence of side effects, but it is generally complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100%. The description does not need to add parameter information. Baseline score for zero parameters is 4, and the description meets this standard.

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

Purpose5/5

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

The description clearly states the tool's purpose: to be called before ending a coding session, checking for uncommitted changes and documentation freshness. It uses a specific verb (end/check) and resource (session), and distinguishes its role from sibling tools like save_session or delete_session by focusing on pre-termination verification.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool (before ending any coding session) and what to do after (resolve all FAIL items). It lacks explicit exclusion or mention of alternatives, but the context is clear enough for an AI agent to decide when to invoke it.

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

import_learningsA

Bulk-import learnings from a Markdown or JSON file. By default only MARKED learnings are imported: inline bullets with a [category] prefix, anything inside a *LEARNINGS.md file, anything under a heading that says learnings / lessons / gotchas / rules, and JSON arrays of {category, rule, context}. Set permissive=true to also import every H3 heading, bold bullet and table row (H2=category, H3=rule, bullets=context). Deduplicates against existing learnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name to tag all imported learnings with (e.g., 'FC_project')
file_pathYesAbsolute path to the Markdown (.md) or JSON (.json) file to import from
permissiveNoImport every heading, bold bullet and table row as a rule (the pre-2.5.7 behaviour). Default false: only marked learnings.
default_categoryNoDefault category for rules where category cannot be inferred. Defaults to 'other'.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it delivers: it details exactly what counts as marked, what permissive=true adds, and states deduplication. It does not mention side effects, errors, or write confirmation, but the import behavior is well specified.

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

Conciseness5/5

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

The description is dense but every sentence adds relevant information: file types, default marked behavior, permissive mode, and deduplication. It is front-loaded with the core purpose and avoids filler.

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

Completeness4/5

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

Given the tool's moderate complexity, the description covers the core import rules, deduplication, and parameter behavior. It does not describe the return value or error handling, but no output schema exists and the provided detail is sufficient for correct invocation.

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 parameters are already documented in the schema. The description reinforces the permissive parameter's meaning and adds detail about rule extraction, but it does not materially extend the meaning of project or default_category beyond their schema descriptions.

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

Purpose5/5

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

The description clearly states the tool bulk-imports learnings from Markdown or JSON files, with specific verb and resource. It is easily distinguished from the sibling save_learning, which implies single-item saving.

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

Usage Guidelines4/5

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

The description explains the default marked-only behavior and when to set permissive=true, giving clear context for typical use. It does not explicitly mention alternatives like save_learning, but 'bulk-import' communicates the batch use case well enough.

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

list_learningsA

List all permanent learnings, optionally filtered by category. Shows operational rules that have been discovered across sessions. Use search_context to find learnings by keyword β€” they're automatically included in search results.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly learnings created at or after this boundary: 'today', 'yesterday' (Europe/Zurich calendar days) or an ISO date/instant. Every entry shows its created instant, UTC plus Europe/Zurich.
categoryNoFilter by category (deployment, api, database, etc.). Omit to show all.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds meaningful context: learnings are 'permanent', contain 'operational rules that have been discovered across sessions', and are automatically indexed in search results. It does not explicitly state read-only safety or return behavior, but 'List' combined with the permanence and search-integration notes is sufficient context for a simple read tool.

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

Conciseness5/5

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

The description is two efficient sentences with no filler. It front-loads the main action, clarifies the resource nature, and then provides the sibling-tool routing, all in minimal space.

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

Completeness4/5

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

For a simple, optional-parameter list tool, the description covers the core semantics, the alternative keyword-search path, and the distinctive permanence/indexing behavior. The `since` parameter is left entirely to the schema, but the schema covers it thoroughly, and there is no output schema to explain. Minor gaps such as ordering or pagination are not critical for this 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 documents both optional parameters in detail, including the 'since' boundary semantics and category examples. The description adds only the category-filter concept, which is already present in 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.

Purpose5/5

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

The description opens with a specific verb and resource: 'List all permanent learnings, optionally filtered by category.' It clearly distinguishes this tool from sibling search_context, which is routed to for keyword-based lookup.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when to use search_context instead ('Use search_context to find learnings by keyword'), and explains that learnings are automatically included in search results. This gives a clear decision rule between two overlapping tools.

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

list_projectsA

Discover and analyze all projects in the workspace. Shows tech stack (framework, runtime, key dependencies), infrastructure (git, docker, pm2), and git remote status for each project. Requires Pro license.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the Pro license requirement and details the output content (tech stack, infrastructure, git status). This is sufficient for a read-only listing tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and every sentence adds value. No extraneous text.

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

Completeness5/5

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

Given zero parameters, no output schema, and no annotations, the description provides enough context: what the tool does, what it returns (specific fields), and a prerequisite. The tool is simple and fully covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so baseline score is 4. The description does not need to add parameter information beyond the empty schema.

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

Purpose5/5

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

The description clearly states the tool discovers and analyzes all projects in the workspace, specifying what information is shown (tech stack, infrastructure, git remote status). It distinguishes from sibling tools that list other entities like sessions or sources.

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

Usage Guidelines3/5

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

The description implies use for project discovery and analysis but lacks explicit when-to-use or when-not-to-use guidance. It mentions a Pro license requirement but does not reference alternatives.

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

list_sessionsA

List all saved sessions. Shows session names, entry counts, and timestamps. Use to discover what context is available from previous conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It clearly states it lists all sessions with specific fields, implying a read-only operation. Could add more on scope (e.g., current user) or confirm no side effects, but current clarity is high.

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

Conciseness5/5

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

Two sentences, front-loaded with key action and output details. Every sentence adds value with no redundancy.

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

Completeness4/5

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

No output schema exists, but description sufficiently describes return fields. Among many sibling tools, this description is adequate for a simple list operation; could elaborate on ordering or pagination but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no parameters with 100% schema coverage. Description adds no parameter details, which is acceptable; baseline 4 is appropriate as schema already covers all.

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

Purpose5/5

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

Description explicitly states the tool lists all saved sessions and specifies the returned fields (session names, entry counts, timestamps). It distinguishes from sibling tools like load_session or delete_session by focusing on discovery and listing.

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

Usage Guidelines4/5

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

Description gives a clear use case: 'discover what context is available from previous conversations.' It implies when to use it, but does not explicitly mention when not to use it or compare to alternatives like search_context.

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

list_sourcesA

List all knowledge sources indexed by ContextEngine, each with a one-line summary (from the file's own head: frontmatter description, title plus first sentence, or module docstring), status (found/missing) and chunk counts. Read the summary to pick the right source before calling read_source.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It reveals a meaningful behavioral trait: summaries are derived from the file's own head (frontmatter description, title plus first sentence, or module docstring), and it exposes the status dimension (found/missing). It does not explicitly state that listing is read-only, but 'List' strongly implies a non-mutating operation.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core action and output, packs the summary-composition rule into a parenthetical, and ends with a clear directive for downstream use. Every sentence earns its place.

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

Completeness5/5

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

Given there are no parameters and no output schema, the description fully covers what an agent needs: the scope ('all knowledge sources indexed by ContextEngine'), the exact fields returned (one-line summary, status, chunk counts), the summary heuristic, and the recommended next step. Nothing essential is missing for a listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing the description needs to add about parameter meaning. The baseline for zero-parameter tools is 4, and the description appropriately focuses on output rather than inventing parameter details.

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

Purpose5/5

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

The description states a specific verb and resource: 'List all knowledge sources indexed by ContextEngine.' It also details the output contents (one-line summary, status, chunk counts), making the tool's purpose concrete and immediately distinguishable from the sibling read_source, which presumably retrieves a single source.

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

Usage Guidelines4/5

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

The description gives clear usage context: 'Read the summary to pick the right source before calling read_source.' This effectively tells an agent when to use list_sources as a precursor to read_source. It does not explicitly cover when not to use it or mention other alternatives such as search_context, so it stops short of a 5.

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

load_sessionA

Load a previously saved session by name. Returns all stored key-value entries with timestamps. Use at the start of a session to restore context from a previous conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYesSession name to load

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must disclose behavior. It confirms load is read-only by stating 'Load' and 'Returns' without mentioning side effects. However, it does not clarify if loading activates the session or causes any internal state changes beyond retrieval, leaving some ambiguity.

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

Conciseness5/5

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

Two sentences: first defines purpose and output, second provides usage guidance. No wasted words, front-loaded with essential information. Perfectly concise and well-structured.

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?

Tool has no output schema, so description must compensate. It states 'Returns all stored key-value entries with timestamps' but lacks specifics on format, structure, or error handling (e.g., session not found). Coverage is adequate for basic understanding but not fully complete given the absence of schema.

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 parameter 'session' is already described as 'Session name to load' in the schema. Description adds minimal extra meaning ('by name' and context hint). Baseline score of 3 is appropriate as schema does the heavy lifting.

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

Purpose5/5

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

Description clearly states 'Load a previously saved session by name' and specifies output 'Returns all stored key-value entries with timestamps'. The verb 'load' combined with resource 'session' is specific, and the usage hint distinguishes it from siblings like save_session, delete_session, and list_sessions.

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

Usage Guidelines4/5

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

Explicitly advises 'Use at the start of a session to restore context from a previous conversation'. Provides a clear when-to-use scenario. Does not explicitly state when not to use or mention alternatives, but the sibling list implies other session management tools for different purposes.

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

read_sourceA

Read the full content of a specific knowledge source by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_nameYesName of the source (from list_sources output)

TDQS

A3.8/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 indicates a read operation but lacks details about side effects, size limits, or return format. The behavioral disclosure 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.

Conciseness5/5

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

The description is a single concise sentence that is front-loaded and directly states the purpose without unnecessary words.

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

Completeness4/5

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

Given the simplicity (1 parameter, no output schema, no annotations), the description is fairly complete. It explains the primary function but could mention what 'full content' entails (e.g., plain text, structured data).

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 description does not add meaning beyond the schema's parameter description. The baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('Read'), the resource ('knowledge source'), and the method ('by name'). It effectively distinguishes from sibling tools like list_sources and search_context.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. The usage context is implied from the sibling tool names, but no direct guidance is provided.

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

reindexA

Force a full re-index of all knowledge sources. Use after adding new files or changing contextengine.json.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavior. It states the action is a 'force' operation and affects all knowledge sources, implying potential resource intensity. However, it does not mention whether it is synchronous, reversible, or requires permissions. Adequate but not exhaustive.

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

Conciseness5/5

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

The description is two concise sentences with zero wasted words. It is front-loaded with the action and immediately followed by usage context.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description covers purpose and usage context. It could mention expected return or side effects (e.g., 'may take time'), but is largely complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters; schema coverage is trivially 100%. With no parameters, the description cannot add parameter-level meaning, but it does not need to. Baseline is 4 for zero-parameter tools.

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

Purpose5/5

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

The description uses a specific verb ('Force a full re-index') and clearly identifies the resource ('all knowledge sources'). It distinguishes itself from siblings, none of which describe re-indexing.

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

Usage Guidelines4/5

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

The description provides explicit context for when to use the tool: 'after adding new files or changing contextengine.json'. While it doesn't mention when not to use, the tool is singular in purpose with no clear alternatives among siblings.

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

run_auditB

Run the Compliance Agent audit across all projects. Checks: port conflicts, git remotes (origin + gdrive), git hooks (post-commit auto-push), .env files (existence + gitignore), Docker config (restart policy, workdir), PM2 config (treekill, kill_timeout, no bash wrappers), version issues (EOL runtimes, outdated deps, MUI v4/v5 coexistence). Returns a structured plan with findings and remediation steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoAudit scope: all checks, compliance only, version checks only, or port conflicts onlyall

TDQS

B3.3/5.0
Behavior2/5

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

Annotations are absent, so the description must disclose behavioral traits. It states the tool 'runs checks' and returns a plan, but does not indicate whether it is read-only, modifies state, or requires specific permissions. No side effects are mentioned.

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 concise and front-loaded with the main action. It efficiently lists checks in one paragraph without redundancy. Minor improvement could be bullet points for readability, but it is not overly verbose.

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

Completeness2/5

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

Given the complexity of the tool (multiple checks, structured output), the description lacks detail on the return format, error handling, and prerequisites. No output schema exists to supplement, leaving agents with insufficient context for reliable usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a well-described enum for 'scope'. The description adds value by listing all checks, which contextualizes the scope values (e.g., 'all' includes port conflicts, git remotes, etc.), enhancing semantic understanding beyond the schema's brief descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Run the Compliance Agent audit across all projects.' It lists the specific checks performed and mentions the return type, making it highly specific and distinct from sibling tools like check_ports.

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 explicit guidance on when to use this tool versus alternatives like audit_verify or check_ports. The scope parameter provides some implicit usage context, but the description lacks direct comparisons or prerequisites.

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

save_learningA

Save a permanent operational rule learned during a coding session. Unlike sessions (ephemeral), learnings persist forever and auto-surface in search_context results so AI agents don't repeat mistakes. Duplicate rules (same category + rule text) are updated in place.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYesThe operational rule β€” concise, actionable (e.g., 'Always restart Flask after model changes')
contextYesFull context of how this was discovered β€” the bug, the fix, the symptoms (e.g., 'Avatar save returned 200 but field missing from API response β€” stale to_dict() cache')
projectNoProject this learning applies to (e.g., 'CROWLR.io'). Omit if it's a general rule.
categoryYesCategory: deployment, api, database, frontend, backend, devops, security, performance, testing, debugging, tooling, git, dependencies, architecture, data, infrastructure, mobile, other

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that learnings persist forever, are updated in place on duplicates, and auto-surface in search_context. This covers key behaviors beyond the basic create operation, though it could mention deletability (inferred from sibling delete_learning) and immediate effects.

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

Conciseness5/5

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

The description is three sentences with no extraneous content. The first sentence states the core purpose, the second contrasts with sessions, and the third covers duplicate handling. Every sentence is essential and the information is front-loaded.

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

Completeness4/5

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

For a simple save operation with no output schema, the description covers the essential aspects: what is saved, permanence, duplicate behavior, and integration with search_context. It could mention category enum or that learnings are immediately available, but these are either in the schema or implied. Overall, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by revealing that the combination of 'category' and 'rule text' determines duplicate detection and triggers update-in-place behavior. It also clarifies project is optional with an example, going beyond the schema's 'description' field.

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

Purpose5/5

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

The description clearly states the tool saves a permanent operational rule learned during a coding session, distinguishing it from sessions which are ephemeral. The verb 'save' and resource 'permanent rule' are specific, and the contrast with sibling 'save_session' makes the purpose unambiguous.

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

Usage Guidelines4/5

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

The description explicitly contrasts with sessions ('Unlike sessions (ephemeral'), guiding when to use this tool over save_session. It also explains that learnings auto-surface in search_context, indicating their use for AI agents. While not exhaustive, it provides clear context for appropriate usage.

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

save_sessionA

Save a key-value entry to a named session. Use to persist decisions, context, plans, and findings between coding sessions. Each session can hold multiple keys (e.g., 'summary', 'active_tasks', 'decisions'). Keys are updated in place if they already exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEntry key within the session (e.g., 'summary', 'active_tasks', 'decisions', 'blockers')
valueYesContent to save β€” can be a summary, list of tasks, decisions, notes, code snippets, etc.
sessionYesSession name (e.g., 'admin-crowlr-upgrade', 'compr-app-v2'). Will be created if it doesn't exist.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses key update behavior ('Keys are updated in place if they already exist') and mentions multiple keys per session, but lacks details on persistence guarantees, auth requirements, or potential side effects.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the action, and every word earns its place. It efficiently conveys purpose, usage, and key behavior without redundancy.

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

Completeness4/5

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

For a simple three-parameter tool with no output schema and no annotations, the description is fairly complete. It explains the key-value nature, session creation, and typical use cases. Minor omissions (e.g., return value, limits) prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters (100% coverage). The description adds value by providing examples for session name and value, clarifying that sessions are created if they don't exist, and that values can be various content types. This exceeds baseline 3.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Save a key-value entry to a named session.' It specifies the action (save), the resource (key-value entry in a session), and provides examples of usage (persist decisions, context, plans). This distinguishes it from sibling tools like load_session, delete_session, etc.

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

Usage Guidelines4/5

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

The description advises to use it 'to persist decisions, context, plans, and findings between coding sessions,' which provides clear context. However, it does not explicitly mention when not to use it or compare it directly to alternatives like save_learning, leaving some ambiguity.

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

score_projectA

Score one or all projects on AI-readiness (0-100%). Checks documentation (copilot-instructions, README, CLAUDE.md, .cursorrules, SKILLS.md, .env.example), infrastructure (git, hooks, Docker, CI, deploy scripts, PM2), code quality (tests, TypeScript, linting, npm scripts), and security (.env gitignored, secrets exposure, lockfiles). Returns letter grade (A+ to F) with detailed breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name OR absolute directory path to score. Omit to score all projects.

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the behavioral transparency burden, and it does a solid job by listing exactly what is inspected and what is returned. It explicitly states the return value: 'letter grade (A+ to F) with detailed breakdown'. It does not explicitly say whether the operation is read-only or whether it can modify anything, but the analysis-oriented language ('checks', 'scores', 'returns') makes the behavior reasonably clear.

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

Conciseness5/5

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

The description is front-loaded with the core action and then delivers every detail in compact, scannable lists. Each sentence earns its place: the scoring target, the checked categories, and the output format. No filler or repetition.

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

Completeness4/5

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

Given the tool's moderate complexity, no annotations, and no output schema, the description is nearly complete: it explains the input, the criteria being evaluated, and the output grade with breakdown. Minor gaps are the lack of an explicit read-only/no-side-effects statement and no mention of error conditions or prerequisites, but an agent can confidently invoke the tool with the information provided.

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 the single optional 'project' parameter as a name or absolute path and notes that omitting it scores all projects. The main description repeats the 'one or all' idea but adds no parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Score one or all projects on AI-readiness (0-100%)'. It then enumerates the exact dimensions checked (documentation, infrastructure, code quality, security), which makes the tool's identity unambiguous. Even without naming siblings like run_audit or audit_verify, the detailed rubric clearly distinguishes this tool.

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

Usage Guidelines3/5

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

The description implies when to use the tool: whenever an AI-readiness score for one or all projects is needed. It also communicates the key invocation choice via 'Omit to score all projects'. However, it never explicitly contrasts this with sibling tools or states when NOT to use it, so the usage guidance is implied rather than explicit.

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

search_contextA

Search across all indexed project knowledge (copilot-instructions, skills docs, runbooks, session docs). Uses hybrid BM25 keyword + semantic search with temporal decay. Returns the most relevant chunks with source file, section, and line numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode: hybrid (default), keyword-only, or semantic-onlyhybrid
queryYesNatural language search query
top_kNoNumber of results to return (default 5)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the search method (hybrid BM25 + semantic), temporal decay, and return format (chunks with source, section, line numbers). No contradictions, but could mention potential limitations like rate limits or authentication needs.

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

Conciseness5/5

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

Two sentences: first sentence defines purpose and scope, second adds method and output details. Every word contributes value; no redundancy or fluff.

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

Completeness4/5

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

Given no output schema, the description explains return format (chunks with source, section, line numbers). It lacks mention of pagination or whether results are exhaustive, but for a search tool this is adequate.

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 has 100% coverage, so baseline is 3. The description adds overall context for the 'query' parameter but does not significantly augment the existing parameter descriptions for 'top_k' and 'mode'. The mention of hybrid search parallels the mode enum.

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

Purpose5/5

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

The description clearly states the tool's verb ('search'), resource ('all indexed project knowledge'), and scope (includes copilot-instructions, skills docs, runbooks, session docs). It differentiates from sibling tools that list or read specific items.

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

Usage Guidelines3/5

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

The description implies usage for finding relevant knowledge across projects but does not explicitly state when to use this tool versus alternatives like list_sessions, read_source, or search-specific siblings. No direct comparison 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv2.9.0
    • First observedactivate
    • First observedactivation_status
    • First observedagent_cost
    • First observedaudit_verify
    • First observedcheck_ports
    • First observeddelete_learning
    • First observeddelete_session
    • First observeddrift_status
    • First observedend_session
    • First observedimport_learnings
    • First observedlist_learnings
    • First observedlist_projects
    • First observedlist_sessions
    • First observedlist_sources
    • First observedload_session
    • First observedread_source
    • First observedreindex
    • First observedrun_audit
    • First observedsave_learning
    • First observedsave_session
    • First observedscore_project
    • First observedsearch_context

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation4/5

Tools cluster into clear domains (sessions, learnings, knowledge sources, project audit, monitoring) and most have a single obvious purpose. Minor overlap exists between run_audit and score_project, and between end_session and drift_status, but the descriptions are specific enough to prevent serious misselection.

Naming Consistency4/5

Most tools follow a snake_case verb_noun pattern (list_sources, save_session, delete_learning, score_project), making the set predictable. A few names break the patternβ€”audit_verify, agent_cost, drift_status, activation_statusβ€”but these are still readable and not chaotic.

Tool Count3/5

At 22 tools, the surface is on the heavy side and spans many distinct domains: knowledge, sessions, learnings, project audit, compliance, and licensing. The breadth is defensible, but the count lands in the 16-25 range that feels heavy for an agent to navigate.

Completeness4/5

Sessions and learnings have full create/read/update/delete coverage, and knowledge sources support list/read/search/reindex. Minor gaps existβ€”no direct tool for adding or removing knowledge sources and no remediation application for audit findingsβ€”but agents can work around them via files and reindexing.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Secure local development platform that exposes controlled developer capabilities (FS, Git, search, command execution) to AI assistants via MCP with deny-by-default security and audit logging.
    -
  • A
    license
    C
    quality
    A
    maintenance
    Secure agent coding runtime for local Git repos with policy enforcement, RBAC, sessions, approval workflow, and sandboxed writes, optionally connectable to ChatGPT via Secure MCP Tunnel.
    8
    6
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to securely inspect, modify, and manage local projects with trusted filesystem access, safe Git operations, controlled task execution, and developer runtime process management over stdio or HTTP.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables authorized AI coding agents to securely access development machines, repositories, terminals, and processes through a policy-enforced, audited control plane.
    Apache 2.0