Skip to main content
Glama

q-skillvault · Qu@ntum

Local-first knowledge operating system for developers and AI agents.

Store, search, and retrieve prompts, skills, workflows, decisions, project memory, session summaries, and long AI outputs from the SkillVault CLI in the broader local-first tool suite.

   _____ _ _    _  __     __          _          _
  / ____| (_)  | | \ \   / /__ _ __ | |__   ___| |
 | (___ | | |  | |  \ \ / / _ \ '_ \| '_ \ / _ \ |
  \___ \| | |  | |   \ V /  __/ | | | |_) |  __/ |
  ____) |_|_|  | |    \_/ \___|_| |_|_.__/ \___|_|
 |_____/       |_|

Author: Gabriel Magallon Sanchez - Qu@antum
Repository: https://github.com/QuantumEdu/q-skillvault
Codename: Qu@ntum
Status: v3 — Workflow bridge + LifeOS taxonomy + workflow analytics + entry versioning + skill pack export + issue-to-PR factory (line)
Versioning: Semantic Versioning MAJOR.MINOR.PATCH starting at v3.0.0 — MINOR bumps per merged feature PR, PATCH per merged fix PR, MAJOR only on breaking changes. Single source of truth: internal/version/version.go.
Binary size: ~7 MB
Dependencies: Zero frameworks. Only modernc.org/sqlite.
Language: Go 1.26+
License: MIT


Docs

Guide

Description

docs/quickstart.md

Install, init, and first 6 steps in 5 minutes

docs/commands.md

Full CLI reference — all commands with flags

docs/vars.md

Variable detection, frontmatter, and injection guide

docs/mcp.md

MCP server setup for Claude Code / OpenCode

docs/tutorial.md

Real-world workflow: project → skills → context → session

docs/architecture.md

Clean Architecture deep-dive, data flows, design decisions

docs/line.md

line factory sibling (plan/build/review, ntfy, loopback UI)


Related MCP server: ellmos-homebase-mcp

What SkillVault Does

SkillVault is a local knowledge and workflow layer for humans and AI agents:

  • Store reusable prompts, skills, references, decisions, session summaries, and workflow notes.

  • Classify entries by type and by LifeOS-aligned purpose (WORK, KNOWLEDGE, LEARNING, RELATIONSHIP, STATE, OBSERVABILITY).

  • Import workflow-builder YAML into SkillVault workflows and phase-skill entries.

  • Route natural scenarios to the right workflow or skill with skillvault route <scenario>.

  • Run workflows from the CLI or via MCP with structured JSON-RPC-compatible output.

  • Serve agent tools over MCP (run_workflow, route_scenario, search, context, graph, artifacts, and more).

  • Run the sibling line factory for one GitHub issue (plan → build → review → wait_ci → ready, with repair on CI failure). See docs/line.md.


Pain Problem

Working with AI coding agents creates repeated friction:

Prompts and skills scatter across chats, files, tools, and GitHub repos.
Agents get overloaded if every skill is installed globally.
Long AI outputs (PDF analyses, specs, reports) are valuable but pollute context if saved into prompts.
Project decisions are forgotten across sessions.
Workflows miss steps when there's no reusable checklist.
Context is either too little or too much — never the right amount.

SkillVault solves this by becoming a local source of truth for everything your agents need, with retrieval designed for both humans and AI.


Innovation: The Qu@ntum Context Layer

Most vaults just store things. SkillVault Qu@ntum delivers the right context when agents need it.

  • 7 context modes — profile, project, workflow, skill, planning, session_recall, full_brief

  • Priority-based compilation — user feedback > project state > decisions > workflows > sessions > artifact summaries > references

  • Token-aware truncation — respects max_chars, drops lowest-priority sections first

  • Output: clean, structured text ready for agent injection:

# CONTEXT PACK

## Scope
Project: MyApp
Mode: planning

## User Preferences
- Prefer practical architecture
- Use TDD for core domain behavior

## Active Decisions
- SQLite for local storage
- No cloud sync in v1

## Suggested Next Action
Generate implementation plan from spec.

Installation

# Prerequisites: Go 1.26+
git clone --recurse-submodules https://github.com/QuantumEdu/q-skillvault.git
cd q-skillvault

# Build and install core binary
make install

# Or install the full suite (skillvault + line factory + telemetry + q-secrets)
make install-all

# Initialize the vault
skillvault init

# Verify
skillvault version

That's it. Single binary with zero CGO dependencies. No external database servers or heavy frameworks.

Self-update: Use skillvault update to rebuild and reinstall from source. Configure the source repo with SKILLVAULT_REPO env var and target path with SKILLVAULT_INSTALL_PATH. See skillvault update --help for details.


Quickstart

# Check your local setup first
skillvault doctor

# Create a project
skillvault add-project --name "MyApp" --description "My application"

# Save a reusable skill
skillvault add-entry \
  --title "Clean Architecture Review" \
  --type skill \
  --purpose KNOWLEDGE \
  --summary "Checklist for reviewing clean architecture compliance" \
  --project myapp \
  --tags "architecture,review"

# Search your vault
skillvault find "architecture"

# Filter by LifeOS-style purpose
skillvault search "architecture" --purpose KNOWLEDGE

# Capture a per-project pending item without breaking flow
skillvault pending add --project myapp "Update presentation"

# Review or resolve it later
skillvault pending review --project myapp
skillvault pending list --project myapp --query presentation
skillvault pending show update-presentation
skillvault pending done update-presentation

# Save a long AI output as an artifact (stored on disk, indexed in DB)
skillvault save-artifact \
  --title "PDF Analysis - Security Audit" \
  --type pdf_analysis \
  --content "$(cat /tmp/long-analysis.md)" \
  --project myapp \
  --tags "security,audit"

# Get compact context for your agent
skillvault context --mode planning --project myapp --max-chars 5000

# Optional: build and open the lightweight TUI dashboard
make build-tui
./skillvault-tui tui

# Write a dated backup snapshot
skillvault backup

# Wrap up a session with decisions
skillvault session-wrap \
  --project myapp \
  --summary "Reviewed auth middleware" \
  --decisions "Use JWT,not sessions" \
  --pending "Add refresh token rotation"

Workflow bridge quick path

# Import workflow-builder YAML into SkillVault
skillvault import-workflow --file .agent/skills/research/workflow.yaml --project myapp

# Add a routing entry that maps scenarios to a workflow or skill
skillvault add-entry \
  --title "Research route" \
  --type routing \
  --purpose WORK \
  --summary "Route research scenarios" \
  --body $'research:\n  workflow: research-workflow' \
  --tags workflow-route

# Resolve what should handle a scenario
skillvault route research
skillvault route research --json

# Execute a workflow pipeline from the CLI
skillvault run research-workflow input.md --save output.md

Architecture

Core Principle

DB decides. Disk remembers. Qu@ntum delivers.
  • DB decides: what exists, what type, status, relations, how to find it (SQLite + FTS5).

  • Disk remembers: long artifacts, AI outputs, specs, reports stored as files in objects/YYYY/MM/.

  • Qu@ntum delivers: compact, filtered, priority-sorted context for agents.

Package Map

cmd/skillvault/
├── internal/cli/         # 25+ CLI commands (stdlib, no Cobra)
├── internal/mcp/         # 24 MCP tools over stdio JSON-RPC 2.0
├── internal/api/         # HTTP API (local only)
├── internal/app/         # Use cases: save, search, context, session, refs, memory, pipeline
├── internal/domain/      # Pure entities + validators
├── internal/db/          # SQLite + FTS5 stores + embedded migrations
├── internal/files/       # Artifact filesystem (objects/YYYY/MM/)
├── internal/context/     # Qu@ntum context compiler (7 modes)
├── internal/security/    # Secret scanner (4 regex patterns)
├── internal/vars/        # Variable detection + injection + frontmatter parser
├── internal/export/      # Import/Export with conflict resolution
└── internal/api/         # HTTP REST server

Storage Layout

~/.skillvault/
├── vault.db              # SQLite + FTS5 (metadata, search, relations)
├── objects/              # Long artifact files
│   └── YYYY/MM/
│       └── <slug>.<ext>  # Content-addressed by SHA256
├── exports/              # JSON exports
└── cache/                # Temporary cache

Rule: Content goes to DB when small and frequently retrieved. Content goes to filesystem when long, or a final document, or an AI output worth preserving.


CLI Commands

Command

Description

Example

init

Create vault directories + DB

skillvault init

doctor

Check whether the local vault is ready

skillvault doctor

add-entry

Save a reusable entry

skillvault add-entry --title "..." --type skill --summary "..."

search / find

FTS5 search with filters

skillvault find "auth" --type skill --project myapp

get / read

Get entry by ID or slug

skillvault read clean-architecture-review

save-artifact

Save a long file-backed artifact

skillvault save-artifact --title "..." --type pdf_analysis --file report.md

save-result

Save an AI result as a vault entry

skillvault save-result --name "result" --content "..."

mcp config

Print a ready-to-paste MCP client snippet

skillvault mcp config

get-context / context

Compile Qu@ntum context pack

skillvault context --mode planning --project myapp

add-project

Create a project

skillvault add-project --name "MyApp" --description "..."

list-projects / projects

List all projects

skillvault projects

pending / todo

Capture, list, and resolve per-project pending items

skillvault pending add --project myapp "Update presentation"

link / bookmark

Save, search, and copy URL bookmarks

skillvault link add https://github.com/... --alias btea --copy

cmd / instruction

Save and interpolate command recipes with placeholders

skillvault cmd get ff-compress --var input=raw.mov --copy

archive

Archive an entry

skillvault archive clean-architecture-review

add-workflow

Create a workflow (JSON file)

skillvault add-workflow workflow.json

import-workflow

Import workflow-builder YAML

skillvault import-workflow --file workflow.yaml --project myapp

render-workflow

Render workflow as checklist

skillvault render-workflow spec-plan-task

route

Resolve scenario → workflow or skill

skillvault route research --json

run

Execute a workflow pipeline step by step

skillvault run research-article article.md --save output.md

session-wrap

Save session with decisions

skillvault session-wrap --project myapp --summary "..." --decisions "d1,d2"

graph

Visualize entry graph

skillvault graph --entry e1 --format mermaid

ref

Manage graph edges (alias)

skillvault ref add e1 e2 depends_on

entry ref add/list/remove

Manage graph edges

skillvault entry ref add e1 e2 depends_on

entry history

Show version history for an entry

skillvault entry history clean-architecture-review

entry restore

Restore an entry to a previous version

skillvault entry restore clean-architecture-review --version 2

memory index/reindex/list-external

Index pi-memory.md files

skillvault memory index --path ~/memory --project myapp

backup

Write a dated backup under ~/.skillvault/exports/

skillvault backup

skillvault-sync

Two-way bidirectional sync & merge with GitHub backup repo

skillvault-sync status, skillvault-sync sync

export

Export vault to JSON or skill pack (.svpack)

skillvault export vault.json [--pack --author ...]

import

Import vault from JSON or skill pack

skillvault import vault.json [--pack --prefix ns/]

version

Show vault version

skillvault version

compare-entries

Vector similarity between two entries

skillvault compare-entries e1 e2

stats

Show vault statistics and entry counts

skillvault stats [--workflow-runs] [--json]

update

Rebuild and reinstall binary from source

skillvault update [--repo <path>] [--install-path <path>]

secrets

Run q-secrets (optional encrypted secret manager)

skillvault secrets init, skillvault secrets add pi KEY


q-secrets integration (optional)

SkillVault can run q-secrets as a subprogram for local encrypted secret management.

What is q-secrets?

q-secrets is a local encrypted secret manager that stores secrets in a SQLite database with keyring-backed master key encryption. It supports init, add, get, run (inject secrets into a child process), list, delete, rotate, export, and import commands.

Installation

q-secrets is included as a git submodule in the q-skillvault repository. After cloning q-skillvault, initialize the submodule:

# Clone q-skillvault with submodules
git clone --recurse-submodules https://github.com/QuantumEdu/q-skillvault.git

# Or, if you already cloned without --recurse-submodules:
git submodule update --init --recursive

# Install both skillvault and q-secrets
make install-all

# Or install via q-skillvault (recommended)
skillvault init --with-secrets

# Or install q-secrets separately
make install-q-secrets
# OR
skillvault secrets install

Usage

# Initialize q-secrets (creates ~/.q-secrets/secrets.db and generates keys)
skillvault secrets init

# Add secrets to a profile
skillvault secrets add pi KEY
# Or pipe a value from a secure source without placing it in argv
secret-source | skillvault secrets add pi GITHUB_TOKEN --stdin

# Run with a minimal inherited environment
skillvault secrets run pi --clean-env -- opencode

# List profiles (names only)
skillvault secrets list

# Retrieve a secret
skillvault secrets get pi KEY

# Run a command with secrets as environment variables
skillvault secrets run pi -- opencode

# All q-secrets commands are available
skillvault secrets version
skillvault secrets rotate pi
skillvault secrets export pi

On Unix, skillvault secrets replaces the wrapper process so q-secrets receives signals directly and preserves the child exit status. On Windows it retains the subprocess wrapper.

Binary resolution order

The secrets command resolves the q-secrets binary by checking, in order:

  1. Q_SECRETS_BIN environment variable (full path override)

  2. Same directory as the skillvault executable

  3. q-secrets/q-secrets relative to the q-skillvault repository root (dev mode)

  4. q-secrets in PATH

If the binary is not found, run make install-q-secrets or set Q_SECRETS_BIN.

Updates

skillvault update will automatically rebuild and reinstall q-secrets if the q-secrets/ directory exists in the q-skillvault repository. Set SKIP_Q_SECRETS=1 to skip the q-secrets rebuild.


Agent Telemetry System

Local-first observability for CLI LLM coding agents. Collects, redacts, and persists tool calls, token usage, quality signals, and agent lifecycle events to SQLite.

Components

  • telemetryd — Unix socket daemon that validates, redacts, hashes, and stores events

  • telemetryctl — CLI to query runs, events, and daemon status

  • telemetrywrap — CLI wrapper that infers telemetry events from any command

  • OpenCode plugin — Native EventEmitter emitting 9 canonical event types

Quick Start

# Build the binaries
go build -o ~/tools/telemetryd ./cmd/telemetryd/
go build -o ~/tools/telemetryctl ./cmd/telemetryctl/

# Start the daemon
telemetryd &

# Check daemon status
telemetryctl status

# List runs
telemetryctl run list
telemetryctl run recent

Security

  • SHA-256 arg hashing with 32-byte random salt (~/.telemetry/salt, 0600 perms)

  • Built-in regex redaction: OpenAI keys, Bearer tokens, auth headers, --api-key flags

  • Base64 entropy scanning → scanned-warning flag

  • Zero plaintext secrets in logs, DB, or CLI output

For full documentation, see docs/telemetry.md.


MCP Tools (39 default, 44 engram-compat)

For AI agents (Claude Code, OpenCode, Antigravity, Pi, Codex):

Tool

Description

save_entry

Save a prompt, skill, decision, feedback, session — anything reusable

search_entries

FTS5 search with filters by type, project, tags, status, purpose

get_entry

Retrieve entry by ID with artifact reference

save_artifact

Save long AI output as file-backed artifact with metadata

save_result

Save an AI prompt result as a vault entry

get_context

Compile agent-ready context pack (7 modes)

compose_series

Get ordered entries in a series

render_workflow

Get workflow steps as ordered checklist

session_wrap

Create session entry with decisions, pending items, learnings

archive_entry

Set entry status to archived

list_projects

List all projects with status

save_entry_ref

Create/update a graph edge between two entries (with cycle detection)

list_entry_refs

List graph edges with filters

get_entry_graph

Traverse entry graph from a starting entry

compare_entries

Compare semantic/vector similarity between entries

search_by_tags

Search entries by tag intersection (all) or union (any)

get_context_bundle

Get structured project context bundle with entries grouped by type

run_workflow

Run a workflow with structured step inputs and JSON results

route_scenario

Resolve a scenario to a workflow or skill route

get_stats

Return vault statistics including workflow run analytics

list_workflow_runs

List workflow runs with optional workflow filter and step progress

get_run

Get a single workflow run with step details

list_entry_versions

List version history for an entry (descending by version number)

restore_entry_version

Restore an entry to a previous version by version number

save_handoff

Save a structured agent-to-agent task handoff / checkpoint

get_handoff

Retrieve the latest agent-to-agent task handoff for a project or task_id

add_link

Store a URL bookmark with an alias keyword for quick retrieval

get_link

Resolve an alias keyword to its stored URL

search_links

Search stored URL bookmarks with FTS5 across title, summary, tags, and URL

list_links

List all stored URL bookmarks, optionally filtered by project

add_instruction

Store a command snippet or instruction recipe with placeholders (e.g. {{input}})

get_instruction

Resolve an instruction recipe by alias with optional variable interpolation

search_instructions

Search instruction recipes and command snippets with FTS5

list_instructions

List all stored instruction recipes, optionally filtered by project

vault_mem_save

Save typed observation with normalized hash deduplication and topic tags

vault_mem_search

Search observations with FTS5, topic/project filters, and 300-char preview

vault_mem_get

Retrieve full observation details by ID or slug

vault_mem_timeline

Retrieve chronological sibling observations before and after target ID

vault_mem_context

Compile agent-ready project context pack from active memories

Engram Drop-in Compatibility Mode (--compat-engram)

To run SkillVault as a 100% drop-in replacement for Engram (exposing mem_save, mem_search, mem_context, mem_get_observation, mem_timeline aliases with zero prompt changes):

skillvault mcp --compat-engram

Or set the environment variable SKILLVAULT_COMPAT_ENGRAM=1.

MCP Setup (Claude Code / OpenCode / Antigravity)

Add to your MCP configuration:

{
  "mcpServers": {
    "skillvault": {
      "command": "/path/to/skillvault",
      "args": ["mcp"]
    }
  }
}

Create a symlink for agent-only access:

ln -sf ~/tools/skillvault ~/tools/mcp
# Now agents can call "mcp" directly

Entity Model

Entry Types (15)

Type

Purpose

prompt

Reusable prompt template

skill

Structured skill/pattern

workflow_note

Note about a workflow

reference

Reference document

user

User preference

feedback

User feedback/decision

project_state

Project snapshot

session

Session summary

decision

Architectual decision

artifact_summary

Summary of a stored artifact

handoff

Session handoff document

pending

Actionable task or todo item

routing

Scenario → workflow/skill routing rules

link

URL bookmark with alias and tags

instruction

Command snippet / recipe with variable placeholders

Purpose Taxonomy

Purpose is orthogonal to entry type. Use it to organize memory by why it exists, not just what shape it has.

Purpose

Use for

WORK

Active projects, workflows, tasks, deliverables

KNOWLEDGE

Concepts, references, reusable technical facts

LEARNING

Lessons, skill development, retrospectives

RELATIONSHIP

People, organizations, stakeholder context

STATE

Current state snapshots, project status, handoffs

OBSERVABILITY

Logs, metrics, monitoring dashboards, workflow analytics

Examples:

skillvault add-entry --title "ISO checklist" --type reference --purpose KNOWLEDGE --summary "..."
skillvault search "ISO" --purpose KNOWLEDGE

Status Model

Status

Meaning

draft

Not ready for agent use

active

Available for normal retrieval

archived

Searchable but excluded from context packs

deprecated

Kept for history, not recommended

canonical

Preferred version

Relations (EntryLink — 11 types)

Entries can be explicitly related via a directed graph with cycle detection:

references   → links to supporting content
supersedes   → newer version replaces older (cycle-prone)
related_to   → loosely connected
part_of      → compositional relationship (cycle-prone)
derived_from → source → derived relationship
implements   → implements a spec/decision
uses         → source invokes target (agent uses workflow)
extends      → source specializes target
handoff_of   → handoff entry refers to session work
generated_from → entry derives from another
depends_on   → source depends on target (cycle-prone)

Cycle detection: depends_on, part_of, and supersedes validate against transitive cycles using WITH RECURSIVE CTE before insertion. Max depth: 10.

Traversal: GetEntryGraph supports multi-direction (outgoing|incoming|both) traversal with configurable depth. CLI: skillvault graph --entry <id>.

Memory index: Shadow entries from pi-memory-md are automatically linked via external_ref. Wikilinks ([[target]]) in markdown bodies become related_to edges.


Security

SkillVault detects and blocks secrets before they enter the vault:

Pattern

Example

OpenAI keys

sk-... (20+ chars)

Private keys

-----BEGIN PRIVATE KEY-----

GitHub tokens

ghp_...

Slack tokens

xoxb-..., xoxa-...

On detection: content is rejected or redacted with a warning. No secrets stored.


User Flows

1. Save a PDF analysis from an AI agent

User → "Guarda este análisis en SkillVault como artefacto del proyecto Forense Digital"
Agent → calls save_artifact(title, type=pdf_analysis, content, project)
SkillVault → stores file in objects/2026/06/forense-analisis.md
           → creates artifact metadata + entry in DB
           → indexes summary + tags in FTS5

2. Agent retrieves planning context

Agent → calls get_context(project="MyApp", mode="planning", max_chars=8000)
SkillVault → compiles: user preferences + project state + decisions + workflows
           → truncates lowest-priority sections to fit 8000 chars
           → returns structured text for agent injection

3. Session wrap for project continuity

User → "Cierra sesión, guarda lo que decidimos"
Agent → calls session_wrap(project, summary, decisions[...], pending[...], learnings[...])
SkillVault → creates session entry + optional artifact
           → links to project
           → available for next get_context call

Comparison

Feature

File system

GitHub Gists

Obsidian

SkillVault

Agent-facing MCP

❌

❌

❌

✅

FTS5 search

❌

❌

❌

✅

Context compilation

❌

❌

❌

✅ (Qu@ntum)

Hybrid DB+disk

❌

❌

❌

✅

Secret detection

❌

❌

❌

✅

Workflow checklists

❌

❌

❌

✅

Workflow pipelines

❌

❌

❌

✅ (v3)

Single 10MB binary

❌

❌

❌

✅

Zero cloud dependency

✅

❌

❌

✅

Portable (any OS)

✅

❌

❌

✅

Entry relations

❌

❌

❌

✅


Testing

# Run all 750+ tests
go test ./...

# With coverage
go test -cover ./...

# Integration tests use in-memory SQLite (no filesystem needed)

Test pyramid:

  • Unit tests: domain validation, security patterns, variable detection

  • Integration tests: SQLite stores, artifact filesystem, MCP tools

  • Acceptance tests: full end-to-end flows (AC1-AC10)


Dependencies

  • Go 1.26+ — standard library for CLI, HTTP, JSON, file I/O, crypto, embed

  • modernc.org/sqlite — pure Go SQLite driver (no CGO)

  • telemetryd — Unix socket daemon for agent observability (included in repo)

  • telemetryctl — CLI for run queries and daemon status (included in repo)

Zero frameworks. No Cobra, no Fiber, no ORM, no Gin, no Echo.


Project Status

Phase

Status

v1-alpha (SQLite vault)

✅ Archived

v2 Qu@ntum (Hybrid + Context)

✅ Archived

v3 Qu@ntum (Workflow Pipelines)

✅ Active

v3 Service hardening (auth, shutdown, MCP tools)

✅ Active

Cloud sync (S3 + GitHub transports)

✅ Active

TUI (Bubble Tea, build-tag gated)

✅ Active

Vector search (GloVe, pure Go)

✅ Active

Entry diff / compare-entries

✅ Active

Entry versioning (history, restore, diff API)

✅ Active

Entry skill pack export

✅ Active

HTTP auth layer

✅ Active

Graceful shutdown

✅ Active

save_result MCP tool

✅ Active

Workflow-builder YAML import

✅ Active

Scenario routing (route, route_scenario)

✅ Active

LifeOS purpose taxonomy

✅ Active

Structured MCP workflow runs (run_workflow)

✅ Active

Workflow run analytics (get_stats, list_workflow_runs, get_run)

✅ Active

Agent telemetry daemon (telemetryd)

✅ Active

Agent telemetry CLI (telemetryctl)

✅ Active

Agent telemetry plugins + wrapper

✅ Active

Quality signal detectors (loop, stall, streak, token)

✅ Active

Link bookmarks & quick paste (skillvault link)

✅ Active

Instruction recipes & vars interpolation (skillvault cmd)

✅ Active

Bidirectional sync & merge (skillvault-sync)

✅ Active


Author & License

Author: Gabriel Magallon Sanchez - Qu@antum
Organization: QuantumEdu
License: MIT — Copyright (c) 2026 Gabriel Magallon Sanchez - Qu@antum. All rights reserved.

Available Tools

39 tools
add_instructionC

Store a command snippet or instruction recipe with placeholders (e.g. {{input}})

NameRequiredDescriptionDefault
tagsNoAdditional tags
aliasNoShort keyword alias for fast retrieval (required)
titleNoDescriptive title (optional)
commandNoCommand or instruction template (required)
projectNoProject scope (optional)
summaryNoExplanation or guidance on when to use (optional)

TDQS

C2.9/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 behavioral burden. 'Store' implies a persistent mutation, but the description does not say whether it overwrites, how duplicate aliases are handled, whether the entry is immediately searchable, or what is returned. The placeholder mention is the only real behavioral signal.

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

Conciseness4/5

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

A single front-loaded sentence that spends its words on the distinguishing element (templated snippets) rather than restating the name. Appropriately sized, though it could redirect to siblings in the same breath.

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?

Six parameters, no annotations, no output schema, and a write tool whose uniqueness/lookup contract is undocumented — an agent cannot tell from this description whether alias collisions are rejected, merged, or stored as duplicates, nor how stored placeholders are filled at retrieval.

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 all six parameters are already documented in the schema; the description's only added value is explaining the template/placeholder semantics of the command field. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

Specific verb ('Store') plus specific resource ('command snippet or instruction recipe') and a distinguishing detail: placeholders like {{input}}. It separates itself from get_instruction/search_instructions by being the write side, but it never states how it differs from save_entry or save_entry_ref, which also store content.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus save_entry, save_entry_ref, or save_artifact, and no prerequisites or exclusions. An agent facing a write operation with many sibling write tools has to guess based on the name alone.

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

archive_entryB

Soft-delete an entry (set status to archived)

NameRequiredDescriptionDefault
idNoEntry ID

TDQS

B3.3/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 behavioral burden. It usefully discloses that this is a soft delete that changes status to archived, but does not state whether the operation is idempotent, what permissions are required, whether archived entries remain searchable, or what the call returns.

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 compact sentence with no wasted words. The key mechanism, soft deletion via status change, is front-loaded and easy to scan.

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

Completeness3/5

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

For a one-parameter mutation tool with no annotations or output schema, the description covers the essential effect but leaves open important behavior such as permissions, reversibility, and return format. It is minimally adequate rather than complete.

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%, and the single parameter is already documented as 'Entry ID'. The description adds no additional syntax, format, or validation details beyond what the schema provides, so the baseline score of 3 applies.

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

Purpose4/5

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

The description uses a specific verb phrase ('Soft-delete') and resource ('an entry') and clarifies the mechanism ('set status to archived'), making clear this is not a hard delete or a save operation. It distinguishes the action from siblings like save_entry or get_entry, though the noun 'entry' remains broad across many sibling tools.

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

Usage Guidelines2/5

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

It does not state when to choose this over alternatives, such as restore_entry_version for undoing an archive or save_entry for updating an entry. There are no exclusions or prerequisite conditions.

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

compare_entriesA

Compute line-based LCS unified diff between two entries

NameRequiredDescriptionDefault
id1NoFirst entry ID
id2NoSecond entry ID

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 behavioral burden. It usefully discloses the diff algorithm and output format ('line-based LCS unified diff'), but does not describe prerequisites such as whether entries must exist, error behavior, or read-only implications.

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?

A single front-loaded sentence with zero waste. It efficiently conveys the operation and output format.

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 two-parameter read-only comparison tool with no output schema, the description is mostly sufficient: it names the diff algorithm and output format. It omits edge-case behavior and explicit usage context, but the tool's complexity is low.

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 both id1 and id2 are already documented. The description confirms they are entries to compare, but adds no syntax or format detail beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: compute a line-based LCS unified diff between two entries. No sibling tool does comparison or diffing, so it is clearly distinguishable.

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 usage is implied by the phrase 'between two entries', but the description does not explicitly say when to use this tool versus alternatives or when not to use it. It gives enough context to infer the basic use case but no routing guidance.

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

compose_seriesC

Return ordered entries in a series

NameRequiredDescriptionDefault
series_idNoSeries ID

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It hints at ordering ("ordered entries") but never states the ordering criterion, whether the call is read-only, what happens for an unknown or empty series, or what the response shape looks like. That is thin coverage for a tool with zero annotation support.

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

Conciseness4/5

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

A single short sentence with no filler and the key concept front-loaded. It is efficient rather than padded, though its brevity borders on under-specification rather than true economy.

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?

With no annotations, no output schema, and zero required parameters (series_id is optional per the schema), the description should clarify what happens when series_id is omitted and what "ordered" guarantees. Neither is addressed, leaving an agent guessing about core call behavior.

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 single parameter is documented (albeit circularly as "Series ID"). Baseline 3 applies; the description adds nothing about format or semantics of series_id, but the schema does the documented work.

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

Purpose3/5

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

The description states a specific verb ("Return") and resource ("ordered entries in a series"), which is clearer than a tautology. However, it never defines what a "series" is or how this differs from siblings like get_entry, get_entry_graph, or list_entry_refs, which all sound like they could return related entries.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusion criteria, and no mention of alternatives among the ~38 sibling tools. An agent cannot tell from this text whether compose_series or get_entry_graph is the right call for related content.

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

get_contextC

Compile agent-ready context pack from vault data

NameRequiredDescriptionDefault
modeNoprofile|project|workflow|skill|planning|session_recall|full_brief
queryNoOptional search query
includeNoSections: profile,decisions,workflows,recent_sessions,artifact_summaries,references
projectNoProject name or ID
max_charsNoMaximum characters (default 12000)
exclude_archivedNoExclude archived entries

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It implies a read-style compilation from vault data but does not disclose permissions, side effects, performance characteristics, output size behavior, or what happens across the several modes.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is not verbose, though its brevity contributes to gaps captured in other dimensions.

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?

This is a complex tool with six optional parameters, multiple modes, section selection, size limits, and no output schema. A seven-word description is not sufficient to explain the modes, expected outputs, or how the compiled pack should be used.

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 six parameters are already documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, which is the baseline 3 for high coverage.

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

Purpose3/5

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

The description gives a verb ('Compile') and a resource ('context pack from vault data'), so the general purpose is identifiable. However, 'agent-ready context pack' is vague jargon and the description does not clarify what the pack contains or how it differs from siblings like get_context_bundle or vault_mem_context.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool, when not to use it, or which sibling tools are alternatives. The agent must infer usage from the name alone.

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

get_context_bundleB

Return structured JSON bundle: project info, entries grouped by type, and artifact refs

NameRequiredDescriptionDefault
projectNoProject name or ID

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does useful work by naming the return shape (structured JSON with grouped entries and artifact refs), which is the most important behavioral fact for a read tool with no output schema. It says nothing about read-only safety, size/volume of the bundle, or whether missing projects error or return empty, leaving real gaps.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the payload inventory comes first. It is slightly terse given the agent still needs scoping guidance, but nothing is wasted.

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

Completeness3/5

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

For a low-complexity read tool with one optional parameter and no output schema, the description covers the essentials of what comes back. It stops short of clarifying whether results include historical versions, how large the bundle may be, or what happens with an omitted project, which an agent would need to call it confidently.

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 there is only one optional parameter (project), which the schema already documents as 'Project name or ID'. The description adds no format or scoping detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Return) and enumerates the three payload components (project info, entries grouped by type, artifact refs), which is concrete and distinguishes it from entry-level tools like get_entry. However, it does not differentiate itself from the closely-named sibling get_context, leaving genuine ambiguity about which to pick.

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

Usage Guidelines2/5

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

There is no statement of when to use this bundle versus get_context, get_entry, or get_entry_graph. The agent must infer that it is a bulk aggregation call from the description alone, with no explicit context or exclusions.

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

get_entryB

Get a vault entry by ID (includes artifact reference if linked)

NameRequiredDescriptionDefault
idNoEntry ID

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; "Get" does imply a read-only operation and the parenthetical discloses that linked artifact references are included in the response, which is genuine added context. It still says nothing about behavior when the ID is unknown, whether access is scoped, or how large an entry can be, which matters for an unannotated 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?

One short sentence with the action and key front-loaded and no filler. The parenthetical is the only extra clause and it carries real 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?

For a single-parameter read with no output schema, the description covers what is returned at a high level (entry plus artifact reference when linked) and how it is addressed. Missing error/not-found behavior and any notion of what a vault entry contains keeps it from being fully complete.

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 single parameter is documented as "Entry ID", so the schema already does the work. The description only restates that lookup is by ID and adds no format or sourcing hints for the identifier, so baseline 3 applies.

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

Purpose4/5

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

"Get a vault entry by ID" states a specific verb and resource with the retrieval key, which is unambiguous. It does not, however, distinguish itself from near-neighbors such as get_entry_graph, get_context_bundle, or vault_mem_get, so an agent must still infer the boundary.

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 phrase "by ID" implies a prerequisite but the description never states when to choose this over list_entry_versions, get_entry_graph, or vault_mem_get. No exclusions, no alternative routing, nothing beyond the bare retrieval action.

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

get_entry_graphC

Traverse entry graph from a starting entry, returning connected nodes and edges

NameRequiredDescriptionDefault
entry_idNoStarting entry ID (required)
directionNooutgoing, incoming, or both (default)
max_depthNoMax traversal depth (default 3, max 10)
ref_typesNoFilter by relation types

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only traversal but never states cycle handling, truncation or result capping at max_depth, behavior when entry_id doesn't exist, or the cost/shape of the returned graph — all significant for a traversal that can expand exponentially.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though its brevity verges on under-specification rather than optimal sizing.

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

Completeness3/5

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

For a 4-parameter read tool with a fully documented schema and no output schema, the description covers the core action but omits return-shape hints and traversal limits. Given no annotations and no output schema, the description should do slightly more to be complete.

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 entry_id, direction, max_depth (default 3, max 10), and ref_types are already fully documented in the schema. The description adds no param-level detail beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (traverse) and resource (entry graph) plus what it returns (connected nodes and edges). It is distinguishable from siblings like list_entry_refs or get_entry, though it does not name or contrast with them explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus list_entry_refs, get_context_bundle, or compare_entries, and no stated preconditions or exclusions. The usage is only inferable from the verb 'traverse'.

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

get_handoffA

Retrieve the latest agent-to-agent task handoff for a project or task_id

NameRequiredDescriptionDefault
projectNoFilter by project name or ID (optional)
task_idNoFilter by task ID (optional)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden, but 'retrieve' and 'latest' disclose the core read/ordering behavior. It still omits important details such as whether the operation is strictly read-only, what happens when no handoff exists, or any permission requirements.

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 front-loaded sentence with no wasted wording. It immediately communicates the action, target, and filtering scope.

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 retrieval tool with fully described optional parameters, the description is largely sufficient: it names the returned resource and its latest semantics. The lack of output schema means return shape is not described, but that is a minor omission for this straightforward lookup.

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 both optional filter parameters are fully documented in the schema. The description mentions project and task_id scoping but adds no syntax, precedence, or format details beyond what the schema already provides, making baseline 3 appropriate.

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 a specific verb and resource: retrieve the latest agent-to-agent task handoff. It does not explicitly name a sibling such as save_handoff, but the retrieval framing makes the operation distinct from saving a handoff.

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

Usage Guidelines3/5

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

It indicates that the handoff can be scoped by project or task_id, which implies filtering usage. However, it gives no explicit guidance on when to use this tool versus alternatives such as get_context_bundle, nor any prerequisites or exclusions.

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

get_instructionB

Resolve an instruction recipe by alias with optional variable interpolation

NameRequiredDescriptionDefault
varsNoKey-value map to substitute placeholders like {{key}}
aliasNoAlias keyword to resolve (required)

TDQS

B3.4/5.0
Behavior3/5

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

As no annotations are provided, the description adds important functional context by mentioning 'variable interpolation.' This is a specific behavioral trait of how the instruction is resolved, making it more helpful than a generic retrieval description.

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 definition is a single, highly efficient sentence. It front-loads the core functionality (resolve by alias) and includes a key operational detail (variable interpolation) 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?

For a retrieval tool, the description is quite complete in terms of inputs. However, since there is no output schema, the description lacks crucial information about the expected return format (e.g., JSON object, raw string, structure).

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?

With schema description coverage at 100%, the baseline for parameter semantics is 3. The description only reinforces the optional nature of 'vars' by linking it to variable interpolation, adding minimal value beyond the existing schema definition.

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 identifies the action ('Resolve') and the mechanism ('by alias'). It is specific but could benefit from explicitly stating that it retrieves a single item, contrasting it with sibling search or list tools.

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

Usage Guidelines2/5

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

There is no guidance on when this tool should be used relative to its siblings. It fails to specify, for example, that the alias should be used when the exact instruction name is known, leaving the agent to infer the appropriate lookup method.

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

get_runA

Get a single workflow run with its step details

NameRequiredDescriptionDefault
run_idNoWorkflow run ID (required)

TDQS

A3.6/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 the full burden. It does disclose what the response contains ('with its step details'), which is useful beyond the schema, but it says nothing about read-only semantics, behavior when the run_id is unknown, or result size.

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?

A single front-loaded sentence with no filler. The returned-content hint is placed before the object of the action, so nothing is wasted.

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 one-parameter read tool with a fully described schema and no output schema, this covers the essential purpose and return content. Minor gaps: no error/missing-run behavior and no note that this is a non-mutating read.

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% and the single run_id parameter is already documented in the schema as required. The description adds no format, example, or sourcing guidance beyond that, so the 3 baseline applies.

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

Purpose4/5

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

States a specific verb and resource ('Get a single workflow run') plus a scope hint that it includes step details. This implicitly separates it from list_workflow_runs, but the sibling is never named.

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?

Usage is only implied: 'single' suggests fetching one run's detail as opposed to listing runs, but there is no explicit when-to-use, when-not-to-use, or reference to list_workflow_runs as the alternative.

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

get_statsB

Return vault statistics including workflow run analytics

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only states 'return statistics,' which fails to disclose crucial behavioral traits like the time window covered (e.g., last 7 days, all-time), aggregation level, or if certain critical metrics are excluded.

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?

It is a single, efficient sentence that front-loads the resource and action. It is appropriately sized and contains no fluff.

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 that this is a statistics-gathering tool, the description must define its scope. Since it offers no time constraints or metrics breakdown, it remains minimally viable but lacks the necessary completeness for an AI to confidently choose it over similar reporting functions.

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, meaning the input schema requires no description. As such, the description cannot add semantic meaning beyond what is in the structured data. The baseline score for 0 parameters is 4.

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 identifies the action ('Return') and the resource ('vault statistics and workflow run analytics'). While specific, it is a bit generic compared to listing specific run metrics, giving it a solid 'clear' rating without being overly precise.

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 offers no guidance on when to use this tool versus other available statistical or listing tools (e.g., list_workflow_runs). There are no 'when-not' scenarios or usage context provided.

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

list_entry_refsC

List graph edges between entries

NameRequiredDescriptionDefault
source_idNoFilter by source entry ID
target_idNoFilter by target entry ID
relation_typeNoFilter by relation type
include_archivedNoInclude soft-deleted refs

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'List' weakly implies a read, but nothing states that explicitly, nor does it describe pagination, default filtering behavior, or whether archived refs are excluded by default. For a no-annotation tool this is a substantial gap.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It's efficiently structured, though the brevity overlaps with the completeness gaps rather than being a flaw of verbosity.

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

Completeness2/5

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

With no annotations, no output schema, and an unstated default for include_archived, the description leaves the agent guessing at the return shape and default scope. It should at minimum say what a ref/edge record contains and whether archived refs are returned by default.

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 each of the four filters is already documented in the schema, establishing a baseline of 3. The description adds nothing beyond that (e.g., how multiple filters combine, or the default for include_archived), so it does not exceed the baseline.

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

Purpose4/5

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

States a specific verb (List) and a specific resource (graph edges between entries), so an agent knows it enumerates relationship records rather than entries themselves. It doesn't explicitly differentiate itself from the closest siblings (get_entry_graph, save_entry_ref), but the verb+resource pairing is clear enough to route on.

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 statement of when to use this versus get_entry_graph or save_entry_ref, and no mention that all four filters are optional (so it can enumerate everything). The agent must infer usage context purely from the name.

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

list_entry_versionsB

List version history for an entry (descending by version number)

NameRequiredDescriptionDefault
entry_idNoEntry ID (required)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full load. 'List' implies a safe read, and 'descending by version number' conveys sort order, but pagination, limits, and what happens when an entry has no versions are unstated.

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?

One short sentence, front-loaded with the core action, with the ordering hint in parentheses. Nothing is redundant, though the extreme brevity borders on under-specification for a tool with no annotations.

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

Completeness3/5

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

For a single-parameter read tool with no output schema, the description is minimally sufficient but does not describe the shape of the returned version records or whether the list is bounded. It stops at 'adequate' rather than telling the agent what it will actually get back.

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 single entry_id parameter is already documented as required in the schema. The description adds only the ordering semantics of the result set, not any meaning about the parameter itself, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb and resource ('List version history for an entry') plus a scope detail (descending by version number). It reads clearly as a read-only listing operation and is distinguishable in practice from the sibling restore_entry_version, though it does not name that sibling explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the verb 'List'; there is no statement of when to call this versus restore_entry_version or get_entry, and no preconditions are mentioned. An agent can infer intent but gets no explicit routing guidance.

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

list_instructionsA

List all stored instruction recipes, optionally filtered by project

NameRequiredDescriptionDefault
projectNoFilter by project (optional)

TDQS

A3.5/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 the burden; 'List all stored' implies a read-only, non-destructive retrieval, but ordering, result volume, and pagination behavior are unstated. For a simple read-only list tool this is a modest gap rather than a serious one.

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?

A single tight sentence with the scoping behavior front-loaded and no filler. Nothing could be removed without losing information.

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

Completeness3/5

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

For a one-optional-parameter list tool with no output schema and no annotations, the description is adequate but thin: it says nothing about what an instruction recipe record contains or whether results are truncated, which is the kind of context the description would need to supply here.

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% for the single optional 'project' parameter, so the schema already documents it. The description restates the filter behavior without adding matching semantics (exact name vs. slug, case sensitivity), making it baseline.

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?

Clear verb ('List') and resource ('stored instruction recipes') with an explicit scoping clause about project filtering. It doesn't name the sibling search_instructions or get_instruction, so the agent must infer the boundary between listing and searching, but the core purpose is unambiguous.

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 phrase 'optionally filtered by project' implies when the parameter is useful, but there is no explicit guidance on when to prefer this over search_instructions or get_instruction. Usage is inferable from the verb but not spelled out.

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

list_projectsB

List all projects and their statuses

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/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 behavioral burden. It discloses that the tool returns all projects and includes statuses, which implies a broad read operation, but it omits pagination, permission scope, ordering, and whether 'all' is truly unbounded.

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?

It is a single front-loaded sentence with no filler, and the return content is mentioned efficiently. It could be slightly stronger by naming the status field or output shape, but it is appropriately sized for a simple zero-parameter list operation.

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

Completeness3/5

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

For a simple zero-parameter read with no output schema and no annotations, the description is minimally adequate: it states the resource and that statuses are included. It does not explain the return structure, whether projects are scoped to the caller, or how large the result may be.

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 input parameters, so parameter semantics are not a meaningful area of concern. The schema requires nothing, and the description does not falsely imply any filtering or input options.

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 uses a clear verb ('List') and resource ('projects') and states the returned content ('statuses'), so the core purpose is immediately understandable. However, it does not differentiate this tool from the many other listing/search sibling tools, so an agent must infer that it is specifically for projects.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as search tools, entry-listing tools, or other retrieval siblings. It also gives no conditions, prerequisites, or exclusions to help an agent choose it correctly.

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

list_workflow_runsC

List workflow runs with optional workflow filter and step progress

NameRequiredDescriptionDefault
limitNoMax results (default 20)
workflow_idNoFilter by workflow ID (optional)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation and hints that each run carries step progress, but says nothing about ordering, pagination beyond the limit parameter, which projects/runs are visible, or result shape — significant gaps for an unannotated tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is tight, though the brevity is also the source of the missing guidance rather than a model of economy.

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

Completeness3/5

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

For a two-parameter, zero-required read tool with no output schema, the description covers the essentials but leaves ordering, default scope, and what a "run" record contains unexplained. Adequate, not complete.

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 limit and workflow_id documented inline, so the schema already does the work. The description adds only the notion that filtering is optional and that step progress is included, which is marginal added meaning.

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

Purpose4/5

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

States a specific verb+resource ("List workflow runs") plus the two things that shape the result: an optional workflow filter and inclusion of step progress. It does not differentiate from the sibling get_run, which plausibly fetches a single run, but an agent can still tell what this returns.

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 word "optional" is the only usage cue; there is no statement of when to prefer this over get_run or how results are scoped. An agent must infer the list-vs-get split from the name alone.

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

render_workflowB

Return workflow steps as a checklist

NameRequiredDescriptionDefault
workflow_idNoWorkflow ID

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral context. 'Return' implies read-only behavior and 'as a checklist' discloses the output style, which is useful, but permissions, missing workflow_id behavior, and error handling are unstated.

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 front-loaded sentence with no filler. It immediately states the operation and result format.

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?

No output schema exists, so the description should clarify what the checklist contains, but it does not. Since workflow_id is not required, the description also should explain what happens when it is omitted, which it leaves unaddressed.

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 single workflow_id parameter is already documented in the schema. The description adds no additional meaning about the parameter's format or optionality, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: 'Return workflow steps' plus an output format, 'as a checklist'. It is clear what the tool does, but it does not distinguish itself from siblings such as run_workflow or list_workflow_runs.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus run_workflow or list_workflow_runs. The word 'Return' implies a read-only viewing operation, but the description does not state prerequisites or selection criteria.

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

restore_entry_versionC

Restore an entry to a previous version by version number

NameRequiredDescriptionDefault
entry_idNoEntry ID (required)
version_numberNoVersion number to restore (required)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but does not disclose whether restoring overwrites the current version, creates a new version, requires permissions, or is reversible.

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, front-loaded sentence with no unnecessary detail. It is efficiently sized for the tool's stated action.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It does not explain side effects, reversibility, required permissions, or how the restore interacts with existing entry versions.

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 both entry_id and version_number are already documented in the input schema. The description adds only the phrase 'by version number,' which is already evident from the schema.

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

Purpose4/5

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

The description states a specific verb and resource: restore an entry to a previous version. It clearly distinguishes the action from siblings like list_entry_versions or compare_entries, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

The description implies the basic use case but gives no explicit guidance on when to use this tool versus alternatives, prerequisites, or workflow context such as needing list_entry_versions to discover a version number.

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

route_scenarioC

Resolve a free-text scenario to a matching workflow or skill

NameRequiredDescriptionDefault
scenarioNoScenario text to route (required)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden and does not meet it. It never says whether routing only selects a candidate or also executes it, how ambiguity or multiple matches are handled, or whether the match is authoritative — all critical for a dispatcher-style tool.

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

Conciseness4/5

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

A single front-loaded clause with zero padding; every word earns its place. It is appropriately sized, though its brevity is achieved by omitting rather than compressing.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description must explain the response contract, and it does not: an agent cannot tell whether it receives a workflow ID, a name, a ranked list, or a confidence score. That gap matters greatly when the very next step is a decision to call run_workflow.

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% for the single 'scenario' parameter, so the baseline is 3. The description adds only the phrase 'free-text', implying unconstrained natural language rather than an ID or slug, but offers no guidance on length, phrasing, or what makes a matchable scenario.

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

Purpose4/5

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

States a specific verb ('Resolve') and the transformation ('free-text scenario' -> 'matching workflow or skill'), which is far more than a restatement of the name. It does not, however, distinguish itself from siblings such as run_workflow or search_by_tags, so an agent cannot tell from this text alone how routing differs from searching or executing.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusion (

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

run_workflowC

Execute a workflow with structured step inputs and return per-step results

NameRequiredDescriptionDefault
stepsNoMap of step index (int) -> input text
workflowNoWorkflow slug or ID (required)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that per-step results are returned, but says nothing about side effects, permissions, idempotency, partial failures, or what happens if a step fails—important gaps for an execution 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 a single front-loaded sentence with no wasted words. It states the action, the input shape, and the return shape efficiently.

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

Completeness2/5

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

For an execution tool with no annotations and no output schema, the description is too thin. It should explain prerequisites, whether execution is synchronous or asynchronous, failure semantics, and what 'per-step results' contains, especially given the nested step input.

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 parameters, including the nested step map. The description does not add syntax or format detail beyond the schema, but the baseline of 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb (Execute) and resource (a workflow), and adds that it accepts structured step inputs and returns per-step results. This is clear enough for an agent to understand the tool's core function, but it does not explicitly distinguish it from nearby siblings like render_workflow or list_workflow_runs.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as render_workflow, list_workflow_runs, or get_run. The description implies execution but provides no conditions, prerequisites, or exclusions.

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

save_artifactC

Save a long AI output or file-backed artifact

NameRequiredDescriptionDefault
tagsNo
typeNoArtifact type: ai_output|pdf_analysis|spec|report|session_output|markdown|json|txt
titleNoArtifact title (required)
contentNoArtifact content (optional if file_path provided)
projectNoProject name or ID
summaryNoShort summary
file_pathNoPath to file (optional if content provided)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It says nothing about overwrite behavior, permissions, how content vs file_path is resolved, validation failures, or what happens to an existing artifact with the same title.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted wording. However, it is arguably too terse for a seven-parameter save tool, so it is concise but under-informative.

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

Completeness2/5

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

For a mutation tool with seven parameters, no annotations, and no output schema, the description is not complete enough. It omits when to use it, how content and file_path relate, what artifact types are for, and what the save operation returns or overwrites.

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 high at 86%, so the schema already documents most parameters including type, title, content, file_path, project, and summary. The description adds only the general notion of a long AI output or file-backed artifact and does not clarify parameter interactions beyond what the schema provides.

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 gives a clear verb and resource ('Save a ... artifact') and narrows the scope to 'long AI output or file-backed artifact.' It does not differentiate from close siblings such as save_entry, save_result, save_handoff, or vault_mem_save, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus save_entry, save_result, vault_mem_save, or save_handoff. The phrase 'long AI output or file-backed artifact' implies a use case but does not state exclusions or selection criteria.

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

save_entryC

Save a vault entry (prompt, skill, decision, etc.)

NameRequiredDescriptionDefault
bodyNoOptional body content
tagsNo
typeNoEntry type: prompt|skill|reference|user|feedback|project_state|session|decision|artifact_summary|handoff|routing
titleNoEntry title (required)
statusNodraft|active|archived|deprecated|canonical
projectNoProject name or ID
purposeNoEntry purpose: WORK|KNOWLEDGE|LEARNING|RELATIONSHIP|STATE
summaryNoShort summary

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet a single sentence says nothing about whether this creates or overwrites an entry with a matching title, what permissions are needed, whether it is reversible, or what identifier is returned. Only the word 'Save' signals mutation. It does not contradict structured data, but it leaves almost every behavioral trait undisclosed.

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

Conciseness4/5

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

A single short sentence with the verb and resource front-loaded and no padding. It is efficient, though the terseness borders on under-specification for an 8-parameter mutation tool.

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?

With 8 parameters, no annotations, no output schema and no description of required fields (the schema even marks required: [] while title says '(required)'), the description should explain lifecycle and return behavior. It does not, leaving the agent under-informed for a write 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 88%, so the schema already documents body, type, title, status, project, purpose and summary. The description's 'prompt, skill, decision, etc.' merely previews the type enum already listed in the schema, adding no syntax, defaults, or format detail. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Save a vault entry') and grounds the abstract 'entry' with concrete examples (prompt, skill, decision), so the agent knows what kind of object is created. It does not distinguish this from siblings such as save_entry_ref, save_artifact, save_handoff or vault_mem_save, so the agent cannot tell which save path applies.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many sibling save/compose tools, no prerequisites, and no exclusions. The only guidance is implied by the parenthetical type examples, which is not enough to route reliably across ~35 siblings.

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

save_entry_refC

Create or update a link between two entries (graph edge)

NameRequiredDescriptionDefault
labelNoOptional label for the link
source_idNoSource entry ID (required)
target_idNoTarget entry ID (required)
relation_typeNoRelation type: references, supersedes, related_to, part_of, derived_from, implements, uses, extends, handoff_of, generated_from, depends_on

TDQS

C2.9/5.0
Behavior2/5

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

No annotations, so the description carries the full behavioral burden, and it is thin. It does not explain what determines create vs update (identity key — source+target+relation_type?), whether an existing edge is overwritten or duplicated, whether the label is replaced on update, or what permissions are required for a graph mutation.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though the brevity is partly under-specification rather than disciplined compression.

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

Completeness2/5

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

A mutation tool with no annotations, no output schema, and a non-obvious upsert semantic needs more than one clause. The agent is left unsure what happens on conflict, whether the call is idempotent, and what is returned.

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 all four parameters including the relation_type value list are already documented in the schema. The description adds only the graph-edge framing and nothing about parameter interaction (e.g., required source/target despite zero required fields declared).

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

Purpose4/5

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

States a specific verb pair and resource: create/update a link between two entries, qualified as a graph edge. The distinction from the sibling add_link is not addressed, and 'create or update' leaves the upsert trigger ambiguous, but the operation itself is unambiguous.

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 when-to-use guidance, no prerequisites, and no mention of the obviously competing siblings add_link, get_link, or list_entry_refs. The agent must infer from the name alone whether this or add_link is the right call.

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

save_handoffC

Save a structured agent-to-agent task handoff / checkpoint

NameRequiredDescriptionDefault
projectNoProject name or ID
task_idNoUnique task or subagent ID (required)
next_stepsNoPending actions for the receiving agent
step_summaryNoSummary of what was completed (required)
blocking_issuesNoBlockers or open questions
artifacts_producedNoFiles, commits, or exports created

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about persistence semantics, whether saving overwrites an existing handoff for the same task_id, required fields, or what is returned. The phrase 'structured ... checkpoint' hints at durable state, but an agent cannot tell from this whether the call is safe, idempotent, or how failures surface.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler, so it is efficient. Its brevity is more a completeness problem than a conciseness problem, but the size itself is appropriate.

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

Completeness2/5

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

For a six-parameter mutation tool with no annotations and no output schema, the description is too thin: it omits when to hand off, what happens to an existing handoff for the same task_id, and what the caller should expect after saving. The schema covers parameters, but the behavioral contract of the save operation is left largely unspecified.

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 six parameters (project, task_id, next_steps, step_summary, blocking_issues, artifacts_produced) are already documented in the schema. The description adds no field-level meaning beyond the schema, which is acceptable given the high coverage baseline.

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 names a specific verb (Save) and a specific resource (a structured agent-to-agent task handoff / checkpoint), which is meaningfully narrower than generic siblings like save_entry or save_result. It does not explicitly contrast itself with get_handoff or clarify the checkpoint vs handoff distinction, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when this tool should be used instead of save_entry, save_entry_ref, or save_result, nor when not to use it. The only hint is the phrase 'agent-to-agent', which implies a multi-agent handoff context but is not operationalized.

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

save_resultC

Save an AI prompt result as a vault entry

NameRequiredDescriptionDefault
nameNoResult name (required)
tagsNo
typeNoEntry type override
modelNoModel identifier
contentNoResult content (required)
categoryNoSummary/category
project_idNoProject ID or name
source_prompt_idNoSource prompt entry ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden, but it only discloses that this is a write operation creating a vault entry. It says nothing about permissions, overwrite or duplicate-name behavior, validation failures, or whether saving is idempotent.

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

Conciseness4/5

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

The single sentence is front-loaded and contains no filler. It is arguably too terse for an eight-parameter mutation tool, but it does not waste words.

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

Completeness2/5

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

For an eight-parameter write tool with no annotations and no output schema, one sentence is not enough. Key context such as required fields, side effects, and return behavior is left entirely to the schema and inference.

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 88% across eight parameters, so the schema already documents nearly every field. The description adds only the framing that the saved content is an AI prompt result, without elaborating on any parameter semantics beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource ('Save an AI prompt result as a vault entry'), which clearly conveys the action and output. It does not differentiate from close siblings like save_entry, save_artifact, or vault_mem_save, so an agent cannot tell from the description alone which save tool to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as save_entry or save_artifact. The only implied usage comes from the phrase 'AI prompt result,' leaving the agent to infer the selection conditions.

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

search_by_tagsC

Search entries by tags with all/any match against the junction table

NameRequiredDescriptionDefault
tagsNoTags to match (required)
typeNoFilter by entry type
limitNoMax results (default 20)
matchNoall (intersection) or any (union). Default: all
projectNoFilter by project

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read/search operation and mentions junction-table matching, but does not disclose result ordering, pagination behavior, permissions, or what the response looks like.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted wording. The only minor issue is the unexplained 'junction table' jargon, which adds little for an agent invoking the tool.

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?

The schema fully documents the five parameters, which covers the core invocation details. However, with no annotations and no output schema, the description should say more about result behavior, ordering, and pagination for a search 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 all five parameters are already documented in the schema. The description adds the all/any matching concept but does not provide meaning beyond the schema's own 'all (intersection) or any (union)' explanation.

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

Purpose4/5

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

States a specific verb and resource: 'Search entries by tags'. It also clarifies the tag-matching mode ('all/any match'), but does not explicitly differentiate itself from sibling search tools such as search_entries.

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 explains the all/any matching behavior but gives no guidance on when to use this tool instead of search_entries or vault_mem_search. There are no stated exclusions, prerequisites, or alternative-selection cues.

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

search_entriesC

Search entries with FTS5 and filters

NameRequiredDescriptionDefault
tagsNo
typeNoFilter by entry type
limitNoMax results (default 10)
queryNoSearch query
vectorNoUse vector/cosine similarity search instead of FTS5
projectNoFilter by project
purposeNoFilter by purpose (WORK|KNOWLEDGE|LEARNING|RELATIONSHIP|STATE)
include_archivedNoInclude archived entries

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and it does not. It names the search engine (FTS5) but says nothing about ranking, result shape, whether archived entries are excluded by default (implied only via the include_archived param name), cost of vector search, or pagination/limits behavior.

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

Conciseness3/5

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

One short clause with no wasted words, but it is under-specified rather than concise. The scarce space is spent on an implementation detail (FTS5) instead of disambiguation or default behavior.

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

Completeness2/5

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

An 8-parameter, zero-required search tool with no annotations and no output schema needs far more than one clause: default matching mode, tag filter semantics (AND/OR), archived handling, and return format are all absent. The complexity of the tool is not matched by the description.

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 88%, so most parameters are self-documenting and baseline 3 applies. The description's only added semantic is that FTS5 is the default mode and the vector parameter switches engines, which is modest value beyond the schema.

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

Purpose3/5

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

States a verb (search) and resource (entries) plus the mechanism (FTS5 with filters), which is more than tautology. But it never distinguishes itself from siblings like search_by_tags, vault_mem_search, or search_links, all of which also search entries by different means, so an agent cannot tell when this is the right search tool.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. The description does not explain relationship to search_by_tags (tag-only search) or vault_mem_search, nor does it say when to prefer FTS5 keyword matching versus the vector flag it exposes.

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

search_instructionsC

Search instruction recipes and command snippets with FTS5

NameRequiredDescriptionDefault
limitNoMax results (default 20)
queryNoSearch query (required)
projectNoFilter by project (optional)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'FTS5' is a genuine hint that the query is a full-text match expression rather than a substring, but nothing is said about result ordering/ranking, pagination behavior, or the returned record shape for a read tool with no output schema.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the verb and mechanism lead. It is efficient, though arguably under-sized for a tool whose sibling set makes disambiguation the main risk.

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?

With no annotations and no output schema, the description is the only place to learn about result ranking, default-limit semantics, and the instruction/snippet distinction, and it covers none of these. For a 3-parameter search tool in a crowded sibling set, this leaves meaningful gaps.

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 limit, query, and project are already documented in the schema. The description adds only the 'FTS5' hint, which marginally informs how the required query string should be composed but does not clarify filter interaction (e.g., whether project narrows before or after FTS matching).

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

Purpose4/5

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

States a specific verb and resource ('Search instruction recipes and command snippets') and adds the retrieval mechanism (FTS5), so the agent knows this is full-text search over the instruction store. It does not name or differentiate itself from siblings like search_entries or list_instructions, so an agent must infer that the target corpus is instructions rather than general entries.

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 gives no when-to-use guidance, no exclusions, and no alternatives. With siblings such as list_instructions, get_instruction, and search_entries present, an agent receives nothing about when full-text instruction search beats enumerating or fetching by id.

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

session_wrapC

Save a compact session summary with decisions, pending items, and learnings

NameRequiredDescriptionDefault
pendingNo
projectNoProject name or ID
summaryNoSession summary (required)
artifactsNo
decisionsNo
learningsNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says the tool saves content but does not disclose whether saves overwrite or append, whether project scoping affects storage, what permissions are needed, or what is returned.

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, front-loaded sentence with no wasted words. It efficiently communicates the core payload categories without burying the main purpose.

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

Completeness2/5

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

For a six-parameter save tool with no annotations and no output schema, the description is incomplete. It omits project scoping, artifacts, requiredness, append/overwrite behavior, and return information that an agent would need to invoke it confidently.

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 only 33%, so the description must compensate. It adds useful meaning for decisions, pending items, and learnings, but does not explain the project or artifacts parameters, array item formats, or which fields are required in practice.

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

Purpose4/5

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

The description states a specific verb and resource: save a session summary, including decisions, pending items, and learnings. It is clear what the tool does, but it does not distinguish itself from sibling save tools such as save_handoff or save_entry.

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 implies this is for wrapping up a session, but it gives no explicit guidance on when to use it versus alternatives like save_handoff, save_entry, or save_result. There are no exclusions or contextual conditions.

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

vault_mem_contextC

Build a compact agent-ready memory context pack for a project

NameRequiredDescriptionDefault
projectNoProject name or ID (required)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It states that the tool builds a compact pack, but does not disclose whether it is read-only, what the pack contains, how large it may be, or what side effects, permissions, or response format to expect.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted wording. Its brevity is efficient, though it leaves important behavioral details unstated.

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?

With no annotations and no output schema, the description should explain what the "memory context pack" includes and how the result is shaped. Instead it gives only a high-level purpose, leaving an agent unable to predict the output or distinguish this tool from related context-fetching siblings.

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?

There is one parameter and schema description coverage is 100%, so the schema already documents "project" as a name or ID. The description adds no syntax, format, or fallback meaning beyond what the schema provides, which fits the baseline 3 for fully covered parameters.

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 uses a specific verb, "Build," and a clear resource, "compact agent-ready memory context pack," scoped to a project. It is understandable without opening the schema, but it does not distinguish itself from nearby siblings such as get_context_bundle or get_context.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like get_context_bundle, get_context, or vault_mem_get. The phrase "for a project" implies a context, but the description provides no exclusions, prerequisites, or routing conditions.

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

vault_mem_getC

Get complete content and metadata of an observation memory by ID

NameRequiredDescriptionDefault
idNoObservation memory ID
observation_idNoAlias for id

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It implies a read and says the response includes content and metadata, but never states what happens when the ID is unknown, whether both id and observation_id must agree, or anything about size/truncation of 'complete content'.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though the terseness is part of why the usage and error behavior gaps exist.

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

Completeness3/5

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

For a 2-parameter, no-annotation, no-output-schema retrieval tool, the description covers purpose and the existence of metadata in the return, but omits not-found behavior and how it relates to the other vault_mem_* tools, leaving an agent to guess on failure paths.

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 both parameters (id and its alias observation_id) are already documented. The description only echoes 'by ID' and adds no extra semantics such as which alias wins if both are supplied. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('observation memory') plus scope ('complete content and metadata ... by ID'). It is distinguishable from vault_mem_search or vault_mem_timeline by its by-ID retrieval, but it never names those siblings explicitly.

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 gives no guidance on when to use this versus vault_mem_search, vault_mem_context, or vault_mem_timeline. An agent must infer that this is the direct-fetch path rather than the discovery path.

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

vault_mem_saveA

Save an episodic observation memory with deduplication and topic indexing

NameRequiredDescriptionDefault
tagsNoAdditional custom tags
typeNoMemory type: decision|architecture|workflow|bugfix|discovery|pattern|config|feedback
scopeNoScope: project|global|session (optional)
titleNoShort title (optional, auto-generated from content if empty)
topicNoAlias for topic_key
contentNoMemory content or observation (required)
projectNoProject name or ID (optional)
topic_keyNoTopic key for memory organization e.g. odd/tasks/feature (optional)

TDQS

A3.7/5.0
Behavior4/5

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

Since there are no annotations, the description must carry the full burden. It effectively communicates critical behavioral traits—deduplication and topic indexing—which are key operational details not captured in the schema alone.

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 tool is summarized in a single, highly efficient sentence. Every word—including the technical terms like 'episodic' and 'indexing'—serves a distinct and essential purpose.

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?

The tool has a high complexity (8 parameters, specific memory types, scopes), but the single sentence only provides a high-level overview. It fails to provide context for the interplay between complex fields like 'topic' vs 'topic_key' or the specific implications of 'deduplication'.

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 schema description coverage is 100%, meaning the schema handles all parameter definitions. The description does not add unique semantic meaning beyond listing the resource management functions.

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 specific language ('Save,' 'episodic observation memory') and explicitly states high-value features ('deduplication,' 'topic indexing'), clearly defining the resource and its unique capability.

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?

While the description defines what the tool saves, it offers no guidance on when to use `vault_mem_save` versus the many similar memory saving tools in the sibling list (e.g., `save_entry`, `save_artifact`). There are no 'when' or 'when not' criteria provided.

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

vault_mem_timelineC

Retrieve chronological context before and after a memory observation

NameRequiredDescriptionDefault
idNoTarget observation memory ID
afterNoNumber of later observations to include (default 3)
beforeNoNumber of earlier observations to include (default 3)
projectNoProject scope (optional)
observation_idNoAlias for id

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and it discloses almost nothing. It does not say the operation is read-only, how the before/after windows default or cap, what happens if the memory ID does not exist, or how the 'id' vs 'observation_id' alias is resolved when both are supplied.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, and the key concept (chronological context around an observation) leads. It is efficient, though its brevity contributes to the coverage gaps elsewhere.

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

Completeness2/5

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

For a 5-parameter tool with zero annotations and no output schema, the description leaves out the return shape (what a 'timeline' entry looks like), default window behavior, and how the two ID fields interact. An agent could call it, but could not predict what it gets back or which ID field to trust.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters including the before/after defaults and the alias note; the baseline of 3 applies. The description adds no additional meaning beyond the schema, and notably does not resolve the alias-precedence question.

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

Purpose4/5

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

The description states a specific verb+resource combination ('Retrieve chronological context ... around a memory observation') that clearly signals a timeline/windowing read operation. It does not differentiate itself from the near-sibling vault_mem_context, which an agent could easily confuse with this tool, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus vault_mem_get (single observation) or vault_mem_context (broader context bundle). Nothing indicates prerequisites, or whether an observation ID must already exist. The agent must infer the selection rule entirely from the name.

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. 39 tool updatesv0.1.0
    • First observedadd_instruction
    • First observedadd_link
    • First observedarchive_entry
    • First observedcompare_entries
    • First observedcompose_series
    • First observedget_context
    • First observedget_context_bundle
    • First observedget_entry
    • First observedget_entry_graph
    • First observedget_handoff
    • First observedget_instruction
    • First observedget_link
    • First observedget_run
    • First observedget_stats
    • First observedlist_entry_refs
    • First observedlist_entry_versions
    • First observedlist_instructions
    • First observedlist_links
    • First observedlist_projects
    • First observedlist_workflow_runs
    • First observedrender_workflow
    • First observedrestore_entry_version
    • First observedroute_scenario
    • First observedrun_workflow
    • First observedsave_artifact
    • First observedsave_entry
    • First observedsave_entry_ref
    • First observedsave_handoff
    • First observedsave_result
    • First observedsearch_by_tags
    • First observedsearch_entries
    • First observedsearch_instructions
    • First observedsearch_links
    • First observedsession_wrap
    • First observedvault_mem_context
    • First observedvault_mem_get
    • First observedvault_mem_save
    • First observedvault_mem_search
    • First observedvault_mem_timeline

TDQS

C2.9/5.0

Scored across 39 tools

Disambiguation3/5

Tools are broadly separated by resource (entries, links, instructions, memories, workflows), but there is real overlap: get_context, get_context_bundle, and vault_mem_context all build agent context; save_entry and save_result both save entries; search_entries and search_by_tags overlap. Descriptions help, but an agent can still hesitate between several similarly scoped tools.

Naming Consistency3/5

Most names are readable snake_case, often verb_noun (save_entry, get_entry, list_links, search_instructions). However, conventions are mixed: vault_mem_save puts the verb last with a namespace prefix, while session_wrap, compose_series, route_scenario, and render_workflow use less predictable verb/noun shapes.

Tool Count2/5

With 39 tools, the server is clearly overgrown for a single MCP surface, spanning entries, graph refs, versions, workflows, runs, memories, links, instructions, handoffs, artifacts, and projects. This likely exceeds what an agent can comfortably scan and select from without grouping or splitting.

Completeness3/5

Entry lifecycle coverage is strong, including save/get/search/archive, versions, restore, graph refs, tags, compare, and context packs. But secondary resources have notable gaps: links and instructions lack update/delete, memories lack update/delete, handoffs have only save/get, and projects have list but no create/update operations.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Developer Knowledge OS — local-first bimodal workspace for humans (TUI) and AI agents (MCP). Manage Git repos, vault notes, and assets with 19 MCP tools including unified project context queries.
    AGPL 3.0
  • A
    license
    C
    quality
    B
    maintenance
    Enables local-first LLM orchestration with persistent memory, knowledge management, routing, swarm patterns, API probing, tests, automation planning, and plugin discovery via a stdio MCP server, using SQLite for offline storage.
    51
    45 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes a living systems memory vault to autonomous agents, letting them search notes with BM25 ranking, read sections within token budgets, extract API/port/schema contracts, compute dependency blast radius, and run machine-verifiable invariant assertions before mutating code. It also supports surgical frontmatter edits, schema linting, wikilink integrity checks, and worklog recording, over stdio MCP.
    MIT