Skip to main content
Glama

Memory Journal MCP Server

GitHub npm Docker Pulls License: MIT Status MCP Registry Security TypeScript Coverage E2E Tests E2E Tests CI

๐Ÿ“š Full Documentation (Wiki) โ€ข Changelog โ€ข Security โ€ข Release Article

TIP

Value Proposition Bridge disconnected AI sessions seamlessly. Enable persistent project memory instantly. Automate handoffs with robust GitHub integration. Eliminate AI amnesia today.

๐Ÿš€ Quick Deploy:

  • npm Package - npm install -g memory-journal-mcp (or pnpm add -g memory-journal-mcp)

  • Docker Hub - Alpine-based with full semantic search

๐Ÿง  Eliminate AI Amnesia

Large projects face a critical challenge. You lose context between sessions.

  • Stop Thread Amnesia - AI conversations start fresh. They ignore previous work.

  • Retain Deep Context - You scatter decisions and code across threads. We save them.

  • End Repeated Work - AI repeats failed solutions. We remember your attempts.

  • Prevent Context Overload - You copy history manually. We automate context delivery.

Memory Journal builds your project's long-term memory. It bridges fragmented AI sessions seamlessly.


Experience true context-aware development:

  • "Why did we choose SQLite over Postgres for this service last month?" (Semantic search)

  • "Run the /issue-triage workflow on the top priority ticket in the Kanban board." (GitHub operations)

  • "Who has been touching the auth module recently, and what's our team collaboration density?" (Team analytics)

  • "Commit the changes and automatically generate a structured journal entry using the `--journal` wrapper flag." (Automated lifecycles)

  • "Draw a visual graph showing how my last 10 architectural decisions relate to each other." (Knowledge graph)

Comprehensive access to internal state via resources (memory://briefing, memory://workflows, memory://rules, memory://health, memory://help, memory://staleness, GitHub status/insights, team stats, metrics/latency, and more) plus dynamic repo variants for cross-repo targeting (like memory://briefing/{repo} or memory://kanban/{repo}/{project_number}). Resources documentation โ†’


Related MCP server: claude-engram

๐ŸŽฏ What Sets Us Apart

MCP Tools ยท Workflow Prompts ยท Resources ยท Tool Groups ยท Code Mode ยท GitHub Commander (Issue Triage, PR Review, Milestone Sprints, Security/Quality/Perf Audits) ยท GitHub Integration (Issues, PRs, Actions, Kanban, Milestones, Insights) ยท Team Collaboration (Shared DB, Vector Search, Cross-Project Insights)

Feature

Description

Session Intelligence

Auto-query project history, create checkpoints, and hand off context between sessions automatically.

GitHub Integration

Manage Issues, PRs, Actions, Kanban boards, and milestones. Access Copilot reviews and repository insights.

Dynamic Project Routing

Switch contexts seamlessly and access CI/Issue tracking across multiple repositories from a single server instance.

Knowledge Graphs

Link specifications, implementations, tests, and PRs visually using Mermaid diagrams.

Hybrid Search

Find entries instantly using a blend of keyword, semantic, and date-range searches.

Code Mode

Execute multi-step operations efficiently in a sandboxed environment to reduce token usage.

Adaptive Session Briefing

Deliver real-time workspace context dynamically, including live CI health, local Git status, and unreleased changes.

Reports & Analytics

Generate standups, retrospectives, PR summaries, digests, and period analyses.

Heuristic Scoring

Optimize context delivery by scoring entries based on veracity and impact.

Team Collaboration

Share databases across teams with cross-project insights, author attribution, and role-based access control.

Data Interoperability

Export schemas safely, sync Markdown directories, and maintain a unified IO namespace.

Backup & Restore

Secure data with automated scheduling, retention policies, and one-command restores.

Auto-Pruning

Soft-delete low-value entries automatically to maintain search relevance over long-running projects.

Security & Transport

Ensure secure connections with OAuth 2.1, Streamable HTTP, rate limiting, and SQL injection prevention.

Structured Error Handling

Provide agents with classification, remediation hints, and recoverability signals on every tool call.

Agent Collaboration

Share context between IDE agents and Copilot. Search review findings and let agents suggest reusable rules.

Native Agent Skills

Establish permanent AI behavior and architecture rules using bundled foundational coding paradigms.

GitHub Commander

Audit code, triage issues, review PRs, and run sprint milestones via automated pipeline skills.


Isolate Environments with Multi-Tenancy

Memory Journal supports multi-tenancy out of the box via the workspace_id construct, acting as a strict isolation barrier for multiple journals sharing the same SQLite database file.

  • Auto-Resolution: When workspace_id is omitted, the server automatically resolves the target workspace by matching project_number against PROJECT_REGISTRY, matching content/tag keyword aliases, or inspecting process.cwd(), before falling back to DEFAULT_WORKSPACE_ID (default: default).

  • Data Partitioning & Cross-Workspace Queries: Core CRUD, Search, and Analytics tools accept workspace_id (e.g., workspace_id: "alpha") to scope operations strictly to that workspace. Read and search tools also accept workspace_id: "*" to query across all workspaces.

  • Immutability: A workspace_id is permanently assigned upon entry creation and cannot be changed afterward.

  • Server Config: Set --default-workspace-id (or the DEFAULT_WORKSPACE_ID environment variable) to configure the default fallback workspace for the server instance, allowing you to run multiple isolated journal interfaces on a single physical database.


flowchart TB
    subgraph Session["๐Ÿค– AI Session Start"]
        Briefing["๐Ÿ“‹ Read Briefing<br/>(memory://briefing)"]
    end

    subgraph Core["๐Ÿ“ Journal Operations"]
        Create["Create Entry"]
        Retrieve["Retrieve & Search"]
        Link["Link Entries"]
    end

    subgraph Search["๐Ÿ” Hybrid Search"]
        FTS["Keyword (FTS5)"]
        Semantic["Semantic (Vector)"]
        DateRange["Date Range"]
        RRF["Reciprocal Rank Fusion"]
    end

    subgraph GitHub["๐Ÿ™ GitHub Integration"]
        Issues["Issues & Milestones"]
        PRs["Pull Requests"]
        Actions["GitHub Actions"]
        Kanban["Kanban Boards"]
        Insights["Repository Insights"]
    end

    subgraph Outputs["๐Ÿ“Š Outputs"]
        Reports["Standups & Retrospectives"]
        Graphs["Knowledge Graphs"]
        Timeline["Project Timelines"]
    end

    Session --> Core
    Core --> Search
    Core <--> GitHub
    Search --> Outputs
    GitHub --> Outputs

Suggested Rule (Add to AGENTS.md, GEMINI.md, system prompts, etc.)

๐Ÿ›‘ Session Initialization Routine

When the user initializes the session context by executing the load-briefing prompt:

  1. You will receive the output of the memory://briefing/{repo_name} resource.

  2. Prepend your response EXACTLY as:

    ๐Ÿ“‹ Briefing loaded โ€” {repo_name} {paste ENTIRE briefing here}

  3. Address the user's request below the briefing.

  4. NEVER autonomously execute tasks listed in the briefing.

  5. Do NOT proactively ask the user to load the briefing. Wait for them to use the prompt.


Control Access with Tool Filtering

IMPORTANT

All shortcuts and tool groups includeCode Mode (mj_execute_code) by default for token-efficient operations. To exclude it, add -codemode to your filter: --tool-filter starter,-codemode

Control which tools are exposed via MEMORY_JOURNAL_MCP_TOOL_FILTER (or CLI: --tool-filter):

Filter

Use Case

full

All tools (default)

starter

Core + search + codemode

essential

Minimal footprint

readonly

Disable all mutations

-github

Exclude a group

-github,-analytics

Exclude multiple groups

Filter Syntax: shortcut or group or tool_name (whitelist mode) ยท -group (disable group) ยท -tool (disable tool) ยท +tool (re-enable after group disable)

Custom Selection: List individual tool names to create your own whitelist: --tool-filter "create_entry,search_entries,semantic_search"

Groups: core, search, analytics, relationships, io, admin, github, git, backup, team, codemode

Complete tool filtering guide โ†’


๐Ÿ“‹ Unlock Core Capabilities

๐Ÿ› ๏ธ MCP Tools

Group

Description

codemode

Code Mode (sandboxed code execution) ๐ŸŒŸ Recommended

core

Entry CRUD, tags, test, staleness

search

Text search, date range, semantic, vector stats, cross-team

analytics

Statistics, cross-project insights

relationships

Link entries, visualize graphs

io

JSON/Markdown export and File-level Markdown Data Integration Interoperability (Import/Export)

admin

Update configuration, update, delete, restore, rebuild/add to vector index, merge tags, search audit log, bulk operations (batch create/update/delete)

github

Issues, PRs, context, Kanban, Milestones, Insights, issue lifecycle, Copilot Reviews

git

Commit history, search, release info, patterns, staleness checks

backup

Backup, list, restore, cleanup

team

CRUD, search, stats, relationships, IO (Markdown import/export), backup, vector search, cross-project insights, matrix, RBAC member management (requires TEAM_DB_PATH)

Complete tools reference โ†’

๐ŸŽฏ Workflow Prompts

Session briefing, time period analysis, goal tracking, PR & issue command, session summaries, adversarial plan reviews, exhaustive code & security audits, secure commit workflows, anti-hallucination healing. Complete prompts guide โ†’

๐Ÿ“ก Resources

See the Complete resources guide โ†’ for the full list of dynamic context resources, including memory://briefing, memory://instructions, GitHub integration endpoints, telemetry metrics, and templated views.

Note: The memory://briefing, memory://graph/actions, memory://actions/recent, memory://github/status, memory://github/insights, memory://github/milestones, memory://milestones/{number}, memory://kanban/{project_number}, and memory://kanban/{project_number}/diagram resources also accept an optional /{repo} path suffix for cross-repo targeting.


โšก Code Mode: Maximum Efficiency (90% Token Savings)

Code Mode (mj_execute_code) is a revolutionary approach that dramatically reduces token usage by up to 90% and is included by default in all presets. Instead of spending thousands of tokens on sequential tool calls, AI agents use a single sandboxed execution to reason faster.

Code executes in a worker_threads sandbox designed as a secure multi-tenant process isolation environment. All mj.* API calls execute against the journal within the sandbox, providing:

  • V8 code generation restrictions โ€” eval() and Function() construction from strings disabled at the V8 engine level via codeGeneration: { strings: false, wasm: false }

  • Frozen prototypes โ€” all built-in prototypes (Object, Function, Array, Error, etc.) frozen inside the vm context to prevent dynamic constructor chain escapes

  • Static code validation โ€” Multiple static regex rules blocking require(), process, eval(), Reflect.*, Symbol.*, new Proxy(), and filesystem/network access

  • Proxy constructor nullified โ€” Proxy: undefined in the sandbox prevents meta-object protocol abuse

  • RPC allowlist โ€” host-side validation prevents workers from invoking unauthorized API methods

  • Rate limiting โ€” 60 executions per minute per client

  • Hard timeouts โ€” configurable execution limit (default 30s)

  • Egress boundary enforcement โ€” result serialization capped to prevent OOM via oversized payloads

  • Full API access โ€” all tool groups are available via mj.* (e.g., mj.core.createEntry(), mj.search.searchEntries(), mj.github.getGithubIssues())

  • Strict Readonly Contract โ€” Calling any mutation method under --tool-filter readonly safely halts the sandbox to prevent execution, returning a structured { success: false, error: "..." } response to the agent instead of a raw MCP protocol exception.

โšก Code Mode Only (Maximum Token Savings)

Run with only Code Mode enabled โ€” a single tool that provides access to its full capability through the mj.* API:

{
  "mcpServers": {
    "memory-journal-mcp": {
      "command": "memory-journal-mcp",
      "args": ["--tool-filter", "codemode"]
    }
  }
}

This exposes just mj_execute_code. The agent writes JavaScript against the typed mj.* SDK โ€” composing operations across all tool groups and returning exactly the data it needs โ€” in one execution. This mirrors the Code Mode pattern pioneered by Cloudflare for their entire API: fixed token cost regardless of how many capabilities exist.

Disabling Code Mode

If you prefer individual tool calls, exclude codemode:

{
  "args": ["--tool-filter", "starter,-codemode"]
}

Note: Configuration is resolved using strict precedence: CLI flags > Environment Variables > Config File > Defaults.

๐Ÿ› ๏ธ Debugging Configuration: Run memory-journal-mcp --dump-config (or pass --dump-config as an arg) to print the fully resolved configuration payload with automatically redacted secrets. This is the primary method for diagnosing overriding issues.

Configure Basics Quickly

๐Ÿ’ก Tip: Don't want to manually escape JSON strings for PROJECT_REGISTRY? Run npx memory-journal-mcp project create in your terminal to automatically bootstrap and update your MCP configuration!

{
  "mcpServers": {
    "memory-journal-mcp": {
      "command": "memory-journal-mcp",
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here",
        "PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/your/git/repo\",\"project_number\":1}}",
        "ALLOWED_IO_ROOTS": "/path/to/your/git/repo"
      }
    }
  }
}

Power Up with Advanced Configuration

Showcasing the full power of the server, including Multi-Project Routing, Team Collaboration, Copilot awareness, and Context Injections.

๐Ÿ’ก Tip: Use npx memory-journal-mcp project create to easily configure multiple repositories into your PROJECT_REGISTRY without manual JSON escaping!

{
  "mcpServers": {
    "memory-journal-mcp": {
      "command": "memory-journal-mcp",
      "env": {
        "DB_PATH": "/path/to/your/memory_journal.db",
        "TEAM_DB_PATH": "/path/to/shared/team.db",
        "GITHUB_TOKEN": "ghp_your_token_here",
        "PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/repo\",\"project_number\":1},\"other-repo\":{\"path\":\"/path/to/other\",\"project_number\":5}}",
        "ALLOWED_IO_ROOTS": "/path/to/repo,/path/to/other,/path/to/your/skills",
        "AUTO_REBUILD_INDEX": "true",
        "MEMORY_JOURNAL_MCP_TOOL_FILTER": "codemode",
        "CODEMODE_INTERNAL_FULL_ACCESS": "true",
        "BRIEFING_ENTRY_COUNT": "3",
        "BRIEFING_SUMMARY_COUNT": "1",
        "BRIEFING_INCLUDE_TEAM": "true",
        "BRIEFING_ISSUE_COUNT": "3",
        "BRIEFING_PR_COUNT": "3",
        "BRIEFING_PR_STATUS": "true",
        "BRIEFING_WORKFLOW_COUNT": "3",
        "BRIEFING_WORKFLOW_STATUS": "true",
        "BRIEFING_COPILOT_REVIEWS": "true",
        "RULES_FILE_PATH": "/path/to/your/RULES.md",
        "SKILLS_DIR_PATH": "/path/to/your/skills",
        "MEMORY_JOURNAL_WORKFLOW_SUMMARY": "/deploy: prod deployment | /audit: security scan",
        "AUDIT_LOG_PATH": "/path/to/your/mcp-audit.jsonl",
        "TEAM_AUTHOR": "your_username"
      }
    }
  }
}

๐Ÿ’ก Tip: Optimize your context window! Journal entries (BRIEFING_ENTRY_COUNT) capture frequent, granular actions (e.g. bug fixes, implementation steps). Session summaries (BRIEFING_SUMMARY_COUNT) surface high-level retrospectives meant to pass strategic context continuously across distinct AI sessions. Use both appropriately to keep the agent briefing highly focused!

๐Ÿ“‹ Customizing the Session Briefing

The memory://briefing resource is dynamically assembled at each session start to provide rich, token-efficient ambient context. By default, it automatically surfaces:

  • System State: Server version, capability statuses, resource/tool counts, test health, and memory://metrics/summary breadcrumbs.

  • Repository Context: Git working tree status, unreleased changes, exact code-map paths, and prioritized gatekeeper CI workflows.

  • Ambient Context: Active workspace paths, local time, analytics.

You control exactly what additional content your agent sees across three dimensions:

Dimension

Variables

What It Controls

Focus

TOOL_FILTER

Control tool exposure: full (default), starter, essential

Journal Content

BRIEFING_ENTRY_COUNT, BRIEFING_SUMMARY_COUNT, BRIEFING_INCLUDE_TEAM

How many recent entries, session summaries, and whether team entries appear

GitHub Enrichment

BRIEFING_ISSUE_COUNT, BRIEFING_PR_COUNT, BRIEFING_PR_STATUS, BRIEFING_MILESTONE_COUNT, BRIEFING_WORKFLOW_COUNT, BRIEFING_WORKFLOW_STATUS, BRIEFING_COPILOT_REVIEWS

Issues, PRs, milestones, CI runs, and Copilot review state surfaced in the briefing

Context Injections: Set RULES_FILE_PATH and SKILLS_DIR_PATH to surface user rules and agent skills as companion resources (memory://rules, memory://skills) alongside the briefing.

Repo Targeting: In multi-repo setups, agents read memory://briefing/{repo} to get a briefing scoped to a specific repository registered in PROJECT_REGISTRY.

Minimal (fast sessions) โ€” Reduce briefing to bare essentials for quick interactions:

"BRIEFING_ENTRY_COUNT": "1",
"BRIEFING_SUMMARY_COUNT": "0",
"TOOL_FILTER": "essential"

Full Context (onboarding agents) โ€” Maximize context for agents unfamiliar with the project:

"BRIEFING_ENTRY_COUNT": "5",
"BRIEFING_SUMMARY_COUNT": "3",
"BRIEFING_INCLUDE_TEAM": "true",
"BRIEFING_ISSUE_COUNT": "5",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true",
"TOOL_FILTER": "full"

DevOps-Heavy โ€” Emphasize CI/CD and GitHub state for infrastructure workflows:

"BRIEFING_WORKFLOW_COUNT": "5",
"BRIEFING_WORKFLOW_STATUS": "true",
"BRIEFING_ISSUE_COUNT": "3",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true"

Full briefing customization guide โ†’

Variants (modify the config above):

Variant

Change

Minimal (no GitHub)

Remove the env block entirely

npx (no install)

Replace "command" with "npx" and add "args": ["-y", "memory-journal-mcp"]

From source

Replace "command" with "node" and add "args": ["dist/cli.js"]

Code Mode only

Add "args": ["--tool-filter", "codemode"] (single tool, all capabilities)

Docker

Replace "command" with "docker" and use run -i --rm -v ./data:/app/data writenotenow/memory-journal-mcp:latest as args

Team collaboration

Add "TEAM_DB_PATH": "./team.db" to env

Restart your MCP client and start journaling!

Connect Remotely with HTTP/SSE Transport

๐Ÿ”’ Security Posture: Stdio vs HTTP

  • Stdio (Default): Runs implicitly within the secure boundaries of your local IDE or command-line environment. No explicit authentication is required because the execution context is already trusted.

  • HTTP/SSE: Exposes the server over a network socket. By default, HTTP binds ONLY to localhost and blocks wildcard CORS to prevent unauthorized access and CSRF attacks. Public network binding (--server-host 0.0.0.0) requires explicit authentication (--auth-token or --oauth-enabled). The server will throw a fatal error if you attempt to expose it publicly without securing it.

For remote access or web-based clients, run the server in HTTP mode:

memory-journal-mcp --transport http --port 3000

To bind to all interfaces (required for containers) and enable the automated proactive analytics scheduler (e.g. daily digest), you MUST provide an authentication token:

export MCP_AUTH_TOKEN="your_secure_random_token"
memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0 --digest-interval 1440

Endpoints:

Endpoint

Description

Mode

GET /

Server info and available endpoints

Both

POST /mcp

JSON-RPC requests (initialize, tools/call, etc.)

Both

GET /mcp

SSE stream for server-to-client notifications

Stateful

DELETE /mcp

Session termination

Stateful

GET /sse

Legacy SSE connection (MCP 2024-11-05)

Stateful

POST /messages

Legacy SSE message endpoint

Stateful

GET /health

Health check ({ status, timestamp })

Both

GET /metrics

Prometheus metrics export (requires flag)

Both

GET /.well-known/oauth-protected-resource

RFC 9728 Protected Resource Metadata

Both

Session Management: The server uses stateful sessions by default. Include the mcp-session-id header (returned from initialization) in subsequent requests.

  • OAuth 2.1 โ€” RFC 9728/8414, JWT/JWKS, granular scopes (opt-in via --oauth-enabled)

  • Comprehensive Security Headers โ€” CSP, HSTS (opt-in), X-Frame-Options, and more

  • Rate Limiting โ€” 100 req/min per IP ยท CORS โ€” configurable multi-origin (exact-match) ยท 1MB body limit

  • Server Timeouts โ€” Request (120s), keep-alive (65s), headers (66s) ยท 404 handler ยท Cross-protocol guard

  • Build Provenance ยท SBOM ยท Supply Chain Attestations ยท Non-root execution

Example with curl:

Initialize session (returns mcp-session-id header):

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

List tools (with session):

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: YOUR_SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Stateless Mode (Serverless)

For serverless deployments (Lambda, Workers, Vercel), use stateless mode:

memory-journal-mcp --transport http --port 3000 --stateless

Mode

Progress Notifications

Legacy SSE

Serverless

Stateful (default)

โœ… Yes

โœ… Yes

โš ๏ธ Complex

Stateless (--stateless)

โŒ No

โŒ No

โœ… Native

Automated Scheduling (HTTP Only)

When running in HTTP/SSE mode, enable periodic maintenance jobs with CLI flags. These jobs run in-process on setInterval โ€” no external cron needed.

Note: These flags are ignored for stdio transport because stdio sessions are short-lived (tied to your IDE session). For stdio, use OS-level scheduling (Task Scheduler, cron) or run the backup/cleanup tools manually.

memory-journal-mcp --transport http --port 3000 \
  --backup-interval 60 --keep-backups 10 \
  --vacuum-interval 1440 \
  --rebuild-index-interval 720

Flag

Default

Description

--backup-interval <min>

0 (off)

Create timestamped database backups and prune old ones automatically

--keep-backups <count>

5

Max backups retained during automated cleanup

--vacuum-interval <min>

0 (off)

Run PRAGMA optimize and flush database to disk

--rebuild-index-interval <min>

0 (off)

Full vector index rebuild to maintain semantic search quality

--report-interval <min>

0 (off)

Scheduled report generation interval in minutes

--digest-interval <min>

0 (off)

Scheduled periodic digest analysis report

Each job is error-isolated โ€” a failure in one job won't affect the others. Scheduler status (last run, result, next run) is visible via memory://health.

Integrate Seamlessly with GitHub

The GitHub tools (get_github_issues, get_github_prs, etc.) auto-detect the repository from your git context when PROJECT_REGISTRY is configured or the MCP server is run inside a git repository.

Multi-Project Workflows: For agents to seamlessly support multiple projects, configure your PROJECT_REGISTRY (tip: use npx memory-journal-mcp project create).

Dynamic Context Resolution & Auto-Detection

When executing GitHub tools (issues, PRs, context, etc.), the server resolves repository context in this order:

  1. Dynamic Project Routing: If the agent passes a repo string that matches a key in your PROJECT_REGISTRY, the server dynamically mounts the physical directory mapped to that project. It executes git commands locally and automatically infers the owner.

  2. Explicit Override: If the agent provides both owner and repo explicitly, those values override auto-detection for API calls.

  3. Missing Context: Without PROJECT_REGISTRY or explicit parameters, the server blocks execution and returns {requiresUserInput: true} to prompt the agent. If an agent encounters this blocked state, it can seamlessly recover by invoking the mj.admin.registerProject() method via Code Mode to auto-configure the project registry on the fly.

Automatic Project Routing (Kanban / Issues)

When opening an issue or viewing/moving a Kanban card, the server needs a GitHub Project number. It determines this via:

  1. Exploring the raw project_number argument passed by the agent.

  2. Checking if the repo string precisely matches an entry in your PROJECT_REGISTRY, seamlessly mapping it to its pre-configured project_number.

  3. Falling back to the globally defined DEFAULT_PROJECT_NUMBER if set.

๐Ÿ” OAuth 2.1 Authentication

For production deployments, enable OAuth 2.1 authentication on the HTTP transport:

Component

Status

Description

Protected Resource Metadata

โœ…

RFC 9728 /.well-known/oauth-protected-resource

Auth Server Discovery

โœ…

RFC 8414 metadata discovery with caching

Token Validation

โœ…

JWT validation with JWKS support

Scope Enforcement

โœ…

Granular read, write, admin scopes

HTTP Transport

โœ…

Streamable HTTP with OAuth middleware

Supported Scopes:

Scope

Tool Groups

read

core, search, analytics, relationships, io

write

github, team (+ all read groups)

admin

admin, backup, codemode (+ all write/read groups)

Quick Start:

memory-journal-mcp --transport http --port 3000 \
  --oauth-enabled \
  --oauth-issuer https://auth.example.com/realms/mcp \
  --oauth-audience memory-journal-mcp \
  --oauth-jwks-uri https://auth.example.com/realms/mcp/protocol/openid-connect/certs

Or via environment variables:

export OAUTH_ENABLED=true
export OAUTH_ISSUER=https://auth.example.com/realms/mcp
export OAUTH_AUDIENCE=memory-journal-mcp
export OAUTH_CLOCK_TOLERANCE=5
memory-journal-mcp --transport http --port 3000

Note: OAuth is opt-in. When not enabled, the server falls back to simple token authentication via MCP_AUTH_TOKEN environment variable, or runs without authentication.

๐Ÿ”„ Session Management

  1. Session start โ†’ agent reads memory://briefing (or memory://briefing/{repo}) and shows project context

  2. Session summary โ†’ use /session-summary to capture progress and next-session context

  3. Next session's briefing includes the previous summary โ€” context flows seamlessly

๐Ÿ”ง Configuration

Environment Variables

Variable

Description

Core Database

DB_PATH

Path to the personal journal SQLite database

TEAM_DB_PATH

Path to the shared team SQLite database

DEFAULT_WORKSPACE_ID

Default workspace ID for multi-tenant isolation (default)

GITHUB_TOKEN

Personal access token for GitHub integrations

PROJECT_REGISTRY

JSON map of repo names to local paths and project numbers

Security & Tooling

ALLOWED_IO_ROOTS

Comma-separated paths for Code Mode filesystem boundaries

TOOL_FILTER

Control tool exposure (full, starter, readonly, -github)

CODE_MODE_MAX_RESULT_SIZE

Max execution payload buffer size in Code Mode (bytes)

CODEMODE_INTERNAL_FULL_ACCESS

Allow Code Mode to bypass tool filters internally

MCP_AGENT_HEALING

Enable/disable autonomous tool & parameter healing (true/false, CLI: --no-agent-healing)

MAX_TOOL_INPUT_ELEMENTS

Max array/object elements in tool inputs (default: 25000, 0 = disabled)

Briefing & Context

BRIEFING_ENTRY_COUNT

Number of granular journal entries in briefing (default: 3)

BRIEFING_SUMMARY_COUNT

Number of session summaries in briefing (default: 1)

BRIEFING_INCLUDE_TEAM

Include entries from the team database (default: false)

BRIEFING_ISSUE_COUNT / BRIEFING_PR_COUNT

GitHub Issues and PRs to list with titles

BRIEFING_MILESTONE_COUNT

GitHub Milestones to list with titles

BRIEFING_WORKFLOW_COUNT

CI workflow runs to list

RULES_FILE_PATH / SKILLS_DIR_PATH

Injected behavioral rules and skills boundaries

OAuth (HTTP Mode)

OAUTH_ENABLED

Enable OAuth 2.1 authentication (default: false)

OAUTH_ISSUER / OAUTH_AUDIENCE

OAuth token verification parameters

Telemetry & Administration

AUDIT_LOG_PATH / AUDIT_REDACT

File path for JSONL telemetry and argument redaction

MCP_METRICS_ENABLED / PERSIST_METRICS

In-memory and disk-persisted operational metrics

PRUNE_OLDER_THAN_DAYS / PRUNE_EXCLUDE_TAGS

Auto-prune settings and exclusion tags

REPORT_INTERVAL / REPORT_WEBHOOK_URL

Scheduled HTTP reports

GitHub Integration (Optional)

export GITHUB_TOKEN="your_token"              # For Projects/Issues/PRs

Scopes: repo, project, read:org (org-level project discovery only)

Manage GitHub Seamlessly

Memory Journal provides a hybrid approach to GitHub management:

Capability Source

Purpose

MCP Server

Specialized features: Kanban visualization, Milestones, journal linking, project timelines

Agent (gh CLI)

Full GitHub mutations: create/close issues, create/merge PRs, manage releases

MCP Server Tools (Read + Kanban + Milestones + Issue Lifecycle):

See the Complete tools reference for all supported GitHub integration capabilities, including query commands, Kanban management, milestone tracking, analytics, and issue lifecycle events.

Why this design? The MCP server focuses on value-added features that integrate journal entries with GitHub (Kanban views, Milestones, timeline resources, context linking). Standard GitHub mutations (create/close issues, merge PRs, manage releases) are handled directly by agents via gh CLI.

Complete GitHub integration guide โ†’

Automate with GitHub Commander Workflows

The server natively bundles the github-commander agent skill (accessible via memory://skills/github-commander). This extends your AI assistant with autonomous DevOps workflows for repository stewardship: Issue Triage, Milestone Sprints, PR Reviews, Copilot Audits, Security Audits, Code Quality Audits, Performance Audits, Roadmap Kickoffs, and Dependency Updates. Configure validation layers using the PROJECT_* environment overrides to enforce CI-matching execution locally during agent tasks!

๐Ÿ—๏ธ Architecture

Data Flow

flowchart TB
    AI["๐Ÿค– AI Agent<br/>(Cursor, Windsurf, Claude)"]

    subgraph MCP["MCP Server Capabilities"]
        direction LR
        Tools["๐Ÿ› ๏ธ MCP Tools"]
        Resources["๐Ÿ“ก Resources"]
        Prompts["๐Ÿ’ฌ Prompts"]
    end

    subgraph Storage["Persistence Layer"]
        SQLite[("๐Ÿ’พ SQLite<br/>Entries, Tags, Relationships")]
        Vector[("๐Ÿ” Vector Index<br/>Semantic Embeddings")]
        Backups["๐Ÿ“ฆ Backups"]
    end

    subgraph External["External Integrations"]
        GitHub["๐Ÿ™ GitHub API<br/>Issues, PRs, Actions"]
        Kanban["๐Ÿ“‹ Projects v2<br/>Kanban Boards"]
    end

    AI <-->|"MCP Protocol"| MCP
    Tools --> Storage
    Tools --> External
    Resources --> Storage
    Resources --> External

Stack

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ MCP Server Layer (TypeScript)                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Tools            โ”‚  โ”‚ Resources       โ”‚  โ”‚ Prompts       โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Native SQLite Engine                                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ better-sqlite3  โ”‚  โ”‚ sqlite-vec      โ”‚  โ”‚ transformersโ”‚  โ”‚
โ”‚  โ”‚ (High-Perf I/O) โ”‚  โ”‚ (Vector Index)  โ”‚  โ”‚ (Embeddings)โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ SQLite Database with Hybrid Search                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”‚
โ”‚  โ”‚ entries + tags + relationships + embeddings + backups   โ”‚โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”ง Technical Highlights

Performance & Portability

  • TypeScript + Native SQLite - High-performance better-sqlite3 with synchronous I/O

  • sqlite-vec - Vector similarity search via SQLite extension

  • @huggingface/transformers - Local ML embedding models in JavaScript

  • Background Warmup - Model weights (~23MB) are loaded into memory asynchronously on server startup to avoid first-request latency. If the server is invoked before warmup completes, the first semantic search or vector insertion will incur a network-bound cold start (~1.5s - 3s) while the weights are cached locally.

Performance Benchmarks

Memory Journal is designed for extremely low overhead during AI task execution. We include a vitest bench suite to maintain these baseline guarantees:

  • Database Reads: Operations execute in fractions of a millisecond. calculateImportance is ~13-14x faster than retrieving 50 recent entries.

  • Vector Search Engine: Both search (~140-220 ops/sec) and indexing (~1600-1900+ ops/sec) are high-throughput via sqlite-vec with SQL-native KNN queries.

  • Core MCP Routines: getTools uses cached O(1) dispatch (~4800-7000x faster than get_recent_entries). create_entry and search_entries execute through the full MCP layer with sub-millisecond overhead.

To run the benchmarking suite locally:

pnpm run bench

Testing

Extensively tested across two frameworks:

Suite

Command

Covers

Vitest (unit/integration)

pnpm test

Database, tools, resources, handlers, security, GitHub, vector search, codemode

Playwright (e2e)

pnpm run test:e2e

HTTP/SSE transport, auth, sessions, CORS, security headers, scheduler

pnpm test          # Unit + integration tests
pnpm run test:e2e  # End-to-end HTTP/SSE transport tests

Security

Note: When updating schemas or validation logic, please refer to the /zod skill for best practices on Standard Schema and Safe Parsing.

  • Deterministic error handling - Every tool returns structured {success, error, code, category, suggestion, recoverable} responses with actionable context โ€” no raw exceptions, no silent failures, no misleading messages

  • Local-first - All data stored locally, no external API calls (except optional GitHub)

  • Input validation - Zod schemas, content size limits, SQL injection prevention

  • Path traversal protection - Backup filenames validated

  • MCP 2025-03-26 annotations - Behavioral hints (readOnlyHint, destructiveHint, etc.)

  • HTTP transport hardening - comprehensive security headers, configurable multi-origin CORS, 1MB body limit, built-in rate limiting (100 req/min), server timeouts, HSTS (opt-in), 30-min session timeout, 404 handler, cross-protocol guard

  • Token scrubbing - GitHub tokens and credentials automatically redacted from error logs

Data & Privacy

  • Single SQLite file - You own your data

  • Portable - Move your .db file anywhere

  • Soft delete - Entries can be recovered

  • Auto-backup on restore - Never lose data accidentally


๐Ÿ“š Documentation & Resources


๐Ÿ“„ License

MIT License - See LICENSE file for details.

๐Ÿค Contributing

Built by developers, for developers. PRs welcome! See CONTRIBUTING.md for guidelines.

Available Tools

113 tools
add_kanban_itemAdd Kanban ItemA
Idempotent
Inspect

Add an existing GitHub Issue or Pull Request to a Kanban board (GitHub Project v2). Returns the project item ID on success.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
ownerNoRepository owner - LEAVE EMPTY to auto-detect
use_test_dbNo
issue_numberNoThe number of the issue or PR to add
project_numberNoGitHub Project number (optional if repo is registered)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
itemIdNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
projectNumberNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and idempotency profile is covered. The description adds only the return value, which the output schema already provides, and says nothing about required project write permissions or what happens if the item is already on the board.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and target, with the return value as a short trailing clause. 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?

With an output schema and rich annotations, the definition covers what an agent needs to invoke it. The only soft gap is not explaining how the target project is resolved when project_number is omitted, which the schema handles only partially.

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 80% and the schema itself explains auto-detection for repo/owner and the optionality of project_number. The description adds no parameter-level meaning, 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 and resource: adds an existing GitHub Issue or Pull Request to a Kanban board, and pins the underlying object to GitHub Project v2. The verb distinguishes it implicitly from move_kanban_item and delete_kanban_item, though no sibling is 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?

The word 'existing' implies the issue/PR must already exist, which rules out creation flows, but the description never says when to use this versus create_github_issue_with_entry or move_kanban_item, nor does it state prerequisites such as the project already being registered.

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

add_to_vector_indexAdd Entry to Vector IndexC
Idempotent
Inspect

Add a specific entry to the semantic search vector index

NameRequiredDescriptionDefault
entry_idNo
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
entryIdNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond the name and titleโ€”it doesn't say whether the operation fails if the entry is already indexed, what permissions are needed, or how it handles concurrency. With annotations present, the description adds almost no value beyond structured fields.

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 is appropriately sized for a simple tool and every word earns its place.

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 write tool with two undocumented parameters and no parameter descriptions in the schema, the description is not complete enough. It lacks usage guidance and parameter semantics, which are critical for correct invocation. The presence of an output schema and annotations mitigates some complexity but does not fill the gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only mentions 'a specific entry', vaguely hinting at entry_id, and says nothing about project_number or the optional nature of both parameters. This leaves a significant gap for an agent to infer correct usage.

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 ('Add') and resource ('a specific entry to the semantic search vector index'), making the core action clear. It distinguishes from bulk operations like rebuild_vector_index by specifying 'a specific entry', but it does not explicitly differentiate from the sibling team_add_to_vector_index or name alternatives, so it is not 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 tool versus alternatives like rebuild_vector_index or team_add_to_vector_index. The description only states what it does, not when it should be chosen, what prerequisites exist, or any exclusions.

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

analyze_commit_patternsAnalyze Commit PatternsC
Read-onlyIdempotent
Inspect

Analyze patterns in a list of commits or recent history

NameRequiredDescriptionDefault
maxCountNoMaximum number of commits to analyze. Default: 50
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successYes
analysisNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already establish that this is a safe, read-only, idempotent operation, so the description adds little. It does not explain what analysis is performed, whether it operates on a passed list versus stored history, or what use_test_db changes behaviorally.

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

Conciseness4/5

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

The description is a single short sentence with no wasted words and is front-loaded. Its brevity is efficient, though it comes at the cost of substance covered 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?

The tool has an output schema and annotations, so return format and safety need not be repeated. However, for an analysis tool with two parameters and a vague scope, the description leaves critical context missing: what patterns are analyzed, what input is used, and what use_test_db does.

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

Parameters2/5

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

Schema description coverage is only 50%: maxCount is documented in the schema, but use_test_db has no description anywhere. The tool description provides no parameter guidance and does not compensate for the undocumented parameter or clarify how a 'list of commits' is supplied.

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

Purpose2/5

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

The description restates the name and title almost verbatim: 'Analyze patterns in a list of commits or recent history.' It does not specify what patterns are detected (authorship, timing, frequency, churn) or how this differs from siblings like get_commit_history or search_commits.

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 choose this tool over get_commit_history or search_commits, no prerequisites, and no exclusions. The phrase 'or recent history' hints at a context but does not tell the agent which condition selects this tool.

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

backup_journalBackup Journal DatabaseBInspect

Create a timestamped backup of the journal database. Backups are stored in the backups/ directory.

NameRequiredDescriptionDefault
nameNoCustom backup name (optional, defaults to timestamp). Anti-Hallucination Hint: You can use positional args like mj.backup.backupJournal("my_name").
compressNoAnti-Hallucination Hint: Compression is natively handled by the database engine. This parameter is safely ignored.
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
pathNo
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successYes
categoryNoError category (validation, query, connection, internal)
filenameNo
sizeBytesNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's job is lighter. It adds the useful detail that backups land in backups/ with a timestamp, but says nothing about retention, disk cost, permissions, or whether repeated calls accumulate files.

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?

Two short sentences, front-loaded with the action and followed by the output location; nothing is padded. Slight loss for being so terse that it omits operational detail.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a write operation in a dense backup/restore tool family, the description should say where the backup record can be found afterwards (list_backups) and how it relates to cleanup.

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

Parameters2/5

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

Schema coverage is only 67% and the description mentions no parameters at all. The 'name' and 'compress' semantics live entirely in the schema, while 'use_test_db' is undocumented in both places โ€“ the description does nothing to close that gap.

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

Purpose4/5

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

States a concrete verb+resource ('Create a timestamped backup of the journal database') and the storage location. It does not distinguish itself from the sibling backup/restore tools (list_backups, restore_backup, cleanup_backups, team_backup), so an agent must infer the difference.

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

Usage Guidelines2/5

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

No guidance on when to take a backup versus using team_backup, restore_backup, or cleanup_backups, and no prerequisites or caveats. The agent is left to infer usage 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.

batch_create_entriesBatch Create EntriesBInspect

Create multiple journal entries at once. Max 50 per batch. Use this for imports or bulk creation. Select the most accurate entry_type for each. REQUIRED: You MUST include project_number. Extract this by querying memory://agent-id. REQUIRED: You MUST include impact_score, trust_score, and validation_status. REQUIRED: You MUST use related_to to anchor entries to previous context.

NameRequiredDescriptionDefault
entriesNo
auto_indexNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
indexStatusesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnly=false/destructive=false/idempotent=false, and the description adds a batch cap and extraction hint (memory://agent-id). But the behavioral claims are misleading: it insists project_number, impact_score, trust_score, validation_status and related_to are MUST-haves, while the schema marks project_number optional (workspace_id preferred), requires only workspace_id per entry, and has no 'related_to' field at all. These false requirements would drive incorrect calls.

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?

Front-loaded with purpose and batch limit, which is good. But the trailing block of ALL-CAPS 'REQUIRED: You MUST...' sentences is repetitive and, because several are factually wrong, adds noise rather than clarity.

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?

Output schema exists so return values need no explanation, and the batch limit and core intent are covered. But for a 4-param bulk-mutation tool the description contradicts the schema's required fields and misnames a param, leaving an agent with misleading completeness 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 only 25%, so the description carries extra load, and it does add semantic content about entry_type accuracy and score fields. But it references a non-existent 'related_to' param (schema uses 'relationships') and misstates project_number as required, so the added meaning is partly wrong.

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 ('Create multiple journal entries at once') plus a hard batch limit ('Max 50 per batch'), which clearly separates it from the singular create_entry sibling. However it never names create_entry directly, leaving the distinction implicit.

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

Usage Guidelines4/5

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

'Use this for imports or bulk creation' gives a concrete usage context that maps cleanly to bulk vs. single-entry workflows. It offers no explicit when-not or named alternative, so it stops short of a 5.

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

batch_delete_entriesBatch Delete EntriesB
Destructive
Inspect

Delete multiple existing journal entries in a single transaction. Max 50 per batch.

NameRequiredDescriptionDefault
entry_idsNo
permanentNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
deletedNo
detailsNoAdditional error context
successNo
warningNo
categoryNoError category (validation, query, connection, internal)
notFoundNo
permanentNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered structurally. The description adds two genuinely useful behavioral facts โ€” atomicity ('single transaction') and the 50-item batch ceiling โ€” but says nothing about the reversible-vs-irreversible distinction, permissions, or what happens on partial failure, which matters for a destructive tool.

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

Conciseness5/5

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

Two short sentences, no filler, with the core action and the hard constraint front-loaded. Nothing in the text is wasted.

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

Completeness2/5

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

An output schema exists so return values needn't be described, and the transaction/limit facts are helpful. But with a destructive mutation, three parameters, 0 required fields, and an undocumented 'permanent' switch, the description leaves the agent short of what it needs to invoke this safely.

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

Parameters2/5

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

Schema description coverage is only 33% (only workspace_id is documented). The description does not explain the 'permanent' flag at all, which is the highest-stakes parameter on a destructive tool โ€” an agent cannot tell whether entries go to the deleted list or are irrecoverably purged. It also never mentions entry_ids being the batch input beyond the word 'entries'.

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 (delete), resource (journal entries), and batch semantics (multiple, single transaction, max 50), which cleanly separates it from a single-entry delete. It does not distinguish itself from the team_batch_delete_entries sibling, so an agent must infer the non-team scope from the name alone.

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 when-to-use or when-not-to-use guidance. The agent must infer that this is the multi-entry alternative to delete_entry and the non-team alternative to team_batch_delete_entries purely from naming; the description never states those conditions.

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

batch_update_entriesBatch Update EntriesAInspect

Update multiple existing journal entries in a single transaction. Max 50 per batch. REQUIRED: You MUST include project_number. Extract this by querying memory://agent-id.

NameRequiredDescriptionDefault
updatesNo
auto_indexNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
notFoundNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
indexStatusesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, and idempotent=false. The description adds useful behavioral context: updates happen in a single transaction and are capped at 50 per batch. It does not explain rollback behavior or how expected_version conflicts are handled.

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?

Three short sentences, front-loaded with the core action and key constraints. No wasted text.

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?

Output schema and annotations cover return values and safety profile, but this is a complex batch mutation with a nested updates array and low schema coverage. The description omits failure semantics, auto_index behavior, workspace isolation, and concurrency/version handling.

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

Parameters2/5

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

Schema description coverage is only 33%, so the description should compensate more. It mentions the required project_number and its source, but does not explain the updates array structure, auto_index, workspace_id, or other nested fields.

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

Purpose5/5

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

States a specific verb and resource: update multiple existing journal entries in a single transaction. The batch scope and max-50 limit distinguish it from single-entry update_entry and from batch_create_entries.

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?

Provides a clear batch limit and a required project_number prerequisite with where to obtain it. However, it does not explicitly say when to use this instead of update_entry or batch_create_entries, nor does it describe when not to use it.

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

check_entry_stalenessCheck Entry StalenessB
Idempotent
Inspect

Check if a journal entry's anchors have been modified or deleted in git since the entry was created.

NameRequiredDescriptionDefault
entryIdNoThe ID of the journal entry to check
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
resultsNo
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=false, and the description usefully adds what is compared (anchors against git history since entry creation). However, it does not explain that the checks are per-anchor or what happens on a miss, and it creates mild tension with readOnlyHint=false: 'Check if...' reads as pure inspection, so an agent cannot tell whether the call records staleness state or just reports it.

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 the scope qualifier ('since the entry was created') built in. No filler, no restatement of the title.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not required, but for a git-comparison tool with an undocumented test-DB parameter and an unresolved side-effect question, the description leaves real gaps. What an agent needs to invoke it correctly is mostly present, but the usage context is thin against a 2-param, 50%-documented 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 coverage is 50%: entryId is documented in the schema, but use_test_db has no description anywhere. The description adds nothing about either parameter (e.g., what 'stale' means for an anchor, or when the test DB flag matters), so it neither compensates for the gap nor detracts. Baseline 3 fits this borderline coverage.

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 (check) and a precise resource (a journal entry's anchors vs. git history since creation), including the two failure modes it detects (modified or deleted). It does not name or distinguish itself from nearby siblings such as mark_anchors_stale or get_entry_history, 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 statement of when an agent should call this versus mark_anchors_stale, get_entry_history, or get_commit_history, and no prerequisites or exclusions. The only usable cue is the implicit 'run before trusting an entry's links', which the agent must infer.

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

cleanup_backupsCleanup Old BackupsAInspect

Delete old backup files, keeping only the most recent N backups. Use list_backups to preview before cleanup.

NameRequiredDescriptionDefault
keep_countNoNumber of most recent backups to keep (default: 5). Anti-Hallucination Hint: You can pass a string or number, or use positional args: mj.backup.cleanupBackups(5).
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
deletedNo
detailsNoAdditional error context
messageNo
successYes
categoryNoError category (validation, query, connection, internal)
keptCountNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
deletedCountNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A4.4/5.0
Behavior4/5

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

The description clarifies the 'N' mechanism, which is a key operational behavior of the tool. Although the `destructiveHint: false` annotation appears inconsistent with the 'delete' action, the description itself is clear about the action and the scope control.

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 highly concise, utilizing only two sentences to convey purpose, mechanism, and prerequisite safety steps. No sentence 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?

It is largely complete by defining the core logic and providing the necessary pre-flight check (list_backups). A small gap exists regarding error handling or the effect of 'use_test_db' outside of its schema 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?

It provides a clear definition of 'keep_count,' which is useful. However, with only 50% schema coverage, it fails to provide any context or explanation for the 'use_test_db' parameter, leaving that half of the tool's functionality poorly defined.

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

Purpose5/5

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

The description uses a specific action ('Delete') applied to a specific resource ('backup files') and defines the precise logic ('keeping only the most recent N backups'). This clearly distinguishes it from list_backups.

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

Usage Guidelines5/5

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

It explicitly provides guidance on safe usage by advising the agent to call the sibling tool list_backups for a preview before execution.

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

close_github_issue_with_entryClose GitHub Issue with Resolution EntryAInspect

Close a GitHub issue AND create a journal entry documenting the resolution.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
tagsNoJournal entry tags
ownerNoRepository owner - LEAVE EMPTY to auto-detect
commentNoComment to add to the issue before closing
use_test_dbNo
issue_numberNoIssue number to close
move_to_doneNoMove the associated Kanban item to "Done" column
project_numberNoGitHub Project number (required if move_to_done is true, or uses DEFAULT_PROJECT_NUMBER)
resolution_notesNoNotes about how the issue was resolved

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
issueNo
kanbanNo
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
journalEntryNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, and the description usefully discloses that two side effects occur (issue closure plus journal entry creation). However, it says nothing about the remote write being permanent, whether a comment is posted before closing, the optional Kanban move, or what happens if the issue is already closed โ€” real behavioral gaps for a non-idempotent mutation.

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 the primary action first and the secondary effect second; no filler or repetition of schema content.

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?

With 9 parameters, an output schema, and 89% schema description coverage, the description only needs to convey the essential dual effect, which it does. The remaining gaps (Kanban move, comment posting, test DB flag) are all covered by schema field descriptions, so an agent can still call it correctly.

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 89%, so nearly every parameter (repo/owner auto-detect, comment, move_to_done, project_number, resolution_notes) is already documented in the schema. The phrase 'documenting the resolution' loosely maps to resolution_notes, but the description adds no new parameter meaning. 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 two specific verb+resource pairs โ€” 'Close a GitHub issue' and 'create a journal entry' โ€” which precisely captures the compound nature of the tool and separates it from plain issue-closing or plain entry-creation siblings. It does not name the closest siblings (create_github_issue_with_entry, get_github_issue), so an agent must infer the distinction.

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

Usage Guidelines3/5

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

The description implies the use case (close an issue while recording the resolution in the journal) but gives no explicit when-to-use, when-not-to-use, or comparison against calling create_entry and an issue-close tool separately. Usage must be inferred from the compound phrasing.

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

create_entryCreate EntryBInspect

Create a new journal entry. Content must be well-structured markdown using ## section headers. Select the most accurate entry_type (e.g., retrospective, personal_reflection, technical_note). For session summaries, use entry_type "retrospective" with tag "session-summary" and structure content as: ## Accomplished, ## Unfinished / Blocked, ## Context for Next Session. REQUIRED: You MUST include project_number. Extract this by querying memory://agent-id. REQUIRED: You MUST include impact_score, trust_score, and validation_status. REQUIRED: You MUST use related_to to anchor the entry to a session summary or nearby context.

NameRequiredDescriptionDefault
tagsNoTags for categorization (kebab-case). Session summaries MUST include "session-summary". DO NOT hallucinate fake tags. Only use tags that genuinely match the content or existing repository vocabulary, domain tags (e.g., "security", "performance") and activity tags (e.g., "refactor", "audit"). [ANTI-HALLUCINATION] MUST be an array of strings, e.g. ["tag1", "tag2"]. NEVER pass a single string.
pr_urlNo
anchorsNoFiles or lines of code that this entry is fundamentally anchored to. If the anchor becomes stale/invalid, the entry importance score drops.
contentNoMarkdown-formatted entry content. Use ## section headers to organize content. Note: The primary text is stored in the `content` property (not `entry`, `title`, `message`, `name`, `description`, or `text`). For session summaries (entry_type: "retrospective", tagged "session-summary"), MUST use EXACTLY: ## Accomplished, ## Unfinished / Blocked, ## Context for Next Session, ## Commits. Do NOT invent extra top-level sections for session summaries.
issue_urlNo
pr_numberNo
pr_statusNo
entry_typeNoEntry type. Use "retrospective" for session summaries, "bug_fix" for bugs, "feature_implementation" for features, "planning" for roadmaps, "technical_note" for implementation notes. Do NOT default to "personal_reflection" unless the entry is genuinely a personal note.personal_reflection
session_idNoAgent session ID for thread isolation (usually conversation ID).
is_personalNo
trust_scoreNoHeuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified).
auto_contextNoJSON string with structured metadata. Used for session-commits context.
impact_scoreNoHeuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs).
issue_numberNo
workspace_idYesREQUIRED. The repository name (e.g. adamic). Do not use numeric project IDs or "workspace" as the key.
project_ownerNo
relationshipsNoOptional array of links to previous entries/flags to establish relationships immediately upon creation. Types: "resolves", "depends_on", "implements", "relates_to", "references", "evolves_from"
workflow_nameNo
project_numberNoNumeric project ID (e.g., 1, 14). This is now optional; workspace_id is preferred.
share_with_teamNoIf true, saves a copy of this entry to the Team database (if configured) using your team alias
workflow_run_idNo
workflow_statusNo
significance_typeNo
validation_statusNoCurrent validation status of the entry (passed, none, failed).

Output Schema

NameRequiredDescription
idNo
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
authorNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
sharedWithTeamNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare the write/non-destructive/non-idempotent profile, and the description usefully adds preconditions (mandatory fields, a memory://agent-id lookup to resolve project_number). However, it asserts project_number is "REQUIRED" while the schema explicitly says it is now optional and workspace_id is preferred, so the behavioral contract is internally inconsistent.

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?

Front-loads purpose and the session-summary recipe, which is good, but the triple "REQUIRED: You MUST include..." phrasing is repetitive and several rules (markdown ## headers, session-summary tag) duplicate what the schema descriptions already state verbatim.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and the description covers content format and the main semantic fields. The unresolved conflicts (project_number required vs optional, related_to vs relationships) and the absence of any guidance on the many secondary fields leave an agent guessing at call time.

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

Parameters2/5

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

Schema coverage is only 54% across 24 parameters, so the description should compensate, and it does add real meaning for content structure, entry_type selection, and the score fields. But it instructs the agent to "use related_to" โ€” a parameter that does not exist in the schema (the field is relationships[].targetId/relationType), which is actively misleading, and it leaves the other undocumented params untouched.

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?

Opens with a specific verb and resource ("Create a new journal entry") and immediately scopes what counts as valid content. It never distinguishes itself from siblings like batch_create_entries or team_create_entry, which an agent must infer from name alone.

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

Usage Guidelines4/5

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

Gives real selection guidance for entry_type ("use 'retrospective' for session summaries", "do NOT default to personal_reflection") and a concrete recipe for the session-summary case. It offers no when-not guidance and no routing versus team_create_entry or batch_create_entries.

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

create_github_issue_with_entryCreate GitHub Issue with Journal EntryAInspect

Create a GitHub issue AND automatically create a linked journal entry documenting the issue creation.

NameRequiredDescriptionDefault
bodyNoIssue body/description
repoNoRepository name - LEAVE EMPTY to auto-detect
tagsNoJournal entry tags
ownerNoRepository owner - LEAVE EMPTY to auto-detect
titleNoIssue title
labelsNoLabels to apply
assigneesNoUsers to assign
use_test_dbNo
entry_contentNoCustom journal content (defaults to auto-generated summary)
initial_statusNoInitial status column (e.g., "Backlog", "Ready"). Defaults to "Backlog" when adding to a project.
project_numberNoGitHub Project number to add this issue to
milestone_numberNoMilestone number to assign this issue to

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
issueNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
journalEntryNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly=false, openWorld=true, idempotent=false and destructive=false. The description adds the genuinely non-obvious side effect that a journal entry is created automatically as a consequence, which is valuable context beyond structured fields. It stops short of explaining atomicity (what happens if the issue is created but the journal entry fails) or auth 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?

A single front-loaded sentence with the compound effect stated up front and zero filler. Every word earns its place.

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

Completeness3/5

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

An output schema exists and annotations cover the safety profile, so the description needn't explain return values. However, for a 12-parameter, non-idempotent, open-world mutation with an implicit second write, the description should say more about failure behavior and the required repo context.

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

Parameters3/5

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

Schema description coverage is 92%, so nearly every one of the 12 parameters is already documented in the schema, including the auto-detect hint on repo/owner. The description adds no parameter-level meaning beyond that, which is the correct baseline when the schema does the work.

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

Purpose4/5

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

States a specific verb and compound resource: creates a GitHub issue and a linked journal entry. This clearly separates it from create_entry and get_github_issues. It does not explicitly contrast with the obvious counterpart close_github_issue_with_entry, so an agent must infer the create/close pairing from the name alone.

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 create_entry or close_github_issue_with_entry, and no prerequisites (auth, repo access) are mentioned. The agent must infer the intended workflow entirely from the tool name.

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

create_github_milestoneCreate GitHub MilestoneCInspect

Create a new GitHub milestone for tracking progress toward a project goal.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect
ownerNoLEAVE EMPTY to auto-detect
titleNoMilestone title
due_onNoDue date in YYYY-MM-DD format (optional)
descriptionNoMilestone description
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
milestoneNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds no behavioral detail at all โ€” notably it never warns that a non-idempotent create called twice produces duplicate milestones, nor that title is not a required parameter. For a mutation tool this is thin.

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 tight, front-loaded sentence with no filler. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined editing.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, with six parameters and zero marked required, the definition should clarify that title is effectively mandatory and how duplicates are handled; neither is covered.

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 83%, so the baseline is 3. The description contributes no parameter meaning beyond what the schema states; the one undocumented parameter (use_test_db) is left unexplained in both places.

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+resource ('Create a new GitHub milestone') and adds the intent ('tracking progress toward a project goal'). It is clearly distinct from get_github_milestone, update_github_milestone and delete_github_milestone by name alone, though it never explicitly contrasts them.

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 reach for this tool versus get_github_milestones, update_github_milestone, or create_github_issue_with_entry. Nothing is said about prerequisites (repo/owner resolution, existing milestone names, permissions).

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

delete_entryDelete EntryA
Destructive
Inspect

Delete a journal entry (soft delete with timestamp). Calling with permanent: true on a previously soft-deleted entry works. Returns success: false for nonexistent entries.

NameRequiredDescriptionDefault
entry_idNoThe ID of the entry to delete. If you need to delete multiple entries, use batch_delete_entries instead.
permanentNoIf true, permanently deletes the entry. If false, performs a soft delete.
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNoIgnored. Provided for agent compatibility.
expected_versionNoREQUIRED for safe deletion to prevent optimistic concurrency gaps. Get this from get_entry_by_id.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
entryIdNo
successNo
warningNo
categoryNoError category (validation, query, connection, internal)
permanentNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real value beyond them: it discloses that the default is a recoverable soft delete with a timestamp, that the permanent path can be applied in a second call on an already-deleted entry, and that nonexistent entries return success: false rather than erroring.

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?

Three short sentences, each carrying a distinct fact (what it does, the permanent re-invocation rule, the nonexistent-entry response), with the core action front-loaded. Nothing is padded or repeated from the title.

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?

With annotations covering destructiveness and an output schema covering the response, the description is nearly complete. The one omission is that expected_version is described in the schema as REQUIRED for safe deletion while the schema's required array is empty and the description is silent on this concurrency guard, which an agent could easily miss.

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 entry_id, permanent, workspace_id, project_number, and expected_version are all documented in the schema. The description only re-frames the permanent flag's two-stage behavior, adding modest nuance rather than new parameter meaning; baseline 3 applies when the schema carries the load.

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 ("Delete a journal entry") plus the deletion mode (soft delete with timestamp), so the agent knows exactly what the tool does. It does not name the sibling it must not be confused with (batch_delete_entries, restore_entry) โ€” that differentiation lives only in the entry_id parameter schema, not the description.

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 sentence "Calling with permanent: true on a previously soft-deleted entry works" gives one concrete usage rule, which is genuinely useful sequencing guidance. However, there is no explicit when-to-use vs when-not, and no routing to restore_entry, batch_delete_entries, or team_delete_entry, so usage must largely be inferred.

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

delete_github_milestoneDelete GitHub MilestoneA
Destructive
Inspect

Permanently delete a GitHub milestone. Issues assigned to the milestone will be un-assigned but not deleted.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect
ownerNoLEAVE EMPTY to auto-detect
confirmNoMust be set to true to confirm deletion
use_test_dbNo
milestone_numberNoMilestone number to delete

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
milestoneNumberNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description still adds real value annotations cannot express: deletions are permanent and assigned issues are un-assigned rather than deleted โ€” the key downstream side effect. It stops short of stating auth requirements or what the response reports.

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

Conciseness5/5

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

Two short sentences, front-loaded with the permanence warning and followed by the collateral-effect disclosure. Nothing is wasted or repeated from the schema.

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?

An output schema exists, so return values need not be described, and the irreversible side effects are covered. The remaining gap is that nothing warns the agent about the confirm:true requirement or the openWorld auth context, which matters for a destructive cross-system operation.

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 80%, with repo/owner/milestone_number/confirm all documented in the schema itself. The description adds no parameter-level detail (e.g. what milestone_number refers to or why confirm exists), and use_test_db plus the confirm const constraint are undocumented โ€” baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Permanently delete a GitHub milestone'), which cleanly separates it from the sibling create_github_milestone, update_github_milestone, get_github_milestone and get_github_milestones.

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 destructive intent is implied by 'Permanently delete', but the description never says when to prefer this over update_github_milestone or to verify existence via get_github_milestone first. No explicit when-not or prerequisite guidance beyond what the tool name conveys.

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

delete_kanban_itemDelete Kanban ItemAInspect

Remove an item from a GitHub Kanban board cleanly. This untethers it from the project but does NOT close or delete the underlying Issue/PR.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
ownerNoProject owner - LEAVE EMPTY to auto-detect
item_idNoThe project item ID to remove (from get_kanban_board)
use_test_dbNo
project_numberNoGitHub Project number (optional if repo is registered)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
itemIdNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
projectNumberNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A4.7/5.0
Behavior5/5

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

The description adds vital behavioral context beyond the annotations by defining 'clean removal' as 'untethering' the item and explicitly stating it does not close or delete the underlying GitHub Issue/PR.

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 highly concise, with each sentence serving a distinct and necessary function in defining the tool's scope and constraints.

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

Completeness5/5

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

The definition is highly complete for a high-level operation, providing the agent with the exact behavioral contract regarding underlying GitHub entities (Issues/PRs) that other tools might affect.

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?

Though the schema is 80% covered, the description adds necessary semantic value by clarifying the outcome of the action: the Kanban link is severed, not the associated GitHub resource.

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

Purpose5/5

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

The description uses a specific verb ('Remove') and resource ('Kanban item') and provides critical contextual detail by clarifying it is specific to the GitHub project and board structure.

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

Usage Guidelines4/5

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

While it doesn't list competing tools, it provides strong negative guidelines by stating what the tool does NOT do, which is essential context for an agent deciding whether to use it instead of a direct issue deletion tool.

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

delete_projectDelete ProjectC
DestructiveIdempotent
Inspect

Remove a project from the global registry.

NameRequiredDescriptionDefault
nameNoThe key/name of the project to delete.
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
errorNoHuman-readable error message
itemsNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the irreversibility and repeatability are covered without description help. The description adds only the scope qualifier "global registry"; it says nothing about what happens to the project's entries, tags, or links, or whether authorization is required.

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 no filler, so it is efficiently sized. The terseness is an under-specification problem rather than a conciseness one.

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 destructive registry mutation with an undocumented second parameter and no statement of side effects on associated data. Output schema and annotations cover return values and safety, but the agent still cannot predict the blast radius of the call.

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

Parameters2/5

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

Schema coverage is 50%: `name` is documented in the schema, but `use_test_db` has no description anywhere and the description does not compensate for it. The description also adds no clarification that `name` is a registry key rather than an ID.

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+resource: "Remove a project from the global registry" tells the agent exactly what is being deleted and at what scope. It is reasonably distinguishable from register_project/update_project/list_projects and from entry-level deletes, though it does not explicitly name those siblings.

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 update_project, list_projects, or the entry-level delete tools, and no prerequisites or exclusions (e.g. whether the project must be empty first). The agent must infer all routing.

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

export_entriesExport EntriesB
Read-onlyIdempotent
Inspect

Export journal entries to JSON or Markdown format

NameRequiredDescriptionDefault
tagsNo
limitNoMaximum entries to export (default: 100)
formatNoExport format (json or markdown). Anti-Hallucination Hint: Do NOT use type, use format.json
end_dateNo
start_dateNo
entry_typesNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
formatNo
contentNo
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
truncatedNoTrue if the results were truncated to fit within payload limits
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

The annotations already declare this as read-only, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds the supported formats but does not describe data scope, filtering behavior, authorization needs, or whether export returns content versus a file.

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 is concise and wastes no words, even though it is under-informative for the tool's full parameter surface.

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?

Although an output schema exists and reduces the need to explain return values, the tool has 8 optional filtering parameters and low schema coverage. The description covers only output formats and leaves the agent without guidance on the remaining filters and export scope.

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

Parameters2/5

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

Schema description coverage is only 38% across 8 parameters. The description only mentions the format choice and does not compensate for undocumented parameters such as tags, start_date, end_date, entry_types, limit, workspace_id, or project_number.

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: export journal entries. It also names the supported output formats, but it does not distinguish this tool from close siblings such as export_markdown or team_export_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 explicit guidance on when to use this tool versus export_markdown, backup_journal, or search_entries. The export verb implies usage, but the description provides no alternatives, exclusions, or prerequisites.

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

export_markdownExport to Markdown FilesA
Idempotent
Inspect

Export journal entries as individual frontmattered Markdown files (.md). Each file contains YAML frontmatter (mj_id, entry_type, tags, relationships) and the entry content. Files can be edited externally and re-imported via import_markdown.

NameRequiredDescriptionDefault
tagsNoFilter by tags
limitNoMax entries to export (default: 100, max: 500)
end_dateNoEnd date filter (YYYY-MM-DD)
output_dirNoTarget directory for .md files. Anti-Hallucination Hint: Do NOT use path or filepath, use output_dir.
start_dateNoStart date filter (YYYY-MM-DD)
entry_typesNoFilter by entry types
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
filesNo
detailsNoAdditional error context
skippedNo
successNo
categoryNoError category (validation, query, connection, internal)
output_dirNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
exported_countNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, write-to-open-world behavior, so the safety profile is covered. The description adds substantive behavioral detail beyond annotations: each file has YAML frontmatter with specific fields (mj_id, entry_type, tags, relationships) and supports an external-edit round-trip. It stops short of explaining overwrite semantics or output directory behavior.

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?

Three sentences, front-loaded with the action and format, then the file contents, then the round-trip use case. Every sentence earns its place with no repetition of schema or annotation fields.

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?

An output schema exists, annotations cover safety, and the schema covers 88% of parameters, so the description need not explain return values or filters. It is complete enough for correct invocation, though it could briefly note target-directory behavior and how filters scope the export.

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 filters like tags, dates, limit, and output_dir, including an anti-hallucination hint for output_dir. The description does not add parameter meaning beyond what the schema provides, which is the expected baseline when coverage is high.

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 ('Export journal entries') plus the exact output format ('individual frontmattered Markdown files (.md)'). The format implicitly differentiates it from export_entries, but no sibling is named, so it falls short of explicit 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 Guidelines4/5

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

Provides a clear usage context: files can be edited externally and re-imported via import_markdown, which tells the agent when this format is valuable. It does not explicitly contrast with export_entries or state when not to use this tool, so exclusions are absent.

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

get_commit_historyGet Commit HistoryB
Read-onlyIdempotent
Inspect

Retrieve commit history for the current repository

NameRequiredDescriptionDefault
refNoGit reference (branch, tag, commit). Default: HEAD
pathNoFilter by specific file or directory path
scopeNoFilter commits by a specific scope
sinceNoShow commits more recent than a specific date (e.g. "2023-01-01")
sortByNoSort commits by date or impact score
maxCountNoMaximum number of commits to return. Default: 50
use_test_dbNo
techDebtAuditNoFilter for high impact commits with low trust or missing validation

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
commitsNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
changelogNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the 'current repository' scope, but it does not mention pagination, default limits, sorting behavior, or filtering semantics beyond what the schema provides.

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 concise, though extremely minimal for a tool with eight parameters and several related siblings.

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 output schema and annotations cover return values and safety behavior, and the input schema covers most parameters. However, the description does not explain when to choose this tool over search_commits or other commit-related siblings, leaving a meaningful contextual gap.

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 nearly all parameters, including ref, path, scope, since, sortBy, maxCount, and techDebtAudit. The description adds no parameter-level meaning, and the undocumented use_test_db parameter is not compensated for, so 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?

The description states a clear verb and resource: retrieve commit history for the current repository. It is specific enough to identify the operation, but it does not distinguish this tool from siblings such as search_commits or get_unreleased_commits.

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 search_commits, get_unreleased_commits, or analyze_commit_patterns. Usage is only implied by the phrase 'retrieve commit history'.

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

get_copilot_reviewsGet Copilot Code ReviewsA
Read-onlyIdempotent
Inspect

Get Copilot's code review findings for a pull request. Returns review state (approved/changes_requested/commented/none) and file-level comments with paths and line numbers. Use to learn from Copilot's review patterns and create journal entries with tag "copilot-finding".

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect from git
ownerNoLEAVE EMPTY to auto-detect from git
pr_numberNoPull request number
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
errorNoHuman-readable error message
ownerNo
stateNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
commentsNo
prNumberNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
commentCountNo
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real value by disclosing the return shape (review state enum values and file-level comments with paths and line numbers), but says nothing about auth requirements, rate limits, or behavior when no review exists.

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?

Two tight sentences: purpose first, then return contents, then usage. No filler, though the journal-entry/tag prescription is a narrow workflow hint that consumes space an alternate-use note could have occupied.

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

Completeness5/5

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

An output schema exists, so return values need not be fully described, and the description still summarizes them helpfully. With 0 required parameters, mostly documented inputs, and annotations covering safety, an agent has everything needed to invoke it correctly.

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 75%, so most parameters are self-documenting, including 'LEAVE EMPTY to auto-detect from git' for repo/owner. The description adds no meaning beyond the schema and is silent on pr_number formatting and the undocumented use_test_db parameter, 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 and resource ('Get Copilot's code review findings for a pull request') and the scope of what comes back. It is clearly distinguished from nearby GitHub siblings such as get_github_pr or get_github_prs by naming the Copilot review artifact specifically, though it does not explicitly contrast itself with them.

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

Usage Guidelines4/5

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

Gives an explicit usage context: learn from Copilot's review patterns and turn findings into journal entries tagged 'copilot-finding'. That is clear guidance for when to reach for it, but it names no alternatives and no conditions under which not to use it.

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

get_cross_project_insightsGet Cross-Project InsightsA
Read-onlyIdempotent
Inspect

Analyze patterns across all GitHub Projects tracked in journal entries. Use for architecture planning.

NameRequiredDescriptionDefault
limitNoAnti-Hallucination Hint: get_cross_project_insights does not take a limit.
queryNoAnti-Hallucination Hint: get_cross_project_insights does not take a query. It analyzes all entries.
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)
min_entriesNoMinimum entries to include project
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNoAnti-Hallucination Hint: get_cross_project_insights analyzes ALL projects. Do not pass a project_number.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
project_countNo
total_entriesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
inactive_projectsNo
time_distributionNo
inactiveThresholdDaysNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds only that analysis spans 'all' projects, and says nothing about aggregation thresholds (the min_entries default of 3), how patterns are derived, or cost/performance of a cross-project scan โ€” with an output schema present, return shape needn't be explained, so a 3 is fair.

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

Conciseness5/5

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

Two sentences, zero filler, with the scope-defining 'all GitHub Projects' clause front-loaded before the usage hint. Nothing here could be trimmed without losing content.

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?

Rich annotations plus an output schema and high param coverage mean the description doesn't need to carry behavioral or return-value burden. The remaining gap is real but modest: no differentiation from team_get_cross_project_insights and no mention of the aggregation threshold that determines which projects appear.

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 start_date, end_date, min_entries, and workspace_id, plus the anti-hallucination hints that query/limit/project_number must not be passed. The description's phrase 'across all GitHub Projects' reinforces that scoping is not per-project, but it adds no meaning about date filtering or the min_entries threshold, so it sits at 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 and resource: 'Analyze patterns across all GitHub Projects tracked in journal entries', which tells an agent this is a cross-project aggregation over journal data rather than a per-project or per-entry lookup. It does not acknowledge the near-identical sibling team_get_cross_project_insights, so the agent cannot distinguish the two from the text alone.

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?

'Use for architecture planning' supplies one concrete scenario, which gives an implied use case. However, there are no exclusions, no prerequisites, and no routing guidance versus team_get_cross_project_insights or get_repo_insights, so an agent must infer when this is the right choice.

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

get_entry_by_idGet Entry by IDC
Read-onlyIdempotent
Inspect

Retrieve a specific entry by its ID

NameRequiredDescriptionDefault
entry_idNoThe numeric ID of the entry to retrieve
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. [ANTI-HALLUCINATION] If an entry returns RESOURCE_NOT_FOUND, it might belong to another workspace. Set workspace_id: "*" to search globally.
project_numberNo
include_relationshipsNoIf true, includes all linked relationships (causal, related) in the response

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
importanceNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
relationshipsNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
importanceBreakdownNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description itself adds nothing beyond that: no note on what a miss looks like (RESOURCE_NOT_FOUND), no mention of workspace scoping, no note that relationships are included by default.

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 waste, but the brevity is under-specification rather than efficiency โ€” nothing was trimmed because nothing was there. It is well-formed, just thin.

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?

Five parameters, no required ones, 60% schema coverage and a cluster of near-identical sibling tools is a lot of ambiguity for one sentence to carry. An output schema and annotations do absorb the return-value and safety burden, but the workspace-isolation and team-vs-personal routing decisions remain entirely unexplained.

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

Parameters2/5

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

Schema coverage is a middling 60%, and two parameters (`use_test_db`, `project_number`) have no description in either place. The description never mentions a single parameter, so it contributes no meaning beyond what the schema already says about `entry_id` or the workspace anti-hallucination guidance.

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 pair ("retrieve a specific entry by its ID"), which is clear and unambiguous on its own. However, it gives no hint of how it differs from the sibling `team_get_entry_by_id` (or from `get_recent_entries` / `search_entries`), so the agent cannot resolve the near-identical naming without opening schemas.

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 `search_entries`, `get_recent_entries`, or the team-scoped `team_get_entry_by_id`. The only disambiguation-adjacent content (the RESOURCE_NOT_FOUND / workspace_id:"*" escape hatch) lives in the schema, not in the description.

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

get_entry_historyGet Entry Revision HistoryC
Read-onlyIdempotent
Inspect

Retrieve the revision history of an entry (last 10 edits).

NameRequiredDescriptionDefault
entry_idNoThe numeric ID of the entry
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
idNo
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
currentNo
detailsNoAdditional error context
historyNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds one real behavioral fact beyond that โ€” results are capped at the last 10 edits โ€” but says nothing about ordering, pagination of older revisions, or whether a missing/nonexistent entry errors or returns empty.

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 scope caveat in parentheses; nothing is wasted and the key constraint is front-loaded. It is arguably too terse to be efficient overall, but it is well structured.

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

Completeness2/5

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

An output schema exists, so return values need not be described, and annotations cover safety. However, a four-parameter tool with zero required parameters and two undocumented scoping parameters needs far more from the description, particularly around how workspace_id/project_number/use_test_db select the target entry.

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

Parameters2/5

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

Only 50% of the four parameters carry schema descriptions, and the description explains none of them โ€” it never even names entry_id. The undocumented use_test_db and project_number parameters, which appear to scope the lookup, are left entirely opaque, so the description does not compensate for the coverage gap.

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

Purpose4/5

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

Names a specific verb and resource ("Retrieve the revision history of an entry") and adds the scope caveat "last 10 edits", which is genuinely informative. It doesn't differentiate from siblings such as get_entry_by_id or get_recent_entries, so an agent must infer the boundary itself.

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 or when-not-to-use guidance, no mention of alternatives (e.g. get_entry_by_id for current state, restore_entry/update_entry for mutations), and no prerequisites. The revision-history framing implies a use case, but nothing is stated explicitly.

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

get_github_contextGet GitHub Repository ContextA
Read-onlyIdempotent
Inspect

Get current repository context including branch, open issues, and open PRs. IMPORTANT: Leave owner/repo empty to auto-detect from git, OR specify the repository name if working in a multi-project registry.

NameRequiredDescriptionDefault
repoNoRepository name (use this to switch projects dynamically)
ownerNoRepository owner
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
branchNo
commitNo
issuesNo
detailsNoAdditional error context
prCountNo
categoryNoError category (validation, query, connection, internal)
repoNameNo
remoteUrlNo
issueCountNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
pullRequestsNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the auto-detection behavior from git, but says nothing about auth requirements, rate limiting, or what happens when auto-detection fails in a non-git directory โ€” relevant for an openWorldHint=true tool hitting an external API.

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?

Two tight sentences with the core purpose front-loaded and the conditional-parameter guidance second. The 'IMPORTANT:' framing is slightly heavy but earns its emphasis given the auto-detect behavior is non-obvious.

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?

With rich annotations and an output schema present, the description needn't explain return values, and it covers the one non-obvious calling decision (empty vs. explicit repo). The undocumented use_test_db parameter and no fallback/error behavior keep 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 67% and the description reinforces the repo/owner semantics (empty = auto-detect, specified = switch projects). But use_test_db is left undocumented in both the schema and the description, and the interaction between specifying only one of owner/repo is unaddressed.

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 current repository context' โ€” and enumerates the contents (branch, open issues, open PRs). It doesn't differentiate from the near siblings get_github_issues / get_github_prs / get_github_pr, so an agent could hesitate over which to call for issue data.

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?

Gives conditional guidance for the owner/repo arguments (leave empty to auto-detect from git vs. specify for a multi-project registry), which is useful. However it offers no guidance on when to use this aggregate tool versus the dedicated get_github_issues, get_github_prs, or get_repo_insights siblings.

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

get_github_issueGet GitHub Issue DetailsB
Read-onlyIdempotent
Inspect

Get detailed information about a specific GitHub issue. IMPORTANT: Do NOT guess owner/repo values - leave them empty to auto-detect from the current git repository.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect from git
ownerNoLEAVE EMPTY to auto-detect from git
use_test_dbNo
issue_numberNo
truncate_bodyNoMax characters for body text (0 = full body, default 800). Reduces token usage.
include_commentsNoInclude issue comments (default false). Each comment adds tokens.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
errorNoHuman-readable error message
issueNo
ownerNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
commentsNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
commentCountNo
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds a useful behavioral constraint beyond annotations: do not guess owner/repo and instead leave them empty to auto-detect from the current git repository. It does not add auth, rate-limit, or output-shape context.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the purpose and followed by a critical operational warning. There is no wasted language.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the description omits how to specify the issue number and does not clarify the unannotated use_test_db parameter, leaving an important invocation gap.

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

Parameters2/5

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

Schema description coverage is 67%, and the description mostly repeats the repo/owner schema text about leaving values empty. It says nothing about issue_number, which is essential for identifying the specific issue, and nothing about use_test_db, so it does not compensate for the undocumented 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 clearly states a specific verb and resource: get detailed information about a specific GitHub issue. It implies differentiation from the plural get_github_issues sibling by saying 'specific' issue, but it does not explicitly name or contrast with any sibling 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?

The only guidance is about not guessing owner/repo values. It does not explain when to use this tool versus get_github_issues, get_github_context, or other GitHub siblings, nor does it state prerequisites or exclusions for retrieving an issue.

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

get_github_issuesGet GitHub IssuesA
Read-onlyIdempotent
Inspect

List issues from a GitHub repository. IMPORTANT: Do NOT guess owner/repo values - leave them empty to auto-detect from the current git repository.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides.
limitNo
ownerNoRepository owner - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides.
stateNoopen
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
countNo
errorNoHuman-readable error message
ownerNo
issuesNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile needs no restating. The description adds one genuinely useful behavioral detail, git-based auto-detection of owner/repo, but omits result scope (open vs all), pagination, and whether it hits the network/auth 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?

Two sentences with zero waste; the most failure-prone instruction is capitalized and placed where it will be read. Nothing is padded or repeated.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a 5-parameter listing tool with 40% schema coverage, the description should clarify filter behavior (state default 'open', limit/pagination) and what use_test_db switches before an agent can 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 description coverage is 40%; owner and repo are already documented in the schema, so the description's warning largely restates them. The undocumented parameters (state, limit, use_test_db) receive no explanation in the description, so the coverage gap is only partially compensated.

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 ('List issues from a GitHub repository'), which clearly separates it from mutation siblings like create_entry or close_github_issue_with_entry. It does not explicitly distinguish itself from the singular get_github_issue or from get_github_prs, which is the main gap for 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 Guidelines3/5

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

The description gives strong parameter-level guidance (do not guess owner/repo, leave empty to auto-detect), but it says nothing about when to choose this over get_github_issue (single issue), get_github_context, or get_github_prs. Usage context is implied by the resource name rather than stated.

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

get_github_milestoneGet GitHub Milestone DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific GitHub milestone including progress and linked issue counts.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect from git
ownerNoLEAVE EMPTY to auto-detect from git
use_test_dbNo
milestone_numberNoMilestone number

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
errorNoHuman-readable error message
ownerNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
milestoneNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is fully covered. The description adds that the response includes progress and linked issue counts, which is mild value, but with an output schema present this is largely redundant and nothing is said about rate limits or auth.

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 that identifies the resource, the lookup key, and the notable return content. No filler.

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

Completeness4/5

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

With an output schema and rich annotations, the description needs only to convey intent and it does. The minor shortfall is not alluding to the repo/owner auto-detection behavior or differentiating from the list-milestones sibling.

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 75%, with repo/owner already carrying 'LEAVE EMPTY to auto-detect from git' and milestone_number self-explanatory. The description adds no parameter meaning and leaves use_test_db undocumented, so it neither compensates for the gap nor adds value.

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 details for a specific GitHub milestone, with the added scope of progress and linked issue counts. This distinguishes it reasonably from get_github_milestones (plural/list) and the create/update/delete milestone siblings, though the description never explicitly contrasts them.

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 'a specific GitHub milestone' โ€“ the agent can infer it should use get_github_milestones for listing. No explicit when-to-use, when-not, or named alternative is given, leaving routing to the plural sibling to inference.

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

get_github_milestonesList GitHub MilestonesB
Read-onlyIdempotent
Inspect

List GitHub milestones for the repository with completion percentages and due dates.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect from git
limitNoMax milestones to return (default: 20)
ownerNoLEAVE EMPTY to auto-detect from git
stateNoFilter by state (default: open)open
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
countNo
errorNoHuman-readable error message
ownerNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
milestonesNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered and the bar is lower. The description adds useful payload context (completion percentages, due dates), but says nothing about pagination via limit, default state filtering, or what happens when repo/owner are omitted (auto-detect).

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 terseness leaves the remaining dimensions thin rather than adding structure.

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

Completeness5/5

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

For a read-only list tool with rich annotations, an output schema that defines return shape, and 80% schema coverage, the description supplies the one thing structured fields do not: the salient content of each milestone (completion percentage, due date). Nothing critical to correct invocation is missing.

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 80%, so the schema already documents repo, owner, limit, and state โ€” including the 'LEAVE EMPTY to auto-detect from git' hint. The description adds no parameter-level detail beyond implying a repository scope; only use_test_db is undocumented anywhere, which is minor. 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 (List) and resource (GitHub milestones) scoped to a repository, plus the notable payload fields (completion percentages, due dates). It does not explicitly distinguish itself from the sibling get_github_milestone (singular) or create/update/delete_github_milestone, though the plural 'List' implies the distinction.

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

Usage Guidelines2/5

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

No guidance on when to use this versus get_github_milestone for a single milestone, or versus get_github_issues/get_github_prs in the same GitHub family. The only contextual hint is 'for the repository', which does not route the agent between alternatives.

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

get_github_prGet GitHub PR DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific GitHub pull request, including live prStatus. IMPORTANT: Do NOT guess owner/repo values - leave them empty to auto-detect from the current git repository.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect from git
ownerNoLEAVE EMPTY to auto-detect from git
pr_numberNo
use_test_dbNo
truncate_bodyNoMax characters for body text (0 = full body, default 800). Reduces token usage.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
errorNoHuman-readable error message
ownerNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
pullRequestNo
recoverableNoWhether the error is recoverable
detectedRepoNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuine context beyond that: it discloses that prStatus is live and that repo/owner auto-detect from the current git repository, which affects how the tool behaves when left on defaults.

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

Conciseness5/5

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

Two sentences: the first states purpose, the second front-loads the highest-risk instruction (do not guess owner/repo). No filler and the warning is placed where it will be read.

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?

An output schema exists, so return values needn't be explained, and the highest-risk behavioral gotcha (auto-detection) is covered. The remaining gap is the undocumented pr_number/use_test_db parameters, which leaves a small hole for a 5-parameter 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 coverage is 60%; the description reinforces the critical repo/owner auto-detect semantics (matching the schema) and truncate_body's token-reduction purpose is already documented. However, pr_number and use_test_db remain undocumented in both schema and description, so the description does not fully compensate for the gap. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (Get) and resource (a specific GitHub pull request) plus scope ('specific' PR) and mentions live prStatus. This clearly distinguishes it from the sibling list tool get_github_prs, which returns multiple PRs.

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 IMPORTANT note tells the agent how to supply owner/repo (leave empty to auto-detect), which is useful operational guidance, but there is no explicit statement of when to use this versus get_github_prs or get_github_context. Usage is implied rather than delimited.

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

get_github_prsGet GitHub Pull RequestsB
Read-onlyIdempotent
Inspect

List pull requests from a GitHub repository. IMPORTANT: Do NOT guess owner/repo values - leave them empty to auto-detect from the current git repository.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides.
limitNo
ownerNoRepository owner - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides.
stateNoopen
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
countNo
errorNoHuman-readable error message
ownerNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
detectedRepoNo
pullRequestsNo
detectedOwnerNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description's main added behavior is the git auto-detection requirement, but that same instruction is already written into the repo/owner schema descriptions, so it adds little beyond structured data. Auth needs (GitHub token), pagination, and how many PRs are fetched are unmentioned.

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

Conciseness5/5

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

Two sentences, action first and the critical caveat second. No filler; the emphasis on not guessing owner/repo is well placed after the purpose statement.

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

Completeness3/5

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

An output schema exists and annotations cover safety, so the definition needn't explain return values. But for a zero-required-parameter tool with a state filter, a limit, and a use_test_db flag, the description leaves the agent without enough to choose parameter values or to distinguish this from get_github_pr.

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

Parameters2/5

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

Schema description coverage is only 40%, so the description needs to compensate and does not. It reinforces the owner/repo auto-detect rule (already in the schema) but says nothing about limit (default 20), state (default "open"), or use_test_db, leaving three of five parameters semantically undocumented anywhere.

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 ("List pull requests from a GitHub repository"), which is clear on its own. It does not, however, differentiate itself from the sibling get_github_pr (singular) or explain how it relates to get_github_issues / get_github_context, so an agent must infer the list-vs-single distinction.

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 "IMPORTANT: Do NOT guess owner/repo" instruction gives concrete invocation guidance, but it is parameter-level guidance rather than when-to-use guidance. There is no statement of when to prefer this over get_github_pr or get_github_context, and no exclusion conditions.

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

get_kanban_boardGet Kanban BoardB
Read-onlyIdempotent
Inspect

View a GitHub Project v2 as a Kanban board with items grouped by Status column. Returns all columns with their items.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
ownerNoProject owner - LEAVE EMPTY to auto-detect
item_limitNoMaximum items per column (default 25, max 100). Set to 0 for summary_only behavior.
use_test_dbNo
summary_onlyNoReturn column summaries only (name + itemCount), omitting individual items. Saves ~80% tokens.
project_numberNoGitHub Project number (optional if repo is registered)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
hintNo
errorNoHuman-readable error message
ownerNo
columnsNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
projectIdNo
suggestionNoSuggested fix for the error
totalItemsNo
instructionNo
recoverableNoWhether the error is recoverable
summaryOnlyNo
detectedRepoNo
projectTitleNo
detectedOwnerNo
itemDirectoryNo
projectNumberNo
statusFieldIdNo
statusOptionsNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only 'Returns all columns with their items' as behavioral context โ€” it says nothing about auto-detection of repo/owner, per-column truncation at item_limit, or what happens when no project is found.

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

Conciseness5/5

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

Two sentences, zero waste, with the resource and grouping behavior front-loaded and the return shape stated second. Nothing to trim.

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?

With an output schema, rich annotations and 83% parameter coverage, the description only needs to orient the agent, and it does. The one gap is that all six parameters are optional and the auto-detection path (empty repo/owner, project_number optional) is left entirely to the schema, which is acceptable but not ideal.

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 83%, so the schema already explains repo/owner auto-detection, item_limit semantics (default 25, max 100, 0 => summary_only), and summary_only token savings. The description adds no parameter meaning 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 ('View') and resource ('GitHub Project v2 as a Kanban board') plus the organizing axis (grouped by Status column). An agent can tell this read tool apart from the mutation siblings (move_kanban_item, add_kanban_item, delete_kanban_item), though it never names them explicitly.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative routing is given. The agent must infer that this is the read counterpart to the write kanban tools and that get_github_issues/list_projects are different surfaces, with nothing in the text confirming that.

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

get_projectGet ProjectB
Read-onlyIdempotent
Inspect

Get details of a specific registered project.

NameRequiredDescriptionDefault
nameYesThe key/name or project number of the project to retrieve.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
errorNoHuman-readable error message
itemsNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered without description help. The description contributes only the hint that the project must be 'registered', and says nothing about behavior on a missing project or what detail set is returned (output schema exists but the description doesn't scope it).

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 waste, though at the cost of under-specification rather than being genuinely tight. Nothing is buried, but little is said.

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?

Annotations and an output schema reduce the burden, and the read operation is simple with one required param. Still, for a lookup tool with two competing identifier params, an agent gets no help on which identifier to supply, how to obtain it, or what happens when the project isn't found.

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

Parameters2/5

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

Schema coverage is only 50%: 'name' is documented in the schema, but 'project_number' has no description anywhere, and the description does not explain the relationship or precedence between the two parameters. Since both appear to be alternate identifiers, this is exactly the case where prose guidance is needed and absent.

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 ('details of a specific registered project'), which is enough to distinguish it from register_project, update_project, and list_projects in the sibling set. It doesn't explicitly name the alternatives, but the singular-'specific project' framing implicitly contrasts with the list variant.

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 choose this over list_projects or search_entries, and no stated preconditions (e.g., the project must be registered first, or how to resolve a project name). Usage is only implied by the word 'specific'.

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

get_recent_entriesGet Recent EntriesC
Read-onlyIdempotent
Inspect

Get the most recent journal entries

NameRequiredDescriptionDefault
limitNoMaximum entries to return (max 500)
cursorNo
offsetNoZero-based offset for pagination (used when cursor is not provided)
sort_byNoSort results by timestamp (default) or importance scoretimestamp
is_personalNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
include_archivedNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
hasMoreNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
next_cursorNo
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds nothing beyond that โ€” it doesn't mention pagination behavior (cursor vs offset), the 500 cap, sort options, workspace scoping, or whether archived entries are excluded by default.

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?

A single short sentence is front-loaded and waste-free, but it is under-specified rather than concise โ€” the brevity comes at the cost of nearly all useful detail for a 9-parameter 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?

An output schema and annotations are present, so return values and safety needn't be restated. Still, for a tool with 9 optional parameters, two pagination modes and a sort switch, the description leaves the agent without enough context to invoke it correctly without reading the schema closely.

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

Parameters2/5

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

Schema coverage is only 44% across 9 parameters. The description mentions none of them, leaving cursor, sort_by, is_personal, use_test_db, project_number, include_archived and workspace_id undocumented in prose. With low schema coverage the description was expected to compensate, and it does not.

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 and resource ('Get ... journal entries') with a recency qualifier, so the basic operation is clear. However, with siblings such as search_entries, search_by_date_range, team_get_recent and get_entry_by_id, it offers no differentiation โ€” an agent cannot tell from this text alone why to pick this tool over a date-range search.

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 alternatives, no mention of prerequisites, and no exclusions. The recency framing implies a 'latest N' use case, but the agent has to infer that from the name rather than being told.

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

get_release_infoGet Release InfoB
Read-onlyIdempotent
Inspect

Get latest release commits

NameRequiredDescriptionDefault
refNoGit reference (branch, tag, commit). Default: HEAD
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
commitsNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
changelogNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

The description is basic ('Get latest release commits'). Since the annotations provide a full safety profile (readOnlyHint, destructiveHint), the description adds minimal behavioral value beyond stating the function. It is a minimum viable score.

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 extremely concise, delivering its main point in a single, direct sentence without any 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?

It is sufficiently complete for a low-complexity tool given the presence of robust annotations. However, it is not detailed enough to help the AI confidently configure complex inputs like the 'ref' parameter based solely on 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?

With 50% schema coverage, the description does not add meaningful context regarding how parameters like 'use_test_db' affect the results. It relies solely on the schema documentation, meeting the minimum viable score.

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 it retrieves commits related to the latest release, which is helpful. However, it is generic and does not distinguish this tool from other sibling tools that also deal with commit history or branches.

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 like 'get_commit_history' or 'search_commits'. The description merely states what it does, offering no context for the best use case.

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

get_repo_insightsRepository InsightsA
Read-onlyIdempotent
Inspect

Get repository insights: stars, forks, traffic (clones/views), referrers, and popular paths. Use "sections" to control token usage: stars (~50 tokens), traffic (~100), referrers (~100), paths (~100), or all (~350).

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
ownerNoRepository owner - LEAVE EMPTY to auto-detect
sectionsNoData section to return (default: stars). Use "all" for full payload.
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
repoNo
sizeNo
errorNoHuman-readable error message
forksNo
ownerNo
pathsNo
starsNo
detailsNoAdditional error context
sectionNo
successNo
trafficNo
categoryNoError category (validation, query, connection, internal)
watchersNo
referrersNo
openIssuesNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
defaultBranchNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context the annotations cannot convey: the per-section token cost (~50 to ~350 tokens). It omits the notable behavioral caveat that traffic/referrer/path data is only available with push access on GitHub.

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

Conciseness5/5

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

Two tight sentences: the first states what data is available, the second gives the token-cost decision rule. Zero filler and the scoping mechanism is front-loaded.

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

Completeness4/5

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

An output schema exists, so return-value explanation is rightly omitted, and the token-cost guidance is the key missing piece an agent needs. Minor gaps remain: "forks" is advertised in the description but is not a selectable section value in the enum, and the repo/owner auto-detect behavior is only in the schema.

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

Parameters4/5

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

Schema coverage is 75% and already documents repo, owner and sections with defaults. The description adds value beyond the schema by quantifying the token cost of each section value, letting the agent pick sections rationally. The undescribed use_test_db parameter and the schema's minimal enum description are not compensated for, keeping it below 5.

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+resource ("Get repository insights") and enumerates exactly which data categories are returned: stars, forks, traffic (clones/views), referrers, and popular paths. An agent can immediately tell this is a GitHub repo analytics reader. It stops short of naming a sibling it might be confused with (e.g. get_statistics or get_cross_project_insights in the sibling list), so no explicit differentiation is made.

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

Usage Guidelines4/5

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

It gives clear operational context: "Use 'sections' to control token usage" with per-section token budgets, which tells the agent how to call it efficiently. However, there is no when-to-use/when-not guidance relative to alternatives, and no mention that traffic/referrers/paths data typically requires elevated repo permissions.

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

get_statisticsGet StatisticsC
Read-onlyIdempotent
Inspect

Get journal statistics and analytics (Phase 2: includes project breakdown)

NameRequiredDescriptionDefault
timeNoAnti-Hallucination Hint: Use group_by instead of timeframe or time.
periodNoAnti-Hallucination Hint: Use group_by instead of timeframe or period.
end_dateNo
group_byNoweek
timeframeNoAnti-Hallucination Hint: Use group_by instead of timeframe or period.
start_dateNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNoAnti-Hallucination Hint: get_statistics cannot be filtered by project_number. It always returns global stats. Use project_breakdown: true instead.
project_breakdownNoSet to true to return multi-project entry breakdown across all registered projects (workspace_id: "*").

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
groupByNo
successNo
categoryNoError category (validation, query, connection, internal)
dateRangeNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
totalEntriesNo
activityTrendNo
causalMetricsNo
entriesByTypeNo
decisionDensityNo
entriesByPeriodNo
projectBreakdownNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
relationshipComplexityNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds essentially nothing behavioral beyond the vague 'Phase 2' note โ€” no mention of default time range, aggregation granularity, cost of project_breakdown across all projects, or workspace scoping 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 parenthetical sentence is front-loaded and wastes no words, but its brevity comes from omission rather than economy โ€” the '(Phase 2: ...)' internal release note is the only content and carries little operational value.

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 ten-parameter analytics tool with a defaulted group_by, date range, workspace isolation, and a cross-project mode, the description is far too thin; an agent cannot tell what it will receive or how the aggregation knobs interact. The existence of an output schema offsets return-value documentation somewhat, but the invocation-side gaps remain.

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

Parameters2/5

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

Schema coverage is 60%, and the schema's own descriptions are largely anti-hallucination warnings rather than semantic documentation โ€” group_by lists only a default of 'week' with no enumerated allowed values, and start_date/end_date have no format guidance. The description's '(includes project breakdown)' only obliquely gestures at the project_breakdown parameter and explains none of the ten parameters.

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?

It names a verb and resource ('Get journal statistics and analytics') and parenthetically flags a project-breakdown capability, so the general purpose is legible. But 'statistics and analytics' is never concretized โ€” no mention of which metrics (entry counts, tag distributions, per-project totals) โ€” and it does nothing to distinguish this from close siblings such as team_get_statistics, get_cross_project_insights, or get_vector_index_stats.

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, when to prefer team_get_statistics, or when project_breakdown should be set versus left at its default. The only routing logic present lives in the schema hints, not the description.

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

get_unreleased_commitsGet Unreleased CommitsC
Read-onlyIdempotent
Inspect

Get commits since the last tag/release

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
commitsNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
changelogNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds nothing further beyond the scope phrase โ€” it does not say what happens when no tag exists, whether results are ordered oldest-first, or whether uncommitted/merge commits are included.

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, front-loaded sentence with no filler. It is efficient, though the brevity borders on under-specification given the tool has a parameter and multiple sibling alternatives.

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

Completeness2/5

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

An output schema exists, so return-shape explanation is unnecessary, but the description still leaves key gaps for a 1-parameter tool: the meaning of use_test_db, the no-tag edge case, and how it differs from get_commit_history/search_commits. Adequate only for the narrowest reading of the purpose.

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

Parameters2/5

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

The single parameter use_test_db has 0% schema description coverage and is not mentioned at all in the description, so an agent has no basis for deciding when to set it. The description therefore fails to compensate for the coverage gap on the only parameter that exists.

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 ('commits') with an explicit scope qualifier ('since the last tag/release'), which is more precise than a generic commit fetch. It is reasonably distinguishable from siblings like get_commit_history or search_commits by the 'since last tag' boundary, though it never names those siblings to sharpen the contrast.

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 when-to-use or when-not-to-use guidance, and no alternative is named even though get_commit_history, search_commits, get_release_info and list_tags are all plausible neighbors. The release-prep use case is only weakly implied by 'since the last tag/release'.

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

get_vector_index_statsGet Vector Index StatsC
Read-onlyIdempotent
Inspect

Get statistics about the semantic search vector index

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
availableYes
itemCountNo
modelNameNo
dimensionsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered elsewhere. The description adds nothing beyond thatโ€”it does not say what statistics are returned, whether the call is cheap, or that the optional use_test_db flag switches the underlying database being inspected, which is a meaningful behavioral trait left 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 front-loaded sentence with zero filler. It is efficient, though the brevity comes at the cost of the missing details noted above rather than because everything necessary was said.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, for a tool with a database-selecting parameter and a team-scoped twin, the definition omits the parameter's effect and the sibling distinction, leaving real gaps for an agent choosing between index-stats variants.

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

Parameters2/5

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

Schema description coverage is 0% for the single optional parameter use_test_db, and the description never mentions it. Its name hints at intent, but nothing states what the test database is or when to set it, so the description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: get statistics about the semantic search vector index. An agent can distinguish it from write-side siblings like rebuild_vector_index and add_to_vector_index, though the near-duplicate sibling team_get_vector_index_stats is not mentioned, leaving the scope (personal vs team) ambiguous.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives such as get_statistics or team_get_vector_index_stats, and no preconditions or exclusions are given. The agent must infer usage 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.

import_externalImport from External ToolsAInspect

Import knowledge management exports (Notion, Obsidian, Logseq) into the journal. Normalizes wikilinks, YAML frontmatter, and block hierarchies automatically. Use dry_run: true to preview what would happen without writing.

NameRequiredDescriptionDefault
limitNoMax files to process (default: 100, max: 500)
dry_runNoParse and validate without writing to database
source_dirNoDirectory containing files to import. Anti-Hallucination Hint: Do NOT use path or filepath, use source_dir.
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
source_formatNoSource format (notion, obsidian, logseq). Anti-Hallucination Hint: Do NOT use source, use source_format.
project_numberNo
default_entry_typeNoFallback entry type if heuristics cannot determine one

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
errorsNo
createdNo
detailsNoAdditional error context
dry_runNo
skippedNo
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
vectorsIndexedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
relationshipsLinkedNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false, so safety is largely covered. The description genuinely adds that wikilinks, YAML frontmatter and block hierarchies are normalized automatically, but it never addresses what happens on re-import (relevant given idempotentHint=false implies possible duplicates) or the 500-file ceiling.

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

Conciseness4/5

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

Three sentences, front-loaded with the verb and accepted formats, then normalization behavior, then the preview escape hatch. Efficient, with only slight duplication of the dry_run description already in the schema.

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?

Output schema covers return values and annotations cover the safety profile, so the description needn't repeat them. What remains missing is conflict/duplicate handling on repeated imports and how workspace_id interacts with the default scope โ€” meaningful for a non-idempotent, open-world import.

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 86%, so the baseline is 3. The description restates dry_run's preview semantics and names the source formats, but adds no syntax or constraint detail beyond the schema, and the undocumented project_number parameter is not covered either.

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 (import) and concrete resources (Notion, Obsidian, Logseq exports) landing in the journal, which instantly tells an agent what it produces. It never explicitly contrasts itself with the sibling import_markdown, so the boundary between the two is left to inference.

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 only usage instruction is the embedded 'Use dry_run: true to preview what would happen without writing,' which is a parameter hint rather than tool selection guidance. Nothing says when to prefer this over import_markdown or team_import_external, nor what prerequisites (source directory layout, workspace scoping) matter.

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

import_markdownImport from Markdown FilesAInspect

Import frontmattered Markdown files (.md) into the journal. If a file has an mj_id in its frontmatter and the entry exists, it is updated. Otherwise, a new entry is created. Tags and relationships are reconciled automatically. Use dry_run: true to preview what would happen without writing.

NameRequiredDescriptionDefault
limitNoMax files to process (default: 100, max: 500)
dry_runNoParse and validate without writing to database
source_dirNoDirectory containing .md files to import. Anti-Hallucination Hint: Do NOT use path or filepath, use source_dir.
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
errorsNo
createdNo
detailsNoAdditional error context
dry_runNo
skippedNo
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
vectorsIndexedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
relationshipsLinkedNo

TDQS

A4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the upsert rule, that tags and relationships are reconciled automatically, and that dry_run is a non-writing preview. It does not cover partial-failure behavior, what happens to entries absent from the files, or the 500-file cap interplay with limit.

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?

Four short sentences, front-loaded with the identity of the tool and immediately followed by the create-vs-update rule. No filler or restated title.

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?

An output schema exists, so return values need no explanation, and annotations cover the write/safety profile. The description is nearly complete for an importing mutation; only error/permission behavior and the effect of limit are unstated.

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 80%, so the schema already carries parameter meaning; the description only restates dry_run as a preview. source_dir, limit, workspace_id, and project_number get no added explanation or constraints from the description.

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 with a distinguishing qualifier: 'Import frontmattered Markdown files (.md) into the journal.' This separates it from export_markdown and import_external by format, though it never names a sibling to route away from.

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

Usage Guidelines4/5

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

Gives the essential selection logic for its two modes: an mj_id in frontmatter updates an existing entry, otherwise a new one is created, and dry_run previews. It does not say when to prefer import_external or team_import_markdown, which is the remaining gap.

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

list_backupsList Journal BackupsB
Read-onlyIdempotent
Inspect

List all available backup files with their sizes and creation dates

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
hintNo
errorNoHuman-readable error message
totalNo
backupsNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
backupsDirectoryNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructive=false, so the safety profile needs no restating. The description adds the visible fields (sizes, creation dates) but leaves scope unaddressed โ€” no mention of whether "all" spans projects/teams or includes test-database backups, which matters given the undocumented use_test_db flag.

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 or redundancy. It is arguably too terse rather than bloated, but nothing in it 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?

An output schema exists, so return values need no explanation, and annotations cover safety. What remains missing is the parameter definition and the scope of "all backups" โ€” the two things an agent actually needs before calling a list tool in an environment with a parallel team_* variant.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter use_test_db carries no description in either the schema or the description text. Its meaning (query the test database instead of production?) has to be guessed, so the description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ("List all available backup files") plus the returned attributes, which is unambiguous about what the operation does. It does not distinguish itself from the sibling team_list_backups or from cleanup_backups/restore_backup, which operate on the same resource.

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

Usage Guidelines2/5

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

No guidance on when to use this versus team_list_backups, cleanup_backups, or restore_backup, and no prerequisites stated. The reader must infer from the name alone which of the backup-related siblings is appropriate.

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

list_deleted_entriesList Deleted EntriesA
Read-onlyIdempotent
Inspect

List recently soft-deleted entries that can be restored

NameRequiredDescriptionDefault
limitNo
offsetNo
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
facetsNoDistribution counts when include_facets is true
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
degradedNoTrue if the search degraded to a slower fallback method due to infrastructure failure
highlightsNoFTS5 search snippets when include_highlights is true
searchModeNo
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile needs no restating. The description adds real value with 'soft-deleted' and 'recently', signalling a retention window and restorability, but never says how far back 'recently' reaches, whether an empty result means retention expired, or how pagination behaves.

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 scoping qualifier arrives before anything else. Nothing is repeated from the title or annotations.

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

Completeness5/5

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

This is deliberately concise: an output schema exists so return shape needs no explanation, and the annotations fully cover the read-only/idempotent safety profile, so the description's only real obligations are purpose and usage. It meets them with a single precise sentence, and adding parameter detail would be nice-to-have rather than required to call the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% for all three parameters, so the description carries the full burden and does nothing โ€” limit/offset defaults (50/0) and the use_test_db flag are undocumented anywhere. An agent cannot tell from text whether limit caps the page size for this tool specifically or what use_test_db changes.

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+resource with a meaningful qualifier: 'recently soft-deleted entries that can be restored' tells an agent this is the trash/restore-candidate listing, not a permanent-deletion log. It does not distinguish itself from the team-scoped sibling team_list_deleted_entries or from list_backups, 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 Guidelines3/5

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

The phrase 'can be restored' implicitly frames the workflow (list here, then use restore_entry/team_restore_entry), but no explicit when-to-use, when-not-to-use, or alternative (e.g., list_backups vs deleted entries) is named. Usage is inferable rather than stated.

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

list_projectsList ProjectsC
Read-onlyIdempotent
Inspect

List all registered projects.

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
errorNoHuman-readable error message
itemsNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the word 'all', which weakly implies no filtering or pagination, and says nothing about ordering, result size, or whether deleted projects appear.

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, front-loaded sentence with no filler. It is efficiently sized for a simple list operation, though the brevity comes at the cost of the detail missing elsewhere.

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?

Output schema exists and annotations are rich, so the description need not explain return values or safety. However, with an entirely undocumented use_test_db parameter, the definition falls short of what an agent needs to invoke it correctly.

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

Parameters2/5

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

The single parameter use_test_db has 0% schema description coverage, and the description does not mention it at all. An agent cannot tell whether this switches the backing database or merely reads a test fixture, which is a meaningful behavioral decision the description should have carried.

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 (List) and resource (registered projects), so an agent knows exactly what it retrieves. It does not differentiate itself from nearby siblings like get_project or register_project, relying on the reader to infer that this is the enumeration counterpart.

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 get_project (single) or register_project (create), and no mention of prerequisites or expected context. For a project-introspection family with four siblings, the routing information is absent.

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

list_tagsList TagsB
Read-onlyIdempotent
Inspect

List all unique tags used across all entries

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
tagsNo
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the scope detail that tags are deduplicated across all entries; it says nothing about ordering, pagination, or the effect of the undocumented use_test_db flag.

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 key scope qualifier front-loaded and no wasted words. It is appropriately sized, though it is arguably too terse given the undocumented parameter.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the undocumented use_test_db parameter and the absence of any routing guidance to team_list_tags leave meaningful gaps for a tool in a large sibling set.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter use_test_db is not mentioned in the description at all, so an agent has no way to know what it does or when to set it. The description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('List all unique tags') and scopes it to 'across all entries', which implicitly separates it from the team-scoped sibling team_list_tags. It does not explicitly name that sibling, so differentiation is inferential rather than stated.

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 team_list_tags or merge_tags, and no mention of prerequisites or context. The agent must infer usage purely from the name and one-line purpose.

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

load-briefingPrompt Fallback (load-briefing)C
Read-only
Inspect

Fallback handler for load-briefing when invoked as an MCP tool instead of an MCP prompt.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds one genuinely non-obvious fact โ€” that this exists to serve clients lacking prompt support โ€” but says nothing about what content comes back or whether the fallback behaves identically to the prompt version.

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 or repetition. It is compact, though the compactness comes partly at the cost of substance rather than being fully earned.

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

Completeness3/5

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

An output schema exists, so return shape needn't be explained, and a zero-param read-only fallback has low complexity. Still, the description leaves the core question unanswered for an agent โ€” what a briefing contains and why it would call this rather than a sibling read tool.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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

Purpose2/5

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

The description mostly restates the name: 'Fallback handler for `load-briefing`' adds only the framing that it exists for tool-invocation contexts. It never says what a 'briefing' is or what the tool actually produces, so an agent cannot tell from the text alone what calling it accomplishes.

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 states a triggering condition ('when invoked as an MCP tool instead of an MCP prompt'), which is a weak usage hint. There is no guidance on when an agent should choose this over related read tools such as read_resource or mj_read_resource, and no exclusions.

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

mark_anchors_staleMark Anchors StaleC
Idempotent
Inspect

Update the status of multiple anchors (e.g. to stale or invalidated) based on validation rules or git history checks.

NameRequiredDescriptionDefault
updatesNo
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
updated_countYes
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare the mutation profile (readOnly=false, idempotent=true, destructive=false), so the description's job is to add context. It does not say whether the statuses are computed internally from validation/git checks or supplied by the caller, nor what side effects a status change has (e.g. vector index implications). The one descriptor-like phrase is ambiguous rather than informative.

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 well-formed sentence with no filler; the batch-mutation intent is front-loaded. Its brevity is close to the right size, though the trailing clause adds ambiguity rather than precision.

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 mutating, batch, 0%-documented-schema tool, the description leaves out the critical use_test_db flag, the full set of allowed statuses, and what the updates are based on. An output schema exists, so return values need no explanation, but the input side is substantially under-covered.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, and it only partly does: 'multiple anchors' implies the array and 'stale or invalidated' names two enum values. It never mentions use_test_db, a boolean that silently redirects writes to a test database, nor the id/status shape of each update item.

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 concrete verb+resource: batch-updating the status of multiple anchors. It is clearly distinguishable from the other sibling tools, none of which operate on 'anchors'. The scope is slightly diluted by the trailing 'based on validation rules or git history checks', which blurs whether the tool performs checks or just applies given statuses.

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 'based on validation rules or git history checks' implies a context (after validation or after inspecting git history), but gives no explicit when/when-not guidance. It never mentions the closest-sounding sibling, check_entry_staleness, so an agent gets no routing signal between the two.

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

memory_read_resourceRead Resource (memory_read_resource Autonomous Fallback)C
Read-only
Inspect

Fallback handler for memory_read_resource when invoked as an MCP tool instead of a protocol resource read.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the bar is lower. The description contributes one genuine piece of context beyond annotations โ€“ that this is a fallback invocation path rather than a normal tool โ€“ but says nothing about the return payload, failure behavior, or what happens if no resource context exists.

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 padding; the framing as a fallback is stated immediately. It is efficient, though the terseness contributes to the opacity noted 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?

An output schema and annotations cover the return shape and safety profile, so those are not the issue. What is missing is any explanation of the implicit resource target and the relationship to the two sibling resource-read tools, which is exactly the information needed to decide whether calling this does anything meaningful.

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 tool takes zero parameters, which would normally put this at baseline 4. However, a resource-read operation with no way to specify a resource is inherently ambiguous, and the description does not explain that the target is supplied implicitly by protocol context โ€“ leaving the agent unable to reason about what it would even read.

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 says it is a 'fallback handler' for reading a resource, which gives a rough verb+resource, but it never states what a resource is in this system or what gets read. It also does not distinguish itself from the near-identical siblings `read_resource` and `mj_read_resource`, so an agent cannot tell the three apart from the description alone.

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 only usage information is the trigger condition 'when invoked as an MCP tool instead of a protocol resource read', which describes when the harness routes here rather than giving the agent guidance. There is no statement of when an agent should call this versus `read_resource`, `mj_read_resource`, or `get_entry_by_id`.

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

merge_tagsMerge TagsAInspect

Merge one tag into another to consolidate similar tags (e.g., merge "phase-2" into "phase2"). The source tag is deleted after merge. Only updates non-deleted entries.

NameRequiredDescriptionDefault
source_tagNoTag to merge from (will be deleted)
target_tagNoTag to merge into (will be created if not exists)
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
sourceTagNo
targetTagNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
sourceDeletedNo
entriesUpdatedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds real context: the source tag is deleted and only non-deleted entries are touched. However, it never reconciles the deletion with the non-destructive hint, nor explains what happens to entries' tag assignments or the idempotency behavior flagged as false.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action and an example, then the destructive consequence. Every sentence carries information with no filler.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers the core semantics and deletion behavior. Minor gaps remain around use_test_db and the exact effect on the entries that carried the source tag.

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 67%, so the schema documents source_tag and target_tag, but use_test_db is undocumented in both places. The example usefully clarifies the merge direction (source into target) beyond the schema text, but the description adds nothing about use_test_db or the string/number type flexibility.

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

Purpose5/5

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

States a specific verb and resource (merge a tag into another) with a concrete example ("phase-2" into "phase2") that pins down the direction and intent. An agent can immediately tell this is tag consolidation, distinct from list_tags or team_merge_tags.

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 "to consolidate similar tags" implies the use case, but there is no explicit when-to-use vs alternatives (e.g., when to call list_tags first, or when the team_merge_tags variant applies). Usage is only implied, not stated.

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

mj_execute_codeExecute JS Code (Sandbox)AInspect

Run arbitrary JavaScript to automate tasks in a secure sandbox. IMPORTANT: You MUST use the mj object (NOT api, journal, or mcp) to access tools. DO NOT use import() or require(); the mj tools are globally available in the sandbox. Available tools are mapped directly from MCP tool names, converted to camelCase (e.g., create_entry -> mj.createEntry(), search_entries -> mj.searchEntries()). Anti-Hallucination Hint: DO NOT GUESS parameter keys (e.g., passing repo instead of repo_name will fail). ALWAYS inspect the schema first if unsure: return await mj.createEntry.schema(). Execution limit: 30s. Network access (fetch) disabled. Example: return await mj.searchEntries({ query: "PowerShell" })

NameRequiredDescriptionDefault
codeNoREQUIRED string parameter containing JavaScript code to execute inside the sandbox. Uses the `mj` global object for API access (e.g. `return await mj.core.getRecentEntries({ limit: 10 })` or `return await mj.core.createEntry(context.entry)`). Anti-Hallucination Hint: Code Mode executes valid JavaScript (e.g., `return await mj.core.getRecentEntries({ limit: 10 })`), NOT raw SQL queries (e.g. `SELECT * FROM journal_entries`) or direct SQLite prepared statements (e.g. `const db = mj.getDatabase(); db.prepare(...)`). When querying or searching, use `mj.core.getRecentEntries({ limit: 10 })` or `mj.search.searchEntries({ query: "..." })`. To update entries, use `mj.admin.updateEntry({ entry_id: ..., content: ... })` instead of raw SQL UPDATE statements. DO NOT call with an empty payload `{}` or pass entry/query payloads directly without including the `code` parameter. When passing markdown or strings with nested backticks, single quotes, or double quotes, pass them safely via the `context` parameter (e.g., `mj.createEntry({ ...context.entry })` or `context.content`) to avoid double-escaping errors that prematurely terminate string literals, or ensure nested characters are escaped cleanly. Node.js native modules (`fs`, `path`, `child_process`, `require()`, `import`) are disabled in the sandbox; pass file content or external data using the `context` parameter instead.
repoNoTarget repository name to set as default context for all github/kanban tools executed in this sandbox (e.g., "memory-journal-mcp").
entryNoOptional entry object or dictionary to create/update. When passed without code, Code Mode automatically synthesizes an appropriate journal entry.
queryNoOptional search query string or SQL-style query string. If provided, Code Mode will automatically resolve it to search or retrieve entries.
contextNoA JSON object, string, or array to pass variables directly into the sandbox (accessible via `context` inside JS code). Use this to pass file contents, external text, or complex entry objects into Code Mode without requiring `fs` or dynamic `require()`.
dry_runNoIf true, state-modifying API calls (create_entry, update_entry, etc.) will be skipped, returning simulated success.
payloadNoOptional payload object, dictionary, or JSON string (e.g. { action: "create", task: "...", notes: "...", changes: [...] }). When passed without code, Code Mode automatically translates and synthesizes it into a type-safe journal entry or API execution.
timeoutNoMaximum execution time in milliseconds before the sandbox forcibly terminates the script (max: 30000ms).
readonlyNoIf true, execution is restricted to read-only operations. Write tools will be filtered out of the API bridge.
use_test_dbNo
auto_versionNoAutomatically inject expected_version for optimistic concurrency on updates/deletes
workspace_idNoTarget workspace ID to isolate data. If omitted, uses defaultWorkspaceId if configured.
maxResultSizeNoAlias for max_result_size.
project_numberNoNumeric project ID to bind to all tool calls in this sandbox. Repo name strings (e.g., "mysql-mcp") are auto-resolved via the project registry. Falls back to DEFAULT_PROJECT_NUMBER if unspecified. Find it by querying memory://agent-id.
max_result_sizeNoMaximum allowed result size in bytes (default: 102400 / 100KB, max: 52428800 / 50MB). Pass a higher limit (e.g. 200000 or 524288) when returning large datasets or multi-entry contents to avoid result truncation.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations (which only declare openWorld=true, readOnly=false, idempotent=false, destructive=false) by disclosing the 30s execution limit, disabled network access via fetch, and disabled Node modules (fs, path, child_process, require, import). It also warns that guessed parameter keys will fail and points to `.schema()` for inspection, which is exactly the kind of context annotations cannot carry.

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?

Front-loaded with the core instruction ('Run arbitrary JavaScript') and then layered with warnings, limits, and a concrete example. Slightly dense in the middle, but every sentence (IMPORTANT, Anti-Hallucination Hint, limits, example) carries actionable information rather than filler.

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

Completeness4/5

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

For a 15-parameter meta-tool with no output schema and 93% schema coverage, the description covers what an agent actually needs before calling: the sandbox contract, the bridge naming convention, and the hard limits. The remaining gap is that it does not sketch the `mj` API surface (available tool namespaces) beyond two examples, so an agent still needs schema inspection.

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

Parameters4/5

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

Schema coverage is already 93%, so the baseline is 3, but the description adds real meaning on the critical `code` parameter: the camelCase mapping convention (`create_entry` -> `mj.createEntry()`), the schema-inspection escape hatch, and the note that nested quotes should be routed through `context`. No description-level coverage is offered for `dry_run`, `readonly`, or `max_result_size`, leaving those entirely to 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?

States a specific verb and resource: 'Run arbitrary JavaScript to automate tasks in a secure sandbox'. It also implicitly distinguishes itself from every sibling by explaining that all other tools are reached through the `mj` bridge rather than called directly, which an agent can act on immediately.

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

Usage Guidelines4/5

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

Gives strong operational context: use `mj`, not `api`/`journal`/`mcp`; no import()/require(); inspect the schema before guessing parameter names. What it lacks is an explicit 'use this when a single call would do otherwise' exclusion, so it stops short of full alternative routing, but the how-to-use guidance is unusually rich.

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

mj_read_resourceRead Resource (mj_read_resource Autonomous Fallback)C
Read-only
Inspect

Fallback handler for mj_read_resource when invoked as an MCP tool instead of a protocol resource read.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the "fallback" framing and says nothing about what happens on invocation, what the result contains, or any error behavior. This is minimal added context above what the annotations already provide.

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?

The description is a single front-loaded sentence with no padding, which is structurally efficient. However, its brevity comes at the cost of substance, since the one sentence is essentially a restatement of the tool name rather than a useful front-loaded purpose statement.

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?

Although an output schema exists (so return values need not be explained) and no parameters are declared, the description still leaves the agent unable to tell which resource this handler reads or how it differs from the sibling `read_resource` and `memory_read_resource` tools. For an ambiguous, zero-parameter tool, this is a significant gap in completeness.

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?

With zero parameters declared and 100% schema description coverage, there is nothing for the description to elaborate on, so the baseline of 4 applies. The description does not need to compensate because the schema is empty.

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

Purpose2/5

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

The description essentially restates the tool name, saying it is a "fallback handler for `mj_read_resource`" โ€” that is tautological. It never states what resource is read or how the resource is identified, and it does not differentiate this tool from the sibling tools `read_resource` and `memory_read_resource`, which appear in the same list.

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 "when invoked as an MCP tool instead of a protocol resource read" hints at a narrow context, but it never tells an agent when to pick this tool over `read_resource` or `memory_read_resource`, nor what prerequisites or inputs are needed. It is a conditional hint rather than usable guidance.

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

mj_session_summaryPrompt Fallback (mj_session_summary)B
Read-only
Inspect

Fallback handler for mj_session_summary when invoked as an MCP tool instead of an MCP prompt.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the useful behavioral fact that this is a fallback path rather than a primary operation, but says nothing about what the invocation yields or how it differs from the prompt version.

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 fallback condition is stated first. It is possibly too terse rather than bloated, but nothing in it 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?

An output schema exists, so return-value explanation is not strictly required, and the tool is a no-arg passthrough. Still, an agent has no sense of when this fallback should be chosen over reading the prompt directly or over the analogous resource-fallback siblings, which is the main missing piece.

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 takes zero parameters, so there is nothing for the description to disambiguate and the 100% schema coverage confirms no hidden inputs. Baseline 4 applies for a no-parameter tool.

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 the tool's role as a fallback handler for the mj_session_summary prompt when used as a tool, which is a specific framing. However, it never says what the tool actually returns or produces (presumably the rendered session-summary prompt content), and it does not distinguish itself from similar fallback siblings such as mj_read_resource or memory_read_resource.

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 'when invoked as an MCP tool instead of an MCP prompt' implies the usage condition โ€” the agent should prefer the prompt form when available. It does not explicitly name the prompt as the preferred alternative or state any other precondition, leaving the guidance implicit.

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

move_kanban_itemMove Kanban ItemA
Idempotent
Inspect

Move a Kanban item to a different status column. Requires the project board to have a Status field.

NameRequiredDescriptionDefault
repoNoRepository name - LEAVE EMPTY to auto-detect
ownerNoProject owner - LEAVE EMPTY to auto-detect
item_idNoProject item ID (from get_kanban_board)
use_test_dbNo
target_statusNoTarget status column name (e.g., "In Progress", "Done")
project_numberNoGitHub Project number (optional if repo is registered)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
itemIdNo
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
newStatusNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
projectNumberNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
availableStatusesNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare non-readOnly, non-destructive, idempotent, open-world behavior, so the safety profile is covered. The description usefully adds the Status-field prerequisite, but says nothing beyond that about auth requirements, error behavior, or what happens if the item/target column doesn't exist.

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?

Two tight sentences with the action front-loaded and the prerequisite second. No wasted text; slightly more could be said about the move's side effects.

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?

With an output schema present and 83% parameter coverage, the description only needs to cover behavior; it does state the key prerequisite. It's marginally light on what happens on failure, but adequate for this tool's complexity.

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 83%, so the schema already documents repo, owner, item_id, target_status, and project_number. The description repeats the 'status column' concept but adds no format/syntax detail beyond the schema's own examples. 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+resource ('Move a Kanban item') plus the target ('different status column'), which distinguishes it from sibling add_kanban_item and delete_kanban_item by name. The purpose is clear even though it doesn't explicitly call out the siblings.

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?

Adds a real precondition โ€” 'Requires the project board to have a Status field' โ€” but gives no guidance on when to use this versus get_kanban_board or add_kanban_item, and no note on failure modes when the prerequisite isn't met. Usage is implied rather than spelled out.

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

read_resourceRead Resource (read_resource Autonomous Fallback)C
Read-only
Inspect

Fallback handler for read_resource when invoked as an MCP tool instead of a protocol resource read.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious context (this exists only as a fallback path for tool invocation), but says nothing about what happens on failure, what resource is resolved when no parameters exist, or any limits.

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 with no waste, and the defining trait (fallback path) is front-loaded. It is perhaps too terse rather than padded.

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?

Despite an output schema and annotations carrying safety, a zero-parameter resource read needs the description to explain what gets read and how to choose it over `mj_read_resource`/`memory_read_resource`. Neither is present, so an agent cannot confidently invoke it.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The empty object schema does raise the question of how the target resource is identified, which the description does not address, but with no parameters there is no semantics to document.

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 identifies the tool as a fallback handler for `read_resource` invoked as an MCP tool rather than a protocol resource read, which is a real distinction. But it never says what a 'resource' is here or what is actually read, and it does not differentiate itself from the near-identical siblings `mj_read_resource` and `memory_read_resource`.

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 implies the tool is only for the 'invoked as a tool' path but gives no explicit when-to-use or when-not-to-use instruction, and no mention of the two sibling read_resource tools an agent must choose between. The agent is left to infer routing on its own.

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

rebuild_vector_indexRebuild Vector IndexBInspect

[REQUIRES ADMIN SCOPE] Rebuild the semantic search vector index from all existing entries

NameRequiredDescriptionDefault
use_test_dbNo
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
partialNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
failedEntriesNo
entriesIndexedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description's main addition is the admin-scope requirement, which is genuinely valuable. It does not disclose whether the existing index is dropped first (relevant given destructiveHint=false and idempotentHint=false), how long the rebuild takes, or whether it is blocking.

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 sentence with the access requirement front-loaded in brackets; no filler. It is arguably over-compressed given the unknowns it leaves, but structurally sound.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the admin prerequisite is covered. For a whole-index mutation with two undocumented parameters and no cost or scope-of-impact statement, the description is only minimally sufficient.

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

Parameters2/5

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

Schema description coverage is 0% and neither parameter is documented anywhere. The description says 'all existing entries' without clarifying how project_number scopes the rebuild or what use_test_db does, so an agent cannot tell whether omitting project_number rebuilds every project.

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 (Rebuild) and resource (semantic search vector index) plus the source of data ('all existing entries'), which implicitly separates it from add_to_vector_index (incremental) and get_vector_index_stats (read-only). It does not name those siblings explicitly, so an agent must infer the contrast.

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 '[REQUIRES ADMIN SCOPE]' prefix gives a concrete prerequisite, which is useful. However there is no statement of when to prefer a full rebuild over add_to_vector_index, nor any warning about cost/downtime or whether existing vectors are replaced.

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

register_projectRegister ProjectA
Idempotent
Inspect

Register a new project in the global registry. This is required before the agent can switch context to this repository.

NameRequiredDescriptionDefault
nameNoThe key/name of the project in the registry.
use_test_dbNo
absolute_pathNoThe absolute path to the local repository.
project_numberNoThe GitHub Project number, if applicable.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
errorNoHuman-readable error message
itemsNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and idempotency profile is covered. The description adds the prerequisite context about switching repository context, but it does not explain duplicate handling, permissions, or error behavior beyond what annotations imply.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed by the key prerequisite. There is no wasted text.

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

Completeness4/5

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

An output schema exists and annotations cover the safety profile, so the description need not explain return values. It supplies the important prerequisite for use, though it could say more about duplicate registration or required inputs.

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 75%, with name, absolute_path, and project_number documented in the schema, while use_test_db is undocumented. The description adds no parameter-level meaning, so the schema does most of the work and a 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?

The description states a specific verb and resource: "Register a new project in the global registry." It is clear what the tool does, but it does not explicitly distinguish itself from sibling project tools such as update_project or get_project.

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

Usage Guidelines4/5

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

It gives a clear usage condition: registration is "required before the agent can switch context to this repository." It does not name alternatives or state when not to use it, but the prerequisite context is strong.

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

restore_backupRestore Journal from BackupA
Destructive
Inspect

Restore the journal database from a backup file. WARNING: This replaces all current data. Enforce single-writer / single-instance only for restore-capable deployments. An automatic backup is created before restore.

NameRequiredDescriptionDefault
confirmNoMust be set to true to confirm the restore operation
filenameNoBackup filename to restore from (e.g., backup_2025-01-01.db). Anti-Hallucination Hint: Property is strictly `filename`, not `file`. You can pass positional args: mj.backup.restoreBackup("filename.db", true).
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successYes
warningNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
restoredFromNo
newEntryCountNo
revertedChangesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
previousEntryCountNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds genuinely new behavior: that ALL current data is replaced and that an automatic backup is created before the restore. Those two facts materially change an agent's risk calculus and are not derivable from the structured fields.

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

Conciseness4/5

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

Three tight sentences with the destructive warning placed immediately after the purpose, which is the right front-loading for a data-destroying operation. The single-writer sentence is slightly jargon-heavy but still earns its place as a deployment constraint.

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

Completeness5/5

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

An output schema exists, so return values need not be explained. For a destructive, zero-required-parameter tool, the description covers purpose, data loss, pre-restore backup, and deployment constraints โ€” everything needed to invoke it responsibly.

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

Parameters2/5

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

Schema coverage is 67%: confirm and filename are well documented, but use_test_db has no description anywhere. The description adds nothing about any parameter โ€” not the required confirmation flag, not the filename format, not the effect of use_test_db โ€” so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ("Restore the journal database from a backup file"), which cleanly separates it from backup_journal, list_backups and team_list_backups in the sibling set. It never names an alternative explicitly, 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 Guidelines3/5

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

The deployment constraint ("Enforce single-writer / single-instance only for restore-capable deployments") gives a real precondition for use, but there is no guidance on how to pick a filename (e.g., call list_backups first) or when restore is the wrong choice versus restore_entry or import_markdown.

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

restore_entryRestore EntryCInspect

Restore a soft-deleted journal entry.

NameRequiredDescriptionDefault
entry_idNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
entryIdNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation. The description adds only the word 'soft-deleted' and says nothing about what restoration actually does (fields, links, tags), required permissions, or failure behavior when the entry is not deleted. For a mutation tool this leaves meaningful 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. It is efficient, though the brevity borders on under-specification rather than crispness.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the definition omits how to locate the entry_id, how this differs from team_restore_entry, and what state changes occur on restore. For a mutation tool with a 0%-coverage parameter, this is incomplete.

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

Parameters1/5

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

Schema coverage is 0% and the description never mentions entry_id, its accepted types (number|string), or where to find a valid value. With one undocumented required-ish parameter, the description fails to compensate for the schema gap.

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

Purpose4/5

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

States a specific verb and resource ('Restore a soft-deleted journal entry'), making the action immediately understandable. It does not distinguish itself from the sibling team_restore_entry or from the broader restore_backup, 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 guidance on when to use this instead of update_entry, team_restore_entry, or restore_backup, and no hint that entry_id must reference a soft-deleted entry (e.g., obtained via list_deleted_entries). The agent is left to infer the entire workflow.

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

run_auto_pruneRun Auto PruneA
Destructive
Inspect

Manually trigger the autonomous pruning and cleanup routines. This evaluates entry importance, archives old entries, and hard-deletes stale softly-deleted ones.

NameRequiredDescriptionDefault
dry_runNoIf true, simulates the pruning process and returns the counts without making actual changes.
use_test_dbNo
importance_thresholdNoOverride the importance score threshold (0.0 - 1.0) below which entries are eligible for pruning.
prune_older_than_daysNoOverride the number of days before archived entries are soft-deleted.
archive_older_than_daysNoOverride the number of days before active entries are archived.
hard_delete_older_than_daysNoOverride the number of days before soft-deleted entries are permanently removed.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
dryRunNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
backupFileNo
suggestionNoSuggested fix for the error
prunedCountNo
recoverableNoWhether the error is recoverable
archivedCountNo
hardDeletedCountNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description earns credit beyond that by disclosing exactly what is destroyed (hard-deletes stale softly-deleted entries) and that pruning is multi-stage, which is more specific than a bare 'destructive' flag. It stops short of stating irreversibility or that the process may touch many records at once.

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

Conciseness5/5

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

Two sentences, no filler, and the action is front-loaded in the first clause. The second sentence exists purely to add behavioral detail that the first omits, so every sentence earns its place.

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?

With six optional parameters, 83% schema coverage, and an output schema handling return values, the description does enough to explain the pipeline and its effects. The remaining gap is that it never connects the override parameters to the stages it describes, but nothing essential to calling the tool correctly is missing.

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 83%, so the schema already documents the threshold and day-count overrides, and the description adds no syntax or default guidance for them. At high coverage the baseline of 3 is appropriate; the description's process list loosely maps to importance_threshold and the age overrides but adds nothing new.

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 ('manually trigger') and resource ('pruning and cleanup routines'), then enumerates the three concrete operations performed: importance evaluation, archiving, and hard-deletion of soft-deleted entries. It is clear what the tool does, though it never names a sibling to differentiate itself from (e.g., delete_entry, cleanup_backups).

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?

'Manually trigger the autonomous...routines' implies you use it to force a prune now instead of waiting for the automatic schedule, which is useful context. But there is no explicit when-not guidance and no reference to the manual alternatives (delete_entry, batch_delete_entries, restore_entry) with which it competes; usage must be inferred.

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

search_audit_logSearch Audit LogB
Read-onlyIdempotent
Inspect

Search operational telemetry audit logs by tool name, user, date range, status, or category. Returns the most recent matches up to the limit.

NameRequiredDescriptionDefault
userNo
limitNo
statusNo
categoryNo
tool_nameNo
date_rangeNo
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
resultsNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavior about result ordering and cap ('most recent matches up to the limit'), but does not mention retention, authorization requirements, or what an empty result means. No contradiction.

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

Conciseness5/5

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

Two direct sentences with the purpose front-loaded and no wasted text. The result-ordering note is compact and useful.

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 seven-parameter search tool with zero parameter descriptions and a nested date_range object, yet the description explains only a subset of parameters and no formats. An output schema exists, so return structure need not be explained, but the filtering semantics are under-specified for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, but it only lists five filter names and omits project_number entirely. It does not explain the boolean status field, the date_range object shape (start/end), date formats, or how limit interacts with the maximum of 1000.

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 (Search) and resource (operational telemetry audit logs), enumerating the main filter dimensions. It distinguishes itself from generic entry searches through the 'audit logs' framing, though it does not explicitly name or contrast a sibling 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 guidance on when this tool should be chosen over nearby tools like search_entries, team_search, or search_commits. The usage context is implied by the 'audit logs' resource but never stated as a when/when-not rule.

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

search_by_date_rangeSearch by Date RangeC
Read-onlyIdempotent
Inspect

Search journal entries within a date range with optional filters

NameRequiredDescriptionDefault
tagsNo
limitNo
cursorNoCursor for pagination
sort_byNoSort results by timestamp (default) or importance scoretimestamp
end_dateNo[REQUIRED] End date (use `end_date`, not `end`). Must provide an ISO-8601 date string (e.g. YYYY-MM-DD).
pr_numberNo
entry_typeNo
start_dateNo[REQUIRED] Start date (use `start_date`, not `start`). Must provide an ISO-8601 date string (e.g. YYYY-MM-DD).
is_personalNo
include_teamNoInclude team entries in the search results
issue_numberNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
workflow_run_idNo
include_archivedNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
facetsNoDistribution counts when include_facets is true
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
degradedNoTrue if the search degraded to a slower fallback method due to infrastructure failure
highlightsNoFTS5 search snippets when include_highlights is true
searchModeNo
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds almost no behavioral context beyond the basic scope: it does not explain pagination, default limits, archived-entry handling, team inclusion, or result ordering.

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?

The description is a single front-loaded sentence with no wasted words, but it is too terse for a 15-parameter search tool. Conciseness is not the problem; the sentence simply does not carry enough structural detail for the tool's complexity.

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

Completeness2/5

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

An output schema exists and annotations cover the read-only safety profile, but the description is still far too thin for a 15-parameter tool with 40% schema coverage. An agent cannot determine the required date format, how filters interact, or when to choose this over related search tools.

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

Parameters1/5

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

The schema has 15 parameters but only 40% description coverage, and the description adds no parameter-level semantics. It does not mention the required start_date/end_date format, what the optional filters are, pagination via cursor, limits, or workspace/project scoping.

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: searching journal entries within a date range. It is clear what the tool does, but it does not distinguish itself from close siblings like search_entries or team_search_by_date_range, 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 guidance on when to use this tool versus search_entries, semantic_search, get_recent_entries, or team_search_by_date_range. The phrase 'with optional filters' does not explain which filters matter or when this date-range-specific search should be preferred.

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

search_commitsSearch CommitsC
Read-onlyIdempotent
Inspect

Search commit history by query

NameRequiredDescriptionDefault
queryNoSearch query to match in commit messages
scopeNoFilter commits by a specific scope
sortByNoSort commits by date or impact score
maxCountNoMaximum number of commits to return. Default: 50
use_test_dbNo
techDebtAuditNoFilter for high impact commits with low trust or missing validation

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
commitsNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
changelogNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds no further behavioral context, such as result format, pagination, or how filters like techDebtAudit affect results.

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 appropriately concise, though its terseness leaves important usage 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?

For a tool with six parameters, including scope, sortBy, and techDebtAudit, the description is too thin. The output schema covers return values, but the description does not explain how the filters should be used or when this search is preferable to sibling tools.

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 83%, so the schema already documents most parameters. The description adds no parameter meaning beyond the schema, which is acceptable at this coverage level but not enriching.

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 commit history by query.' It is clear what the tool does, but it does not distinguish itself from siblings like get_commit_history or analyze_commit_patterns.

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 tool versus alternatives such as get_commit_history, get_unreleased_commits, or search_entries. It implies a search use case but provides no 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.

search_entriesSearch EntriesA
Read-onlyIdempotent
Inspect

Search journal entries. Use sort_by: "importance" to surface structurally significant entries before major decisions. Supports modes: auto (default), fts, semantic, hybrid. Optional filters for GitHub Projects, Issues, PRs, and Actions. FTS5 syntax: "exact phrase", prefix*, OR/NOT/AND. Word-boundary matched. Automatically merges team DB results when TEAM_DB_PATH is configured.

NameRequiredDescriptionDefault
modeNoSearch strategy: auto (default, heuristic-based), fts (FTS5 keyword), semantic (vector), hybrid (RRF fusion of FTS5+vector)auto
tagsNo
limitNo
queryNoThe search query string (use `query`, not `q`)
cursorNoCursor for pagination
sort_byNoSort results by timestamp (default) or importance scoretimestamp
end_dateNo
pr_numberNo
pr_statusNo
entry_typeNo
fts_weightNoWeight multiplier for FTS5 results in hybrid search (default: 1.0)
start_dateNo
exact_matchNoLegacy hallucinated alias. Maps exact_match: false to fuzzy_match: true
fuzzy_matchNoIf true and no exact FTS5 results found, returns typo-tolerant suggestions (fts mode only)
is_personalNo
auto_correctNoIf true and fuzzy_match=true, automatically runs a new search with the best suggestion if distance <= 1
include_teamNoInclude team entries in the search results
issue_numberNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. [ANTI-HALLUCINATION] If an entry is missing, it might belong to another workspace. Set workspace_id: "*" to search globally.
include_facetsNoInclude facet distributions (tags, entry types) for the search results
project_numberNo
semantic_weightNoWeight multiplier for semantic results in hybrid search (default: 1.0)
workflow_run_idNo
include_archivedNo
include_highlightsNoInclude snippets with matched terms highlighted (only applies to fts mode)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
facetsNoDistribution counts when include_facets is true
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
degradedNoTrue if the search degraded to a slower fallback method due to infrastructure failure
highlightsNoFTS5 search snippets when include_highlights is true
searchModeNo
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: auto-merging of team DB results when TEAM_DB_PATH is configured, word-boundary matching, and how the mode heuristic behaves. It stops short of describing result ordering/pagination behavior, but it meaningfully reduces uncertainty.

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?

Five compact sentences with the core purpose first, then advanced usage, then syntax quirks โ€” front-loaded and mostly waste-free. The GitHub-filter sentence is thin enough that it borders on filler, but nothing is redundant.

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 25 parameters and a modest 52% coverage, plus an output schema that removes the need to explain return values, the description covers the high-risk ambiguities (mode choice, FTS syntax, workspace/team merging) but leaves pagination, default filters, and half the filter parameters to the schema alone. Adequate but not complete for a tool this broad.

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 only 52% across 25 parameters, so the description must carry weight. It does explain mode semantics, sort_by, and the FTS5 query syntax (exact phrase, prefix*, boolean operators), which is genuinely useful. But it says nothing about limit, cursor pagination, tag filtering, include_team, include_archived, or the GitHub filter fields, so roughly half the surface remains undocumented.

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 ('Search journal entries') and enumerates the search modes (auto/fts/semantic/hybrid) plus the filter domain (GitHub Projects, Issues, PRs, Actions). It's clear what the tool does, though it never explicitly distinguishes itself from close siblings like semantic_search, search_by_date_range, or team_search.

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

Usage Guidelines3/5

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

It gives one concrete usage cue ('Use sort_by: "importance" ... before major decisions') and explains the mode options, but gives no when-not guidance and no routing to alternatives such as semantic_search (semantic-only), search_by_date_range, get_recent_entries, or team_search. An agent still has to infer which sibling to pick.

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

team_add_author_aliasAdd Author AliasA
Idempotent
Inspect

Map a raw author name to a canonical identity. Requires admin role. Used to consolidate attribution for team analytics when one person uses multiple usernames.

NameRequiredDescriptionDefault
aliasYesThe raw author name to map (e.g., "Chris" or "GitHub: neverinfamous")
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
canonical_authorYesThe canonical author identity to map the alias to (e.g., "christopher")

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
aliasNo
errorNoHuman-readable error message
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Adds a requirement not present in structured fields: 'Requires admin role', which materially affects whether an agent should attempt the call. Annotations already declare non-read-only, idempotent and non-destructive, so the remaining gaps (what happens if the alias already points elsewhere) are modest.

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?

Three short sentences: what it does, permission prerequisite, and motivation. Everything is front-loaded and no sentence is redundant.

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 3-parameter mutation tool with an output schema and full annotation coverage, the description covers purpose, auth requirement and motivation adequately. It stops short of explaining collision behavior when an alias is re-mapped, which is the one thing an agent might still need.

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 per-parameter descriptions and examples, so the schema carries the semantics. The description reinforces the aliasโ†’canonical direction of the mapping but adds no format or precedence detail beyond that; 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 and resource: maps a raw author name to a canonical identity, plus the downstream purpose (attribution consolidation). It doesn't explicitly distinguish from close siblings like team_resolve_author or team_consolidate_authors, so an agent must 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 Guidelines3/5

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

'Used to consolidate attribution ... when one person uses multiple usernames' gives a clear triggering condition for use. However, no when-not guidance and no pointer to the sibling that reads or removes aliases (team_list_author_aliases, team_remove_author_alias) or resolves names at query time.

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

team_add_memberAdd Team MemberAInspect

Add a new member to the team with a specific role. Bootstraps the first user as admin if table is empty. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
roleYesThe role to assign
authorYesThe author ID/username to add
display_nameNoOptional display name
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
memberNo
detailsNoAdditional error context
messageNo
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the write, non-destructive, non-idempotent profile, and the description adds two things annotations cannot convey: the first-user-becomes-admin bootstrap side effect and the TEAM_DB_PATH prerequisite. It still omits what happens when the author already exists, which matters given idempotentHint=false.

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?

Three short sentences, each doing distinct work: action, side effect, prerequisite. The primary action is front-loaded and there is no filler.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and annotations cover the safety profile. The description covers prerequisites and the bootstrap behavior; the only meaningful gap is duplicate-author handling, which is minor for a simple create operation.

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 role enum is fully documented in the schema, so the baseline is 3. The description adds only that the role is "specific," which is no information beyond what the schema already carries.

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 ("Add a new member to the team with a specific role"), which clearly separates it from team_remove_member and team_update_member_role. It does not name those siblings explicitly, so an agent must infer the boundary, but the intent 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?

Usage is implied by the verb and the bootstrap note, but there is no explicit "use this when... / use team_update_member_role instead when..." guidance. With three closely related member-management siblings, the routing signal is thinner than it should be.

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

team_add_to_vector_indexAdd Team Entry to Vector IndexB
Idempotent
Inspect

Add a specific team entry to the semantic search vector index. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
entry_idNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
entryIdNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false and idempotentHint=true, so the safety and repeatability profile is covered. The description contributes one genuinely new operational fact โ€” it 'Requires TEAM_DB_PATH' โ€” which is useful environment context. It does not state what happens when the entry is missing or already indexed, so it adds only modest value beyond annotations.

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?

Two short sentences with no filler, and the core action is front-loaded ahead of the prerequisite. Efficiency is fine, though the second sentence is a bare fragment rather than integrated context.

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

Completeness2/5

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

An output schema exists so return values need no explanation, but for a 4-parameter indexing mutation the description omits prerequisites for the referenced entry, effects on a stale/dirty index, and the meaning of the undocumented parameters. An agent cannot confidently call this correctly from the description alone.

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

Parameters2/5

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

Four parameters with zero required and only 25% schema description coverage; only workspace_id carries a schema description. The description says nothing about entry_id, use_test_db (a materially risky test-database toggle), or project_number, so it fails to compensate for the coverage gap. Its only parameter-adjacent contribution is the TEAM_DB_PATH note, which isn't a parameter.

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 has a specific verb ('Add') and resource ('a specific team entry to the semantic search vector index'), so an agent immediately knows what it does. The team scope is conveyed in the tool name, but the description never explicitly contrasts itself with the non-team add_to_vector_index or team_rebuild_vector_index.

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?

'Add a specific team entry to the vector index' implies the post-write indexing scenario, but there is no explicit when-to-use or when-not-to-use statement. Nothing tells the agent whether to prefer this over rebuild_vector_index for bulk work or over add_to_vector_index for non-team databases.

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

team_backupBackup Team DatabaseBInspect

Create a timestamped backup of the team database. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
nameNo
use_test_dbNo
workspace_idNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
pathNo
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
filenameNo
sizeBytesNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare it is a non-read-only, non-idempotent, non-destructive, closed-world operation; the description adds the environment prerequisite and the 'timestamped' artifact notion, which is consistent with idempotentHint=false. It does not say where backups land, whether they overwrite anything, or how the resulting backup is referenced later.

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?

Two short sentences, purpose front-loaded, prerequisite immediately after. No filler, but the space saved was not spent resolving the opaque parameters.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, three undocumented parameters and no indication of backup location or how backups are enumerated make this only minimally sufficient for invoking the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters (name, use_test_db, workspace_id), so the schema adds no meaning to them. The description does not mention any of the three; TEAM_DB_PATH is an environment variable, not a parameter, so it does not compensate for the gap.

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

Purpose4/5

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

States a specific verb and resource ('Create a timestamped backup of the team database'), which separates it from list/restore/cleanup style siblings. The 'team database' qualifier distinguishes it from the non-team backup_journal, though it never names those alternatives 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?

'Requires TEAM_DB_PATH' gives one concrete prerequisite, implying usage context. However, it never says when to prefer this over backup_journal, team_list_backups, or restore_backup, nor what happens on repeated invocation.

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

team_batch_create_entriesTeam Batch Create EntriesCInspect

Create multiple team journal entries at once. Max 50 per batch. Select the most accurate entry_type for each. REQUIRED: You MUST include project_number. REQUIRED: You MUST include impact_score, trust_score, and validation_status. REQUIRED: You MUST use related_to to anchor entries to previous context.

NameRequiredDescriptionDefault
entriesNo
auto_indexNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
indexStatusesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description only needed to add operational context โ€” and the batch cap of 50 is a genuinely useful addition. But it also asserts 'REQUIRED: You MUST include project_number' while the schema marks project_number optional and states 'workspace_id is preferred', and it instructs the agent to 'use related_to' for a parameter that does not exist (the field is 'relationships'). Both are actively misleading for a non-idempotent write.

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?

The opening two sentences are front-loaded and earn their place. The subsequent three 'REQUIRED: You MUST...' lines are repetitive boilerplate, and one of them encodes an incorrect constraint, so the structure spends words on guidance that actively harms accuracy.

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

Completeness1/5

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

For a complex nested-batch write tool (entries array with ~20 properties, additionalProperties=false) at 20% schema coverage, the description omits the per-entry required fields entirely โ€” workspace_id is marked REQUIRED in the schema but never mentioned. The guidance it does give conflicts with the schema on two points, so an agent cannot safely construct a valid call from description plus schema.

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

Parameters2/5

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

Schema description coverage is only 20%, so the description carries most of the burden โ€” and it names fields (impact_score, trust_score, validation_status, entry_type) without adding format or semantics beyond what the schema already says. Worse, it directs the agent to a nonexistent 'related_to' key and mislabels project_number as mandatory when the schema says it is optional; with additionalProperties=false on entry items, following this guidance would cause validation failures.

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, and batch scope: 'Create multiple team journal entries at once. Max 50 per batch.' The 'team' qualifier plus 'multiple... at once' distinguishes it from create_entry and batch_create_entries. It stops short of naming those siblings explicitly, so it lands at 4 rather than 5.

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 batching language ('multiple ... at once', 'Max 50 per batch'). There is no statement of when to prefer this over create_entry in a loop or over the personal batch_create_entries, and no prerequisites or exclusions. The remaining sentences are per-field instructions, not routing guidance.

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

team_batch_delete_entriesTeam Batch Delete EntriesA
Destructive
Inspect

Delete multiple existing team journal entries in a single transaction. Max 50 per batch. Can only delete entries you authored.

NameRequiredDescriptionDefault
entry_idsNo
permanentNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
deletedNo
detailsNoAdditional error context
successNo
warningNo
categoryNoError category (validation, query, connection, internal)
notFoundNo
permanentNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered; the description still adds real value by disclosing batch atomicity ("single transaction"), the 50-item cap, and the authorship restriction. It does not explain what the `permanent` flag governs โ€” critical for a destructive tool โ€” nor what happens if one ID is unauthorized.

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

Conciseness5/5

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

Two short sentences with no filler; the destructive action and batch semantics are front-loaded, followed by the two hard constraints an agent most needs.

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

Completeness3/5

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

An output schema exists so return values need not be described, and the ownership and size constraints cover the essentials. However, for a destructive batch operation with 25% parameter coverage, the silence on permanence/recoverability and on partial-failure behavior leaves meaningful gaps.

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

Parameters2/5

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

Schema coverage is only 25%, with just workspace_id documented, so the description must compensate and largely does not. It adds the 50-item limit to entry_ids, but leaves `permanent` (the soft-vs-hard-delete switch, default false) and `project_number` completely unexplained.

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 (delete), resource (team journal entries), and scope (multiple, single transaction), which clearly distinguishes it from team_delete_entry. It does not explicitly name the sibling alternatives (team_delete_entry, batch_delete_entries), but the batch/team qualifiers make intent inferable.

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?

"Max 50 per batch" and "Can only delete entries you authored" are eligibility constraints rather than when-to-use guidance. Nothing tells the agent when to prefer this over calling team_delete_entry repeatedly, or when the non-team batch_delete_entries sibling applies.

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

team_batch_update_entriesTeam Batch Update EntriesAInspect

Update multiple existing team journal entries in a single transaction. Max 50 per batch. Can only update entries you authored. Pass expected_version for optimistic locking.

NameRequiredDescriptionDefault
updatesNo
auto_indexNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
notFoundNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
indexStatusesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.5/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: atomic transaction semantics, a hard batch cap of 50, an authorship/authorization restriction, and an optimistic-concurrency mechanism via expected_version. It stops short of saying how partial failures or version conflicts are surfaced, but the safety-critical behavior is disclosed.

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?

Four short sentences, front-loaded with the operation, followed by limits and constraints in descending order of importance. No filler, no restatement of the tool name.

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

Completeness3/5

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

An output schema exists, so return values need not be re-explained, and the core mutation semantics are covered. But for a batch mutation with zero required parameters, the description omits per-item required fields and what `auto_index` actually does, which are material to calling it correctly.

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

Parameters2/5

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

Schema description coverage is only 25%, so the description carries the burden, yet it explains just one field (expected_version). Top-level `auto_index` (what indexing side effect it triggers) and `project_number` are undocumented anywhere, and the `updates` array has no required fields in the schema with no clarification from the description that entry_id is effectively mandatory.

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 ('Update multiple existing team journal entries') plus a scoping mechanism ('single transaction'), so the batch + team nature is unambiguous. It does not explicitly distinguish itself from the personal `batch_update_entries` or single-entry `team_update_entry`, leaving sibling separation to the word 'team'.

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?

Gives real conditions for correct use (max 50 per batch, only entries you authored, use expected_version for locking), which is more than most definitions. However it never says when to prefer `team_update_entry` for a single entry or `batch_update_entries` for personal entries, so the alternative-selection guidance is only implied.

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

team_consolidate_authorsConsolidate AuthorsA
Destructive
Inspect

Retroactively rewrite all past entries matching an author's aliases to the canonical author name. Requires admin role. This operation modifies database entries.

NameRequiredDescriptionDefault
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
canonical_authorYesThe canonical author name. All entries matching any of this author's aliases will be updated to use this canonical name.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
updated_countNo
canonical_authorNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds valuable specifics: the mutation is a bulk retroactive rewrite of ALL past matching entries, and it requires admin role. That scope-of-destruction and auth requirement is exactly the kind of context annotations cannot convey. It stops short of describing irreversibility or what happens to non-matching data.

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?

Three short sentences, front-loaded with the core action, then the precondition, then the mutation warning. No filler and every clause carries 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?

With an output schema present and full parameter coverage, the description covers the essential action, auth requirement, and mutation risk. A brief note on reversibility or effect on entries that fail to match would close the remaining gap.

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 are already fully documented in the schema. The description reinforces canonical-name semantics but adds no format, constraint, or edge-case detail beyond what the schema states; baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource ('Retroactively rewrite all past entries matching an author's aliases to the canonical author name') with explicit scope. This is clearly distinguishable from siblings like team_add_author_alias or team_resolve_author, which manage aliases rather than rewriting existing entries.

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

Usage Guidelines3/5

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

It gives a prerequisite ('Requires admin role') which helps gate usage, and the retroactive wording implies when to invoke it. However, it never explicitly says when to prefer this over team_update_entry, team_add_author_alias, or the batch update tools, leaving the agent to infer the boundary.

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

team_create_entryCreate Team EntryAInspect

Create an entry in the team database for sharing with collaborators. ONLY use when explicitly requested by the user. Default to personal create_entry instead. Content must be well-structured markdown using ## section headers. Select the most accurate entry_type (e.g., retrospective, technical_note). For session summaries, use entry_type "retrospective" with tag "session-summary" and structure content as: ## Accomplished, ## Unfinished / Blocked, ## Context for Next Session. REQUIRED: You MUST include project_number. REQUIRED: You MUST include impact_score, trust_score, and validation_status. REQUIRED: You MUST use related_to to anchor the entry to a session summary or nearby context. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
tagsNoTags for categorization (kebab-case). Session summaries MUST include "session-summary". DO NOT hallucinate fake tags. Only use tags that genuinely match the content or existing repository vocabulary, domain tags (e.g., "security", "performance") and activity tags (e.g., "refactor", "audit"). [ANTI-HALLUCINATION] MUST be an array of strings, e.g. ["tag1", "tag2"]. NEVER pass a single string.
authorNoOverride author name (default: auto-detected)
pr_urlNo
contentNoMarkdown-formatted entry content. Use ## section headers to organize content. Note: The primary text is stored in the `content` property (not `entry`, `title`, `message`, `name`, `description`, or `text`). For session summaries (entry_type: "retrospective", tagged "session-summary"), MUST use EXACTLY: ## Accomplished, ## Unfinished / Blocked, ## Context for Next Session, ## Commits. Do NOT invent extra top-level sections for session summaries.
issue_urlNo
pr_numberNo
pr_statusNo
entry_typeNoEntry type. Use "retrospective" for session summaries, "bug_fix" for bugs, "feature_implementation" for features, "planning" for roadmaps, "technical_note" for implementation notes. Do NOT default to "personal_reflection" unless the entry is genuinely a personal note.personal_reflection
session_idNoAgent session ID for thread isolation (usually conversation ID).
trust_scoreNoHeuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified).
auto_contextNo
impact_scoreNoHeuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs).
issue_numberNo
workspace_idNoREQUIRED. The repository name (e.g. adamic). Do not use numeric project IDs or "workspace" as the key.
project_ownerNoOwner of the project/task.
relationshipsNoOptional array of links to previous entries/flags to establish relationships immediately upon creation. Types: "resolves", "depends_on", "implements", "relates_to", "references", "evolves_from"
workflow_nameNo
project_numberNoNumeric project ID (e.g., 1, 14). This is now optional; workspace_id is preferred.
workflow_run_idNo
workflow_statusNo
significance_typeNo
validation_statusNoCurrent validation status of the entry (passed, none, failed).

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
authorNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare a non-read-only, non-destructive, non-idempotent write, so the safety profile is partly covered; the description adds the environment prerequisite (TEAM_DB_PATH) and the collaborator-sharing consequence. It does not say what happens on duplicate entries or how creation is authorized per team, which leaves a real gap for a write 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?

Front-loaded with the when-to-use gate before the formatting rules, and every block (entry_type selection, session-summary template, required fields) is actionable. The three consecutive 'REQUIRED:' sentences are slightly repetitive and could be consolidated without losing meaning.

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

Completeness5/5

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

For a 22-parameter write tool with an output schema available, the description still supplies the operational essentials: prerequisites, format contract, required-field enforcement, type selection, and the alternative tool. Nothing an agent must know before a correct call is missing, aside from edge-case duplicate handling.

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

Parameters4/5

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

Schema coverage is 55%, and the description compensates by naming which fields are mandatory (project_number, impact_score, trust_score, validation_status), the required content structure, and the entry_type vocabulary. Caveats: it calls project_number REQUIRED while the schema marks it optional and says workspace_id is preferred, and it references 'related_to' which only exists as a relationType value inside the relationships object, so the naming is imprecise.

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

Purpose5/5

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

States a specific verb and resource (create an entry in the team database) and immediately contrasts it with the sibling personal tool create_entry. An agent can distinguish team_create_entry from create_entry without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit gate ('ONLY use when explicitly requested by the user'), an explicit default ('Default to personal create_entry instead'), plus routing guidance for entry_type and a prescribed shape for session summaries. This is about as prescriptive as a usage section gets.

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

team_delete_entryDelete Team EntryC
Destructive
Inspect

Soft-delete a team entry (marks as deleted, preservable). Calling with permanent: true on a previously soft-deleted entry works. Returns success: false for nonexistent entries. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
entry_idNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
expected_versionNoREQUIRED for safe deletion to prevent optimistic concurrency gaps. Get this from get_entry_by_id.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description adds genuinely useful context beyond that: soft-delete semantics, a defined failure mode ("success: false for nonexistent entries"), and the TEAM_DB_PATH environment requirement. However, it omits the optimistic-concurrency requirement that the schema flags as critical for safe deletion, and its phantom "permanent" parameter misleads about 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?

Four short sentences with the core operation front-loaded, so the shape is efficient. But one of the four sentences is dedicated to a parameter that does not exist, which is waste that also creates confusion rather than earning its place.

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

Completeness2/5

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

An output schema exists, so the description needn't explain return values, yet it spends a sentence on the success flag while omitting the expected_version concurrency safeguard that matters most for a destructive operation. Combined with the nonexistent "permanent" parameter and no pointer to team_restore_entry for undo, an agent reading only the description would form an incorrect model of the tool's contract.

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

Parameters2/5

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

With 50% schema coverage, entry_id and project_number carry no description anywhere, and the description does not compensate for either. Worse, it introduces a "permanent" parameter that is absent from the schema (additionalProperties: false), which actively misinforms the agent about the call signature.

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 ("Soft-delete a team entry") and clarifies the mutation is reversible-in-principle ("marks as deleted, preservable"), which distinguishes it from a hard delete. It does not explicitly differentiate from siblings like delete_entry, team_batch_delete_entries, or team_restore_entry, so the agent must infer the team-scoped variant from the name alone.

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 when-to-use guidance and no routing to alternatives (delete_entry for non-team data, team_batch_delete_entries for bulk, team_restore_entry for undo). The only usage-like sentence references "permanent: true," a parameter that does not exist in the schema, so the guidance it does offer is unusable.

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

team_export_entriesExport Team EntriesB
Read-onlyIdempotent
Inspect

Export team entries in JSON or Markdown format with optional date range, type, and tag filters. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
tagsNo
limitNo
formatNojson
end_dateNo
entry_typeNo
start_dateNo
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
countNo
errorNoHuman-readable error message
formatNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
truncatedNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description's one genuine addition is the environment prerequisite 'Requires TEAM_DB_PATH', which is useful operational context; it says nothing about truncation behavior from the default limit of 100 or what happens if the DB path is unset.

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?

Two short sentences, purpose front-loaded, zero filler. The prerequisite is tacked on the end rather than integrated, 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?

An output schema exists so return values need no explanation, and annotations cover the safety profile, but with 7 undocumented parameters the description should say more about 'limit' (export completeness) and 'use_test_db', and should route the agent away from the overlapping sibling export tools. Adequate but with clear 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 0%, so the description must carry the load: it meaningfully maps format, start_date/end_date, entry_type, and tags (4 of 7 params). It leaves 'limit' (default 100, with real truncation consequences for an export) and 'use_test_db' entirely unexplained, and gives no allowed values for 'format'.

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?

Names a specific verb and resource ('Export team entries') plus the supported output formats and filter dimensions, which is more than a restatement of the title. It does not, however, distinguish itself from the sibling 'export_entries' (non-team variant) or 'team_export_markdown', even though the format='markdown' option visibly overlaps the latter.

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 'with optional date range, type, and tag filters' hints at capability but gives no when-to-use guidance, no when-not-to-use, and no pointer to the sibling export tools. An agent must infer the team-scoping rationale from the tool name alone.

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

team_export_markdownTeam Export to MarkdownB
Idempotent
Inspect

Export team entries as frontmattered Markdown files

NameRequiredDescriptionDefault
tagsNoFilter by tags
limitNoMax entries to export (default: 100, max: 500)
end_dateNoEnd date filter (YYYY-MM-DD)
output_dirNoTarget directory for .md files
start_dateNoStart date filter (YYYY-MM-DD)
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
filesNo
detailsNoAdditional error context
skippedNo
successNo
categoryNoError category (validation, query, connection, internal)
output_dirNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
exported_countNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare this is a non-destructive, idempotent, open-world write, so the safety profile is covered. The description adds the useful detail that output is frontmattered Markdown files, but says nothing about overwrite behavior, directory creation, or what happens when output_dir is omitted โ€” the main behavioral risks for a file-writing 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 zero filler; format and target resource come first. It is efficient but so terse that the brevity costs coverage rather than being genuinely concise.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but this is an 8-parameter file-writing tool with no required params and the description never addresses default destination, file naming, or whether an existing export is replaced. For a tool that produces side effects on disk, that 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 75%, so most parameters (tags, limit, dates, output_dir, workspace_id) are already documented in the schema. The description adds no parameter detail at all, and the undocumented params (use_test_db, project_number) receive no compensating explanation, so it neither helps nor harms beyond 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 (Export) and resource (team entries) plus the output medium (frontmattered Markdown files), which is enough to separate it from the team-agnostic export_markdown sibling. It does not, however, distinguish itself from team_export_entries, which plausibly covers the same ground, leaving the agent to guess which export 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 over export_markdown or team_export_entries, no preconditions (does output_dir need to exist?), and no mention that team_import_markdown is the inverse operation. The agent must infer the selection rule 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.

team_get_collaboration_matrixTeam Collaboration MatrixB
Read-onlyIdempotent
Inspect

Analyze cross-author collaboration: activity heatmap per period, cross-linking patterns between authors, and impact factor (inbound links). Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
limitNo
periodNomonth
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
impactFactorNo
totalAuthorsNo
totalEntriesNo
authorActivityNo
crossAuthorLinksNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds one genuinely useful non-annotation fact โ€” the TEAM_DB_PATH dependency โ€” but says nothing about cost, result size, or what the matrix contains beyond three noun phrases.

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 lists the three analytical outputs, followed by a short prerequisite clause. Nothing is wasted, though the telegraphic list style leaves the reader inferring relationships between the outputs.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover safety. Still, for a four-parameter analytics tool with 25% schema coverage, the description leaves the agent guessing about period granularity, limit semantics, and when this analysis is preferable to sibling insight tools.

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

Parameters2/5

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

Schema description coverage is only 25% (only workspace_id is documented), so the description needs to carry the load and does not. It never explains what 'limit' limits (authors? pairs?), what values 'period' accepts beyond the default 'month', or what 'use_test_db' toggles.

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 ('Analyze cross-author collaboration') and enumerates three concrete outputs: per-period activity heatmap, cross-linking patterns, and impact factor via inbound links. This is clearly distinct from generic siblings like team_get_statistics, though it never explicitly names or contrasts those siblings.

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 exclusions, and no routing to alternatives such as team_get_statistics or team_get_cross_project_insights. The only conditional statement is an environmental prerequisite ('Requires TEAM_DB_PATH'), which is a setup constraint rather than usage guidance.

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

team_get_cross_project_insightsTeam Cross-Project InsightsB
Read-onlyIdempotent
Inspect

Analyze patterns across all GitHub Projects tracked in team entries. Use for architecture planning. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
limitNoMax projects to return
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)
min_entriesNoMinimum entries to include project
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
project_countNo
total_entriesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation
inactive_projectsNo
time_distributionNo
inactiveThresholdDaysNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description doesn't need to re-state those. It does add one piece of genuine behavioral context โ€” 'Requires TEAM_DB_PATH' โ€” which is an environment prerequisite not visible anywhere else. However, it says nothing about how the analysis is computed, what 'patterns' means, or any cost/latency implied by scanning all projects.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core purpose, and no filler. It is efficient, though the terseness tips into under-specification rather than pure concision for a tool this analytical.

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

Completeness3/5

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

An output schema exists, so return values needn't be described, and annotations cover safety. What remains thin is the core promise: 'analyze patterns' is left undefined for a complex cross-project aggregation tool, and the filtering parameters that materially change results go unmentioned.

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 83%, so the six parameters are largely self-documenting and baseline 3 applies. The description adds nothing about limit, min_entries, the date window, or use_test_db, and in particular never explains how the date range constrains the cross-project analysis.

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 scope: 'Analyze patterns across all GitHub Projects tracked in team entries.' That is far more concrete than a tautology, and 'team entries' hints it operates on the team DB rather than the personal one. It never names the non-team sibling get_cross_project_insights, so the agent must infer the distinction from the 'team' prefix alone.

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?

'Use for architecture planning' gives a positive use case, which is real but one-dimensional. There is no when-not guidance, no mention of the personal get_cross_project_insights alternative, and no statement of what the agent should use if it wants single-project rather than cross-project data.

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

team_get_entry_by_idGet Team Entry by IDA
Read-onlyIdempotent
Inspect

Get a specific team entry by ID with full details including relationships and importance score. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
entry_idNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
include_relationshipsNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
importanceNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
relationshipsNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description usefully adds the TEAM_DB_PATH environment requirement and summarizes what is returned, but says nothing about behavior when the entry is absent or how relationships are fetched.

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?

Two tight sentences with the core action front-loaded and the precondition appended. No filler, though the second sentence could carry more diagnostic value for the same length.

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?

An output schema exists, so return values need no prose, and the environment prerequisite is stated. Given four of five parameters are undocumented in the schema, the description could say more about them, but for a simple by-ID read it is close to adequate.

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

Parameters3/5

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

Schema coverage is only 20% โ€” entry_id, use_test_db, project_number, and include_relationships are undocumented. The description partially compensates by tying 'by ID' to entry_id and 'including relationships' to include_relationships (default true), but use_test_db, project_number, and the number|string duality of entry_id remain unexplained.

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 specific team entry by ID') and names the payload ('full details including relationships and importance score'). The 'team_' prefix hints at team-DB scope, but the description never explicitly contrasts with the sibling get_entry_by_id, leaving the agent to infer the difference.

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 via the 'Requires TEAM_DB_PATH' precondition and the team-prefixed name. There is no explicit statement of when to use this instead of get_entry_by_id or team_search, and no guidance on lookup failure behavior.

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

team_get_memberGet Team MemberB
Read-onlyIdempotent
Inspect

Get details about a specific team member. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
authorYesThe author ID/username to fetch
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
memberNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description contributes the TEAM_DB_PATH environment requirement, which is real context not present in the structured fields, but says nothing about error behavior, alias resolution, or scoping effects of workspace_id.

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?

Two short sentences, front-loaded with the purpose, with no filler. The prerequisite sentence is terse but earns its place; it could be slightly more explicit about how TEAM_DB_PATH is supplied.

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

Completeness3/5

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

An output schema exists and annotations are rich, so the description needn't explain returns or safety. However, for a lookup tool that can fail on unknown or aliased authors, the description leaves the resolution/not-found behavior entirely unstated, which is a meaningful gap even at this complexity level.

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 both parameters are documented in the schema, including the careful warning about workspace_id format. The description adds no syntax, format, or matching semantics (e.g. exact vs alias matching on author) beyond the schema, so baseline 3 applies.

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

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 details about a specific team member), which is clearly a single-record lookup. It doesn't explicitly distinguish itself from near-siblings like team_resolve_author or team_list_members, so an agent must infer the boundary from the name alone.

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 only guidance is the prerequisite 'Requires TEAM_DB_PATH.' There is no statement of when to use this versus team_list_members, team_resolve_author, or team_get_entry_by_id, and no mention of what happens if the author is unknown or ambiguous.

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

team_get_recentGet Recent Team EntriesC
Read-onlyIdempotent
Inspect

Get recent entries from the team database. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
limitNo
cursorNoCursor for pagination
sort_byNoSort results by timestamp (default) or importance scoretimestamp
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
include_archivedNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful configuration context by noting that TEAM_DB_PATH is required, but it does not explain pagination behavior, default filtering, or how archived entries are handled.

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 short, front-loaded, and free of filler. Its brevity is efficient, though it leaves significant behavioral gaps unaddressed.

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 seven parameters, 43% schema coverage, a rich annotation set, and an output schema, the description is substantially incomplete. It omits filtering, sorting, pagination, workspace isolation, and test database behavior that an agent would need to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is only 43%, and the description contributes no parameter meaning at all. Several parameters such as limit, include_archived, project_number, and use_test_db remain unexplained by either the description or the schema, so it does not compensate for the coverage gap.

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

Purpose4/5

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

It states a clear verb and resource: 'Get recent entries from the team database.' However, it does not distinguish this tool from the sibling 'get_recent_entries' or explain what 'recent' means, so an agent cannot fully tell the two apart without opening schemas.

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 instead of 'team_search', 'team_search_by_date_range', or 'get_recent_entries'. The only procedural note is an environment prerequisite, not a selection rule.

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

team_get_statisticsGet Team StatisticsB
Read-onlyIdempotent
Inspect

Get statistics for the team database including entry counts, types, top tags, and contributor breakdown. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
group_byNoweek
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
authorsNo
detailsNoAdditional error context
successNo
topTagsNo
categoryNoError category (validation, query, connection, internal)
entryTypesNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
totalEntriesNo
periodEntriesNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds one genuinely new behavioral fact โ€” the TEAM_DB_PATH requirement โ€” but says nothing about cost, aggregation window behavior, or empty-DB handling.

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?

Two short sentences with no filler, and the resource plus returned metrics are front-loaded ahead of the prerequisite clause. Slightly terse to the point of omitting needed parameter context, but no sentence 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?

The output schema and rich annotations relieve the description of explaining returns and safety, so the remaining burden is small. Still, with two of three parameters undocumented and no guidance on the team-vs-global statistics split, an agent has open questions before calling it.

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

Parameters2/5

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

Schema description coverage is only 33%: workspace_id is documented, but group_by (default 'week') and use_test_db have no descriptions anywhere, and the description does not compensate at all. An agent cannot tell what values group_by accepts or when to set use_test_db, so the description fails to fill the gap.

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

Purpose4/5

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

States a specific verb and resource ('Get statistics for the team database') and enumerates the metrics returned (entry counts, types, top tags, contributor breakdown). This clearly separates it from siblings like team_get_vector_index_stats or team_get_collaboration_matrix, though it never explicitly names the non-team get_statistics as the alternative.

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 โ€” an agent can infer this is the read-only inspection tool for the team DB, and the prerequisite 'Requires TEAM_DB_PATH' gives a concrete precondition. There is no explicit statement of when to prefer this over get_statistics or team_get_vector_index_stats.

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

team_get_vector_index_statsTeam Vector Index StatsB
Read-onlyIdempotent
Inspect

Get statistics about the team vector search index (item count, model, dimensions). Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
availableYes
itemCountNo
modelNameNo
dimensionsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, covering the safety profile. The description adds a genuinely useful operational requirement, 'Requires TEAM_DB_PATH', which is not in any structured field. It does not discuss pagination or failure modes, but against rich annotations this is acceptable.

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 front-loaded sentence stating what is returned, followed by a prerequisite. No filler, though the parenthetical return-value list is partly redundant with the output schema.

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 output schema covers return values and annotations cover safety, so the core is complete. The omission of use_test_db leaves a real gap for a tool that offers a test-DB switch.

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

Parameters2/5

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

Schema coverage is 0% and the single parameter use_test_db has no description in the schema. The description does not mention it at all, so the agent gets no hint about whether it can point the call at a test database.

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 (get statistics) and resource (team vector search index) and enumerates the payload (item count, model, dimensions). It implies differentiation from the non-team get_vector_index_stats via the 'team' scope, but never states it, so the sibling distinction is only implied.

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

Usage Guidelines2/5

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

No guidance on when to use this versus get_vector_index_stats, team_semantic_search, or team_rebuild_vector_index. The reader 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.

team_import_externalTeam Import from External ToolsCInspect

Import knowledge management exports into the team journal

NameRequiredDescriptionDefault
limitNoMax files to process (default: 100, max: 500)
dry_runNoParse and validate without writing to database
source_dirNoDirectory containing files to import
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
source_formatNoSource format (notion, obsidian, logseq)
project_numberNo
default_entry_typeNoFallback entry type if heuristics cannot determine one

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
errorsNo
createdNo
detailsNoAdditional error context
dry_runNo
skippedNo
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false, but the description adds nothing on top: it doesn't say that entries are written to the database, that re-running a non-idempotent import can duplicate content, or that dry_run avoids writes. For a write/import tool, that is a meaningful 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 ten-word sentence with no filler and the key scope ('team journal') front-loaded. It is efficiently written, though the brevity reflects under-specification rather than disciplined selection.

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

Completeness2/5

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

An output schema exists so return values needn't be explained, but an 8-parameter, open-world, non-idempotent import tool with a dry_run mode and workspace isolation needs more than one sentence. Nothing explains the import lifecycle, file discovery from source_dir, or the effect of limit.

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

Parameters2/5

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

Schema coverage is 75%, just under the high-coverage baseline, and two parameters (use_test_db, project_number) have no description anywhere. The description contributes zero parameter meaning, so it fails to compensate for the undocumented parameters on a tool where use_test_db in particular could cause data to land in the wrong database.

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: import external knowledge-management exports into the team journal. The word 'team' implicitly separates it from the personal import_external / import_markdown siblings, but the description never names those alternatives or the supported formats (notion, obsidian, logseq) that would fully disambiguate.

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 mention of the dry_run validation workflow, no prerequisites (source_dir must exist, source_format must be one of three values), and no routing to import_markdown or import_external. The agent must infer all of this from the schema.

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

team_import_markdownTeam Import from MarkdownCInspect

Import frontmattered Markdown files into the team journal

NameRequiredDescriptionDefault
limitNoMax files to process (default: 100, max: 500)
dry_runNoParse and validate without writing to database
source_dirNoDirectory containing .md files to import
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
errorsNo
createdNo
detailsNoAdditional error context
dry_runNo
skippedNo
successNo
updatedNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare this a non-read-only, non-idempotent, non-destructive, open-world write. The description adds only the source format ('frontmattered Markdown') and says nothing about what happens to existing journal entries, duplicate handling, whether re-runs create duplicates (relevant since idempotentHint is false), or filesystem access scope.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though its brevity is under-specification rather than disciplined trimming.

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 write tool with six parameters, an output schema, and several near-identical siblings needs more than one line: the dry_run workflow, workspace isolation requirement, and overlap with team_import_external are all unaddressed.

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

Parameters2/5

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

At 67% schema coverage, the schema documents limit, dry_run, source_dir, and workspace_id, but use_test_db and project_number have no description anywhere. The description supplies no parameter meaning at all, so it fails to compensate for the gap and adds nothing to the documented ones.

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?

Names a specific verb and resource ('Import ... Markdown files into the team journal') and adds a useful qualifier about frontmattered input. It does not, however, distinguish this from the closely-named siblings team_import_external or import_markdown, so an agent cannot route confidently between them from the description alone.

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 team_import_external, import_markdown, or import_external, all of which appear to overlap. It also never suggests using the available dry_run flag to preview, which is the one usage hint this tool most needs.

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

team_list_author_aliasesList Author AliasesA
Read-onlyIdempotent
Inspect

List all registered author aliases. Requires admin role.

NameRequiredDescriptionDefault
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
canonical_authorNoOptional canonical author to filter aliases by

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
aliasesNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint false, and openWorldHint false, so the safety profile is covered. The description adds a genuine behavioral fact on top of that: the operation is gated behind an admin role, which the agent could not learn from structured fields. It omits result volume/pagination, but an output schema exists to fill that in.

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

Conciseness5/5

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

Two short sentences, purpose first then the gating constraint, with no filler. Nothing in it is redundant with the title or 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?

This is a low-complexity read tool with rich annotations, a fully documented two-parameter schema, and an output schema, so little prose is required. Purpose and the admin prerequisite are stated; only guidance on filtering (workspace scoping or canonical_author) versus listing everything is missing.

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 both parameters (workspace_id, canonical_author) carry their own descriptions, so the baseline is 3. The description adds nothing about either filter and arguably works against them by saying "List all", which implies no filtering is possible even though optional filters exist.

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 ("List all registered author aliases"), which is far clearer than the bare tool name alone. It doesn't explicitly distinguish itself from the closely related siblings team_add_author_alias, team_remove_author_alias, team_resolve_author, or team_consolidate_authors, so an agent must infer the difference from the names.

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?

"Requires admin role" supplies a meaningful precondition, but the description never says when to choose this tool over related siblings such as team_resolve_author or the add/remove alias tools. Usage is implied by the verb rather than spelled out.

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

team_list_backupsList Team BackupsB
Read-onlyIdempotent
Inspect

List all available backup files for the team database. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
hintNo
errorNoHuman-readable error message
totalNo
backupsNo
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
backupsDirectoryNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the TEAM_DB_PATH prerequisite, which is useful, but it does not add much else about behavior or output.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed by the only stated prerequisite. No wasted language.

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?

With annotations covering safety and an output schema covering return structure, the description is close to complete for a simple list tool. However, it omits any explanation of the sole optional parameter, leaving an avoidable gap.

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

Parameters2/5

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

The only schema parameter, 'use_test_db', is undocumented in both the schema (0% coverage) and the description. The description mentions TEAM_DB_PATH, but that is not a schema parameter, so it does not compensate for the missing semantics of use_test_db.

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: list available backup files for the team database. The 'team database' scope helps distinguish it from the non-team list_backups sibling, though it does not explicitly name that alternative.

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 states a prerequisite ('Requires TEAM_DB_PATH') which gives some usage context, but it does not explain when to use this versus list_backups, restore_backup, or cleanup_backups. Usage is implied by the team-scoped name rather than explicitly guided.

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

team_list_deleted_entriesList Deleted Team EntriesB
Read-onlyIdempotent
Inspect

List recently soft-deleted team entries that can be restored. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
limitNo
offsetNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's burden is lower; it still adds two non-obvious facts: results are soft-deleted records (not a full listing) and the operation requires TEAM_DB_PATH. It does not describe ordering, retention window, or what "recently" means, so it is not a 5.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and the qualifying condition, with zero filler. The brevity is a virtue here, though it leaves the prerequisites sitting after the core statement rather than being woven into operating guidance.

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?

Annotations and an output schema carry the safety profile and return shape, so the description needn't explain results. However, for a five-parameter paginated/filterable list tool with 20% schema coverage, the description leaves an agent guessing about paging and DB/project scoping.

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

Parameters2/5

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

Five parameters with only 20% schema description coverage, and the description mentions none of them. limit/offset pagination defaults, use_test_db DB switching, and project_number scoping are undocumented in both places; only workspace_id carries a schema description.

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 ("List ... team entries") plus the distinguishing qualifier "recently soft-deleted ... that can be restored," which separates it from get_recent_entries or search_entries. It does not explicitly contrast with the sibling team_restore_entry or the non-team list_deleted_entries, leaving the pairing implicit.

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 reach for this tool versus team_search, get_recent_entries, or the local list_deleted_entries. The phrase "that can be restored" hints at a restore workflow but never names team_restore_entry as the follow-up or states that only soft-deleted records appear here.

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

team_list_membersList Team MembersB
Read-onlyIdempotent
Inspect

List all registered team members and their roles. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
membersNo
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the TEAM_DB_PATH prerequisite, which is genuine context. It does not say what happens when that env var is missing (error vs empty result) or whether listing spans all workspaces.

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?

Two short sentences, zero waste, with purpose front-loaded before the prerequisite. Nothing is padded, though the brevity is also the source of the gaps noted above.

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

Completeness3/5

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

An output schema and read-only annotations exist, so return values and safety need not be explained. Still, for a two-parameter team tool with an undocumented parameter and an unexplained TEAM_DB_PATH failure mode, the description leaves the agent with avoidable ambiguity.

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

Parameters2/5

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

With only 50% schema coverage, the description must compensate, and it does not: neither workspace_id nor use_test_db is mentioned. The schema documents workspace_id well (including the negative example about numeric project IDs), but use_test_db remains entirely unexplained in both schema and description.

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 ("List all registered team members") plus the returned attribute (roles), so the agent knows exactly what it fetches. It does not explicitly distinguish itself from team_get_member or team_list_author_aliases, which is the only thing separating it from a 5.

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

Usage Guidelines2/5

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

The only guidance is the environment prerequisite "Requires TEAM_DB_PATH"; there is no statement of when to use this versus team_get_member (single member) or team_list_author_aliases. An agent must infer the bulk-listing use case 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.

team_list_tagsList Team TagsA
Read-onlyIdempotent
Inspect

List all tags used in the team database with usage counts. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
tagsNo
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior4/5

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

The annotations already establish that this is a safe, read-only, idempotent, closed-world operation. The description adds useful context by stating that results include usage counts and that TEAM_DB_PATH is required, though it does not discuss pagination or return ordering.

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

Conciseness5/5

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

The description is two sentences with no wasted words, and the core purpose and output detail are front-loaded. The environment prerequisite is placed after the primary function, which is appropriate.

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

Completeness4/5

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

Given that this is a simple read-only list tool with rich annotations and an output schema, the description covers the essential purpose, output content, and environment requirement. The only notable gap is that the optional `use_test_db` parameter remains unexplained.

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

Parameters2/5

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

The schema has one parameter, `use_test_db`, with 0% description coverage, and the description does not mention it at all. The mention of TEAM_DB_PATH is environment context, not an explanation of the input parameter, so the description fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a specific verb and resource: "List all tags used in the team database with usage counts." The "team database" scoping helps distinguish it from the generic `list_tags` sibling, though it does not explicitly name that alternative.

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

Usage Guidelines3/5

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

The description includes a prerequisite ("Requires TEAM_DB_PATH"), which gives useful usage context. However, it does not explicitly say when to use this tool instead of `list_tags` or `team_merge_tags`, leaving the agent to infer the team-scoped use case.

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

team_merge_tagsMerge Team TagsAInspect

Merge a source tag into a target tag in the team database. All entries with the source tag will be re-tagged with the target tag. Only updates non-deleted entries. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
source_tagNo
target_tagNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
sourceDeletedNo
entriesUpdatedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

The description adds crucial operational constraints not in the schema, specifically that it 'Only updates non-deleted entries' and requires 'TEAM_DB_PATH.' This provides important behavioral boundaries.

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 highly condensed and front-loads the core function into the first sentence. There is no wasted language.

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?

It addresses the primary operational dependencies (DB path requirement) and scope limits (only updates non-deleted entries), making it highly complete despite the low schema coverage.

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 only 25% schema description coverage, the description must carry the load. It correctly frames the action as a database-wide re-tagging operation, which helps the agent understand the impact of the primary 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 clearly states the action (merge source into target tag) and the specific resource (team database). It differentiates this tool from a general tag merge by specifying the team context.

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

Usage Guidelines3/5

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

It clearly defines the action but lacks guidance on when to use it versus alternative methods like updating individual entries or searching. The context is sufficient but not prescriptive.

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

team_rebuild_vector_indexRebuild Team Vector IndexBInspect

Rebuild the team semantic search vector index from all existing team entries. Requires TEAM_DB_PATH. [REQUIRES ADMIN SCOPE]

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
partialNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
failedEntriesNo
entriesIndexedNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare this is a mutating, non-idempotent, non-destructive operation, so the safety bar is partly covered. The description adds real context beyond annotations: the required TEAM_DB_PATH environment variable and the admin scope requirement. It does not say whether the existing team index is replaced or merged, or whether the operation is expensive/blocking for large entry sets.

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

Conciseness5/5

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

Two sentences, no filler; the action and its data source come first and the invocation constraints follow. Nothing repeats the title or wastes tokens.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for an index rebuild the agent still lacks whether the old index is discarded, expected cost on large teams, and how it relates to the other vector-index siblings โ€” gaps that matter more than usual for a mutating, non-idempotent operation.

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

Parameters2/5

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

The single parameter use_test_db has 0% schema description coverage and the description never mentions it. With one undocumented parameter, the agent must guess whether the rebuild targets the test database, which is a consequential ambiguity for a mutation.

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 ("Rebuild") plus specific resource ("team semantic search vector index") and the source of truth ("all existing team entries"). This implicitly separates it from the local rebuild_vector_index and from the incremental team_add_to_vector_index, though neither sibling is 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?

Prerequisites are stated (TEAM_DB_PATH, admin scope), which is genuinely useful for invocation gating. But it never says when to rebuild versus using team_add_to_vector_index for incremental updates, nor what conditions make a full rebuild the wrong choice.

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

team_remove_author_aliasRemove Author AliasA
Destructive
Inspect

Remove an author alias mapping. Requires admin role.

NameRequiredDescriptionDefault
aliasYesThe alias mapping to remove
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior3/5

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

The description adds the necessary context of 'Requires admin role,' which is a functional trait not covered by the hints. While it confirms the destructive nature via the hints, the description adds practical operational limitations.

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?

It is highly concise and perfectly structured, consisting of two minimal sentences that front-load the essential purpose and a critical usage prerequisite.

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

Completeness4/5

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

Given that the input schema is complete and annotations provide the safety context, the description successfully covers the essential operational constraints an agent needs to decide whether to invoke the tool correctly.

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 input schema is 100% covered, meaning the schema itself provides rich descriptions for the parameters. The description primarily restates the action rather than clarifying parameter semantics.

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 ('Remove an author alias mapping') and the target resource. It is specific and distinct from related operations like 'add author alias.'

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

Usage Guidelines3/5

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

It provides one critical usage constraint ('Requires admin role'), which tells the agent *when* it is allowed to use the tool. However, it offers no guidance on when to use it versus other alias tools.

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

team_remove_memberRemove Team MemberB
Destructive
Inspect

Remove a member from the team. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
authorYesThe author ID/username to remove
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered structurally. The description adds a genuinely useful runtime prerequisite (TEAM_DB_PATH) but omits the important side-effect question for a destructive membership operation โ€” whether the removed author's entries, aliases, or links are affected.

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

Conciseness5/5

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

Two short sentences with no filler, and the action statement is front-loaded ahead of the prerequisite. Nothing could be cut 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?

An output schema exists and annotations cover the safety profile, so return values and reversibility needn't be spelled out. However, for a destructive removal the description gives no indication of what is destroyed beyond membership itself, which is the key missing context for an agent deciding whether to call it.

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 'author' and 'workspace_id' are already documented in the schema, including the workspace isolation caveat. The description adds no syntax, format, or validation 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 and resource ('Remove a member from the team'), which cleanly distinguishes it from the adjacent team_add_member and team_update_member_role. It doesn't explicitly name those siblings, so an agent must infer the boundary, but the verb makes it 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?

Only 'Requires TEAM_DB_PATH' is given, which is a prerequisite rather than usage guidance. There is no statement of when to choose this over team_update_member_role or team_consolidate_authors, nor what happens when the author isn't currently a member.

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

team_resolve_authorResolve AuthorA
Read-onlyIdempotent
Inspect

Resolve a raw author name to its canonical identity using registered aliases. Requires admin role.

NameRequiredDescriptionDefault
authorYesThe raw author name to resolve
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
is_aliasedNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
original_authorNo
canonical_authorNo
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world; the description adds the admin-role auth requirement, which annotations do not cover and which materially affects whether an agent can call it. It also notes the resolution mechanism ('registered aliases'), but does not say what happens on a miss.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core action stated first and the prerequisite trailing. Nothing to trim and nothing buried.

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?

An output schema exists, so return values need not be explained, and the read-only safety profile plus admin gating are covered. The one real gap is unresolvable input: the description does not say whether an unknown author errors or falls back to the raw name.

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 params are documented in the schema. The description adds no detail on the author string format or on when workspace_id should be supplied for isolation, 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?

Specific verb and resource: 'Resolve a raw author name to its canonical identity using registered aliases.' Clearly distinguishes from alias-management siblings like team_list_author_aliases or team_consolidate_authors by being the single-name lookup, though it never names those alternatives 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?

'Requires admin role' gives a useful prerequisite, but there is no explicit statement of when to reach for this versus team_list_author_aliases, team_add_author_alias, or team_consolidate_authors. Usage is implied by the verb rather than guided.

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

team_restore_entryRestore Team EntryBInspect

Restore a soft-deleted team entry. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
entry_idNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
entryIdNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the mutation safety profile is covered. The description adds real context by identifying this as a soft-delete reversal (data still exists) and naming the TEAM_DB_PATH dependency, but it says nothing about what happens if the entry is not deleted or is already restored, which matters given idempotentHint=false.

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

Conciseness5/5

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

Two sentences, zero filler, with the action stated first and the prerequisite second. Nothing is redundant and nothing is buried.

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

Completeness2/5

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

An output schema exists so return values need not be described, but with 0 required parameters across three loosely-typed identifiers (entry_id as number|string, project_number as number|string) the agent has no way to know which combination restores the intended entry. The description should have resolved that ambiguity or named the sibling that lists deleted entries.

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

Parameters2/5

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

Schema description coverage is only 33% โ€” only workspace_id is documented, while entry_id and project_number have no description anywhere. The description contributes nothing about parameters, so it fails to compensate for the coverage gap on a tool where zero parameters are marked required and the agent cannot tell which identifier is needed.

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 ("Restore a soft-deleted team entry") and the "soft-deleted" qualifier clarifies it is an undelete, not a general write. It does not differentiate itself from the sibling restore_entry or point at team_list_deleted_entries as the way to find a candidate entry, so the team vs. non-team split is left to the name prefix.

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?

"Requires TEAM_DB_PATH" is a genuine usage prerequisite that tells the agent a configuration must be present. Beyond that there is no when-to-use guidance, no note that the entry must currently be soft-deleted, and no routing to restore_entry (non-team) or team_list_deleted_entries for discovery.

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

team_search_by_date_rangeSearch Team Entries by Date RangeA
Read-onlyIdempotent
Inspect

Search team entries within a date range with optional filters for entry type and tags. Requires TEAM_DB_PATH. ๐Ÿ›‘ WARNING: Team DB is a shared multi-tenant domain. You MUST specify project_number to isolate results to the target project.

NameRequiredDescriptionDefault
tagsNo
limitNo
cursorNoCursor for pagination
sort_byNoSort results by timestamp (default) or importance scoretimestamp
end_dateNoEnd date (YYYY-MM-DD)
entry_typeNo
start_dateNoStart date (YYYY-MM-DD)
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_numberNo
include_archivedNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
countNo
errorNoHuman-readable error message
detailsNoAdditional error context
entriesNo
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
next_cursorNoCursor for the next page of results
recoverableNoWhether the error is recoverable
suggestionsNoFuzzy matches when fuzzy_match=true and no exact results were found
correctedQueryNoThe corrected query when auto_correct=true and a confident match was found
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description correctly spends its words elsewhere: the TEAM_DB_PATH requirement and, critically, that the underlying DB is a shared multi-tenant domain where omitting project_number leaks other projects' data. That is exactly the kind of non-obvious behavioral risk annotations cannot convey. Minor gap: no mention of pagination or archived-entry behavior.

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

Conciseness5/5

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

Two tight sentences; the safety warning is set apart with a stop sign and comes after the core purpose. No filler.

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

Completeness3/5

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

Covers purpose, environment prerequisite and the multi-tenancy hazard, and an output schema exists so return values need no explanation. With 10 parameters and 50% coverage, though, the description says nothing about pagination, sorting, or unpublished/archived inclusion, and gives no sibling routing โ€” leaving noticeable holes for a tool this broad.

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 50%, leaving tags, limit, entry_type, project_number and include_archived undocumented in the schema. The description partially compensates by naming entry_type and tags as filters and by explaining what project_number is for, but it adds nothing about limit, cursor, sort_by or include_archived.

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 team entries') plus the retrieval axis ('within a date range') and optional filters. The 'team' qualifier implicitly separates it from the non-team search_by_date_range sibling, but it never names team_search, so differentiation is only partial.

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?

Gives a hard operational prerequisite โ€” project_number MUST be supplied to isolate results in the shared multi-tenant domain โ€” which is real usage guidance beyond the schema. However, it never says when to choose this over team_search or team_semantic_search, so an agent has no routing rule for sibling tools with overlapping purpose.

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

team_update_entryUpdate Team EntryBInspect

Update a team entry. When updating content, preserve the existing markdown structure (## section headers). Do NOT restructure or add new top-level sections unless explicitly requested. Pass expected_version for optimistic locking. Pass null to clear a metadata field. Supports content, type, tags, and 11 metadata fields. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
tagsNo
pr_urlNo
contentNoUpdated markdown content. Preserve the existing ## section header structure. For session summaries, keep the ## Accomplished / ## Unfinished / Blocked / ## Context for Next Session / ## Commits structure intact. Do NOT restructure or add new top-level sections unless explicitly requested.
entry_idNo
issue_urlNo
pr_numberNo
pr_statusNo
entry_typeNo
session_idNoAgent session ID for thread isolation (usually conversation ID).
is_archivedNo
trust_scoreNoHeuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified).
auto_contextNo
impact_scoreNoHeuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs).
issue_numberNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_ownerNo
workflow_nameNo
project_numberNo
workflow_run_idNo
workflow_statusNo
expected_versionNo
significance_typeNo
validation_statusNoCurrent validation status of the entry (passed, none, failed).

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare this is non-read-only and non-idempotent; the description adds concrete behavior including optimistic locking via expected_version, null clearing, environment dependency, and content-structure preservation. It does not explain version-mismatch errors or overwrite consequences, but it adds meaningful context beyond the annotations.

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 short, front-loaded, and mostly focused on constraints that affect invocation. Some markdown-structure guidance duplicates the content schema description, but there is little waste.

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 23-parameter mutation with no required parameters, the description leaves major gaps: entry_id targeting and most field semantics are not explained, and error behavior is absent. Annotations and the output schema reduce the burden, but the description is still not complete enough for fully confident invocation.

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

Parameters2/5

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

Schema description coverage is only 26% across 23 parameters, and the description exposes only content, type, tags, expected_version, and a vague reference to '11 metadata fields' without explaining entry_id or most field meanings. The low-coverage schema is not adequately compensated.

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 the verb and resource (Update a team entry) and lists what can be changed, so the core action is clear. It does not explicitly distinguish team_update_entry from the sibling update_entry or batch_update_entries, 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 Guidelines3/5

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

It gives task-specific constraints: preserve markdown structure, do not add top-level sections unless requested, pass expected_version for optimistic locking, pass null to clear metadata, and TEAM_DB_PATH is required. However, it does not state when to choose this over update_entry or batch_update_entries, nor when not to use it.

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

team_update_member_roleUpdate Team Member RoleAInspect

Update the role of an existing team member. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
roleYesThe new role to assign
authorYesThe author ID/username to update
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
memberNo
detailsNoAdditional error context
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation, so the safety profile is covered structurally. The description adds real context by naming the TEAM_DB_PATH requirement, but says nothing about authorization needed to change roles, whether the change is reversible, or what happens if the author ID is unknown or ambiguous.

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?

Two short sentences, nothing redundant, with the action stated before the prerequisite. It is efficient, though the second sentence is a bare config note rather than a structured usage statement.

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

Completeness5/5

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

An output schema exists so return values need not be explained, and annotations cover the mutation/safety profile. Given a three-parameter schema with full coverage, the description supplies the one non-obvious operational fact (TEAM_DB_PATH), which is enough for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% with an enum on role and detailed notes on workspace_id, so the schema carries parameter meaning. The description's only added signal is that 'author' must reference an existing member, which is marginal beyond what the schema states.

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 ('Update the role') plus a scope qualifier ('an existing team member'), which separates it from team_add_member and team_remove_member. It does not explicitly name a sibling or state what it is not, 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 Guidelines3/5

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

'Existing team member' implies a precondition (the author must already be on the team) and TEAM_DB_PATH names a required environment prerequisite. However, there is no explicit routing guidance (e.g., use team_add_member to create, team_remove_member to remove) and no mention of what to do when the author is unknown.

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

team_visualize_relationshipsVisualize Team RelationshipsA
Read-onlyIdempotent
Inspect

Generate a Mermaid diagram showing relationships between team entries. Filter by entry ID, tag, or traverse to a specified depth. Requires TEAM_DB_PATH.

NameRequiredDescriptionDefault
tagNo
depthNo
entry_idNo
use_test_dbNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
mermaidNo
successNo
categoryNoError category (validation, query, connection, internal)
edgeCountNo
nodeCountNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a real prerequisite not in the annotations โ€” the TEAM_DB_PATH environment requirement โ€” plus the output medium (Mermaid source). It stops short of clarifying render-vs-text output or whether large depths are expensive.

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?

Three short sentences: what it produces first, how to scope it second, prerequisites last. No filler, no restating the title, everything front-loaded.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a five-parameter graph tool, the description omits whether filters combine or are alternatives, what an unfiltered call returns, and any guidance on use_test_db โ€” gaps an agent must guess at.

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 20% (only workspace_id is documented), so the description must compensate. It does add meaning for three of five parameters by naming the tag and entry_id filters and framing depth as traversal depth, but use_test_db is never explained and the default depth of 2 and filter interaction rules are left to 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?

States a specific verb (Generate), a concrete artifact (Mermaid diagram), and the resource scope (relationships between team entries). No sibling produces a diagram, so an agent can distinguish it from team_search, team_get_statistics, or team_export_markdown without opening the schema.

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 second sentence implies the three ways to drive the tool (entry ID, tag, or depth traversal), which is useful usage context. However, it never says when to prefer this over, say, team_search or team_get_collaboration_matrix, whether the filters are combinable or mutually exclusive, or what happens when no filter is supplied.

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

test_error_handlingTest Error HandlingB
Read-onlyIdempotent
Inspect

Throws a specific type of error to verify the server formats and returns them correctly over MCP.

NameRequiredDescriptionDefault
messageNoTest error message
error_typeNo
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare `readOnlyHint: true`, `idempotentHint: true`, and `destructiveHint: false`, so the description does not need to restate safety. It adds that the tool intentionally throws an error for verification, but does not disclose whether the call always fails, what side effects `use_test_db` may have, or how the error is surfaced to the caller.

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 redundant text. It immediately states the tool's purpose and verification context.

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

Completeness3/5

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

An output schema exists, so return formatting need not be explained, and annotations cover safety. However, with 0% schema description coverage across 3 params, the description should provide more guidance on parameter use, especially the `error_type` enum and `use_test_db` flag.

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

Parameters2/5

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

Schema description coverage is 0% for all 3 parameters. The description mentions a 'specific type of error' but does not explain the `error_type` enum values, the `message` parameter's role, or what `use_test_db` changes.

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

Purpose4/5

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

The description states a specific action (throwing an error) and purpose (verifying server error formatting over MCP), so an agent can understand what the tool does. However, it does not distinguish this tool from the sibling `test_simple`, which likely serves a related testing role.

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 implied as a testing/diagnostic tool, but the description gives no explicit when-to-use, when-not-to-use, or alternative guidance. It does not warn against using it in production or explain how to choose among error types.

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

test_simpleTest Simple EchoB
Read-onlyIdempotent
Inspect

A simple echo tool for testing connection and basic parameter parsing.

NameRequiredDescriptionDefault
messageNoHello
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
timestampNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds only that the input is echoed back, and stays silent on what use_test_db does or whether any side effects touch a database.

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 wasted clauses; the only minor filler is the adjective 'simple'. Nothing is buried.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the tool is low-complexity. However, with two undocumented parameters and no stated behavior of the boolean flag, the definition is not quite complete enough to invoke confidently.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description carries the full burden and fails: it never explains 'message' or, more importantly, 'use_test_db', whose name suggests it could redirect the echo to a test database. An agent cannot infer its semantics 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?

States a specific verb ('echo') and resource ('tool'), plus the diagnostic purpose ('testing connection and basic parameter parsing'). It is clear what it does, but it never differentiates itself from the sibling diagnostic tool test_error_handling.

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?

'For testing connection and basic parameter parsing' implies a diagnostic/smoke-test context, but there is no explicit when-to-use statement and no mention of when to prefer test_error_handling or any other sibling.

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

trigger_progressTest Progress NotificationsB
Read-onlyIdempotent
Inspect

Triggers a sequence of progress notifications to verify the transport layer supports them.

NameRequiredDescriptionDefault
use_test_dbNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageYes
successYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds that the effect is emitting a sequence of progress notifications rather than a data mutation, which is useful, but it says nothing about how many notifications, timing, or side effects of the test path.

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 front-loaded sentence with no filler; nothing wasteful. It could have used a few of those words on the documented-but-unexplained parameter, but as written it is tight.

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

Completeness3/5

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

An output schema exists, so return values need no prose. However, for a tool with an undocumented boolean switch and no annotation-independent behavioral detail, the description leaves a real gap around use_test_db and the shape of the notification sequence.

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

Parameters2/5

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

Schema coverage is 0% and the single parameter use_test_db carries no description anywhere. The description never mentions it, so an agent cannot tell what toggling it does or what the default/omitted behavior is.

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 action (triggering a sequence of progress notifications) and its purpose (verifying transport-layer support), which is clearly distinguishable from sibling diagnostics like test_simple and test_error_handling. It doesn't explicitly name those siblings, but the verb+resource+intent 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 purpose clause ('to verify the transport layer supports them') implies when to call it โ€” a connectivity/diagnostic check โ€” but gives no explicit when-not guidance or comparison against test_simple / test_error_handling, which probe adjacent capabilities.

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

update_configurationUpdate Server ConfigurationBInspect

Dynamically update the MCP server configuration (instruction level, tool filters, briefing preferences) without restarting the server.

NameRequiredDescriptionDefault
tool_filterNoA comma-separated list of tool groups to enable, or "all"
briefing_prsNo
project_numberNo
briefing_issuesNo
briefing_copilotNo
briefing_entriesNo
briefing_pr_statusNo
briefing_summariesNo
briefing_workflowsNo
briefing_milestonesNo
briefing_include_teamNo
briefing_workflow_statusNo

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
successYes
updatedYes
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the mutation profile is partly covered. The description adds the useful trait that changes apply live without a restart, but omits whether omitted fields are preserved (partial vs. full replacement) and whether changes survive a restart โ€“ important for a non-idempotent write.

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 live-update benefit is placed where it will be read first. Slightly under-specified rather than padded.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a 12-parameter, fully-optional mutation tool the description leaves the field semantics, partial-update behavior, and persistence unanswered. The structural note about flat keys vs. a nested "config" object lives in the schema, not the description.

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

Parameters2/5

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

Schema description coverage is only 8% โ€“ 11 of 12 parameters have no description at all. The description names "instruction level," which does not even correspond to a parameter, and lumps the many briefing_* knobs under "briefing preferences" without explaining any of them. It does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ("Dynamically update the MCP server configuration") and parenthetically enumerates the affected areas (instruction level, tool filters, briefing preferences). An agent can tell this is runtime config mutation rather than entry/project CRUD, though no sibling is named for contrast (and indeed no other config tool exists).

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?

"Without restarting the server" implies when to use it โ€“ live, in-session reconfiguration โ€“ which is meaningful context. But there is no explicit when-not guidance, no mention of how this interacts with server startup config, and no statement of whether changes persist.

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

update_entryUpdate EntryAInspect

Update an existing journal entry. When updating content, preserve the existing markdown structure (## section headers). Do NOT restructure or add new top-level sections unless explicitly requested. Pass null to clear a metadata field. Supports content, type, tags, and 11 metadata fields including significance, project, issue, PR, and workflow.

NameRequiredDescriptionDefault
tagsNo
pr_urlNo
contentNoUpdated markdown content. Preserve the existing ## section header structure. For session summaries, keep the ## Accomplished / ## Unfinished / Blocked / ## Context for Next Session structure intact. Do NOT restructure or add new top-level sections unless explicitly requested.
entry_idNo
issue_urlNo
pr_numberNo
pr_statusNo
entry_typeNo
session_idNoAgent session ID for thread isolation.
is_archivedNo
is_personalNo
trust_scoreNoHeuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified).
auto_contextNo
impact_scoreNoHeuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs).
issue_numberNo
workspace_idNoOptional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key.
project_ownerNo
workflow_nameNo
project_numberNo
workflow_run_idNo
workflow_statusNo
expected_versionNo
significance_typeNo
validation_statusNoCurrent validation status of the entry (passed, none, failed).

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
entryNo
errorNoHuman-readable error message
detailsNoAdditional error context
successNo
categoryNoError category (validation, query, connection, internal)
suggestionNoSuggested fix for the error
indexStatusNo
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the non-read-only, non-destructive profile, so the description only needs to add context โ€” and it does: the markdown-preservation contract and the "pass null to clear a metadata field" rule are genuine behavioral semantics an agent could not get from the annotations. It omits anything about concurrency (the expected_version parameter), failure modes, or why idempotentHint is false despite this being an update-by-id operation.

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?

Four sentences, front-loaded with the verb and resource, and no filler. The markdown-preservation sentence largely duplicates the content parameter's own schema description, which is a small waste, but nothing is padded or buried.

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?

With an output schema present, return values need no explanation, and the annotations cover safety. What is missing for a 24-parameter mutation tool is how to identify the target entry and how expected_version protects against lost updates โ€” an agent could call this correctly on the happy path but not safely under concurrency.

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 25% across 24 parameters, so the description has to compensate, and it partially does by naming the field categories (content, type, tags, 11 metadata fields) and the null-clearing convention. But it is silent on the highest-risk parameters โ€” entry_id (how to specify the target), expected_version (optimistic concurrency), is_archived, is_personal โ€” leaving more than half the surface undocumented in both places.

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 ("Update an existing journal entry") and enumerates the updatable surface: content, type, tags, and 11 metadata fields with examples (significance, project, issue, PR, workflow). This clearly separates it from create_entry, but it never names the obvious siblings it competes with (batch_update_entries, team_update_entry), so an agent must infer the boundary itself.

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 "existing" โ€” i.e., use this rather than create_entry when the entry already exists. The rest of the text is formatting policy (preserve ## headers, don't restructure) rather than when-to-use guidance. No guidance on when to prefer batch_update_entries or team_update_entry, and no preconditions for requiring entry_id.

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

update_github_milestoneUpdate GitHub MilestoneAInspect

Update a GitHub milestone (title, description, due date, or state). Use state "closed" to close a completed milestone.

NameRequiredDescriptionDefault
repoNoLEAVE EMPTY to auto-detect
ownerNoLEAVE EMPTY to auto-detect
stateNoSet to "closed" to close the milestone
titleNoNew title
due_onNoNew due date in YYYY-MM-DD format
descriptionNoNew description
use_test_dbNo
milestone_numberNoMilestone number to update

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
errorNoHuman-readable error message
detailsNoAdditional error context
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
milestoneNo
suggestionNoSuggested fix for the error
instructionNo
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation
requiresUserInputNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's main added value is the state-transition semantics of "closed". It does not clarify merge/edit side effects, whether omitted fields are preserved, or what happens on an already-closed milestone.

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

Conciseness5/5

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

Two short sentences, no filler, and the highest-value instruction (how to close) is front-loaded after the purpose statement.

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?

With an output schema present and annotations covering safety, the description only needs to convey scope and mutation semantics, which it does. Minor gapsโ€”auto-detected owner/repo and the practical need for a milestone identifierโ€”are already handled by the schema's own parameter descriptions.

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 every parameter including the "closed" state value and YYYY-MM-DD due date. The description's field list mirrors the schema rather than adding syntax, format, or edge-case detail, 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 uses a specific verb and resource ('Update a GitHub milestone') and enumerates the mutable fields (title, description, due date, state). The verb distinguishes it from get_/create_/delete_github_milestone siblings, though it never names them explicitly.

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

Usage Guidelines3/5

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

It gives one actionable usage rule โ€” set state to "closed" to close a completed milestone โ€” which is genuinely helpful. It does not say when to prefer this over delete_github_milestone or create_github_milestone, nor does it mention prerequisites such as needing a milestone number.

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

update_projectUpdate ProjectBInspect

Update the details (path, number, or name) of an existing project in the registry.

NameRequiredDescriptionDefault
nameNoThe current key/name of the project.
new_nameNoThe new key/name for the project (if renaming).
use_test_dbNo
absolute_pathNoThe new absolute path to the local repository.
project_numberNoThe new GitHub Project number.

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
dataNo
errorNoHuman-readable error message
itemsNo
detailsNoAdditional error context
messageNo
projectNo
successNo
categoryNoError category (validation, query, connection, internal)
projectsNo
suggestionNoSuggested fix for the error
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation, so the safety profile is covered. The description adds that only existing projects can be targeted and which attributes change, but it omits what happens on a rename (does the key propagate to linked entries?), whether unknown names error out, and why the operation is flagged non-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?

One compact sentence with the resource scoped up front and no filler. It is efficient but arguably under-specified for a 5-parameter mutation tool, so brevity comes at the cost of the guidance missing elsewhere.

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?

With an output schema present, return values need no explanation, and annotations cover the safety profile. However, a tool with zero required parameters gives the agent no instruction on which parameter identifies the target project or what happens if only use_test_db is supplied, which is a meaningful gap for correct invocation.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already explains name, new_name, absolute_path and project_number. The description's field list mirrors those descriptions without adding syntax or guidance, and it says nothing about use_test_db, which is undocumented in both places.

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 ('Update') and resource ('existing project in the registry') and enumerates the mutable fields (path, number, name), so an agent can distinguish it from create_entry/update_entry style tools. It does not name the closest siblings (register_project, delete_project) to draw the boundary explicitly, which keeps it 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?

The phrase 'existing project' weakly implies this is for already-registered projects rather than new ones, but there is no explicit when-to-use/when-not guidance and no mention of the alternative (register_project for creating, get_project for reading). An agent must infer the selection rule from the surrounding tool list.

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

visualize_relationshipsVisualize RelationshipsC
Read-onlyIdempotent
Inspect

Generate a Mermaid diagram visualization of entry relationships

NameRequiredDescriptionDefault
qNo
idNo
relNo
keepNo
modeNo
pathNo
tagsNoFilter entries by tags
textNo
typeNo
depthNoRelationship traversal depth
limitNoMaximum entries to include
messageNo
entry_idNoSpecific entry ID to visualize (shows connected entries)
descriptionNo
workspace_idNo
project_numberNo
relationship_typeNoFilter to show only this relationship type (e.g., blocked_by, implements)

Output Schema

NameRequiredDescription
codeNoError code (e.g. VALIDATION_ERROR, INTERNAL_ERROR)
depthNo
errorNoHuman-readable error message
legendNo
detailsNoAdditional error context
mermaidNo
messageNo
successNo
categoryNoError category (validation, query, connection, internal)
root_entryNo
suggestionNoSuggested fix for the error
entry_countNo
recoverableNoWhether the error is recoverable
aggregated_errorsNoDetails of individual errors in a multi-step operation
relationship_countNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety behavior is covered. The description adds only that the output is a Mermaid diagram, without explaining how traversal depth, limits, or relationship filters affect the diagram, or any other behavioral context beyond the annotations.

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 single sentence is front-loaded, has zero filler, and states the purpose directly. It is appropriately concise, even though the overall definition is under-specified for its complexity.

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 17 parameters, yet the description provides only a one-line purpose statement. While the output schema covers return values and annotations cover safety, the description does not explain how to invoke the tool meaningfully or how its many optional parameters shape the visualization.

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

Parameters1/5

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

The description adds no meaning for any of the 17 parameters. With only 29% schema description coverage, 12 parameters such as 'q', 'id', 'rel', 'keep', 'mode', 'path', 'text', 'type', 'message', 'description', 'workspace_id', and 'project_number' are left unexplained in both the schema and the description.

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 ('Generate'), output format ('Mermaid diagram'), and resource ('entry relationships'), so the basic purpose is clear. However, it does not differentiate this tool from the sibling 'team_visualize_relationships' or clarify how it differs from related tools like 'link_entries' or '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 gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. An agent must infer that it is for visualization rather than data retrieval, but there is 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.

Tool Schema Changelog

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

  1. 113 tool updatesv9.0.0
    • First observedadd_kanban_item
    • First observedadd_to_vector_index
    • First observedanalyze_commit_patterns
    • First observedbackup_journal
    • First observedbatch_create_entries
    • First observedbatch_delete_entries
    • First observedbatch_update_entries
    • First observedcheck_entry_staleness
    • First observedcleanup_backups
    • First observedclose_github_issue_with_entry
    • First observedcreate_entry
    • First observedcreate_github_issue_with_entry
    • First observedcreate_github_milestone
    • First observedcross_team_search
    • First observeddelete_entry
    • First observeddelete_github_milestone
    • First observeddelete_kanban_item
    • First observeddelete_project
    • First observedexport_entries
    • First observedexport_markdown
    • First observedget_commit_history
    • First observedget_copilot_reviews
    • First observedget_cross_project_insights
    • First observedget_entry_by_id
    • First observedget_entry_history
    • First observedget_github_context
    • First observedget_github_issue
    • First observedget_github_issues
    • First observedget_github_milestone
    • First observedget_github_milestones
    • First observedget_github_pr
    • First observedget_github_prs
    • First observedget_kanban_board
    • First observedget_project
    • First observedget_recent_entries
    • First observedget_release_info
    • First observedget_repo_insights
    • First observedget_statistics
    • First observedget_unreleased_commits
    • First observedget_vector_index_stats
    • First observedimport_external
    • First observedimport_markdown
    • First observedlink_entries
    • First observedlist_backups
    • First observedlist_deleted_entries
    • First observedlist_projects
    • First observedlist_tags
    • First observedload-briefing
    • First observedmark_anchors_stale
    • First observedmemory_read_resource
    • First observedmerge_tags
    • First observedmj_execute_code
    • First observedmj_read_resource
    • First observedmj_session_summary
    • First observedmove_kanban_item
    • First observedread_resource
    • First observedrebuild_vector_index
    • First observedregister_project
    • First observedrestore_backup
    • First observedrestore_entry
    • First observedrun_auto_prune
    • First observedsearch_audit_log
    • First observedsearch_by_date_range
    • First observedsearch_commits
    • First observedsearch_entries
    • First observedsemantic_search
    • First observedteam_add_author_alias
    • First observedteam_add_member
    • First observedteam_add_to_vector_index
    • First observedteam_backup
    • First observedteam_batch_create_entries
    • First observedteam_batch_delete_entries
    • First observedteam_batch_update_entries
    • First observedteam_consolidate_authors
    • First observedteam_create_entry
    • First observedteam_delete_entry
    • First observedteam_export_entries
    • First observedteam_export_markdown
    • First observedteam_get_collaboration_matrix
    • First observedteam_get_cross_project_insights
    • First observedteam_get_entry_by_id
    • First observedteam_get_member
    • First observedteam_get_recent
    • First observedteam_get_statistics
    • First observedteam_get_vector_index_stats
    • First observedteam_import_external
    • First observedteam_import_markdown
    • First observedteam_link_entries
    • First observedteam_list_author_aliases
    • First observedteam_list_backups
    • First observedteam_list_deleted_entries
    • First observedteam_list_members
    • First observedteam_list_tags
    • First observedteam_merge_tags
    • First observedteam_rebuild_vector_index
    • First observedteam_remove_author_alias
    • First observedteam_remove_member
    • First observedteam_resolve_author
    • First observedteam_restore_entry
    • First observedteam_search
    • First observedteam_search_by_date_range
    • First observedteam_semantic_search
    • First observedteam_update_entry
    • First observedteam_update_member_role
    • First observedteam_visualize_relationships
    • First observedtest_error_handling
    • First observedtest_simple
    • First observedtrigger_progress
    • First observedupdate_configuration
    • First observedupdate_entry
    • First observedupdate_github_milestone
    • First observedupdate_project
    • First observedvisualize_relationships

TDQS

C2.9/5.0

Scored across 113 tools

Disambiguation2/5

The tool set has many overlapping or near-duplicate entry points: personal vs. team mirrored CRUD/search/export tools, multiple search modes, several fallback/resource handlers (`read_resource`, `mj_read_resource`, `memory_read_resource`), and testing/progress/error tools mixed into the production surface. The `team_` prefix helps separate shared-database operations, but an agent must still reason carefully about which search, export, or resource tool to use.

Naming Consistency3/5

Most tools follow snake_case, and the `team_` namespace is fairly systematic, but the set mixes multiple conventions and prefixes: `load-briefing` uses a hyphen, `mj_*` and `memory_*` coexist with normal tools, and some names are noun-led (`backup_journal`, `team_backup`) while others are verb-led. The overall pattern is readable but not uniformly predictable across 113 tools.

Tool Count1/5

113 tools is an extreme over-expansion for a memory journal server. The large personal/team mirror, many GitHub/kanban/commit integrations, vector-index administration, backup controls, testing tools, and fallback handlers make the surface far heavier than needed.

Completeness5/5

The journal lifecycle is thoroughly covered: create/read/update/delete/restore, batch operations, tag management, multiple search modes, semantic indexing, import/export, backup/restore, project registry, audit logs, and team collaboration features. Additional GitHub, kanban, and commit-history tools extend coverage rather than leaving core journal workflows incomplete.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers