Memory Journal MCP Server
Provides tools for managing issues, pull requests, milestones, kanban boards, and repository insights.
Enables triggering and managing GitHub Actions workflows, including issue triage, PR review, and security audits.
Facilitates context sharing and review findings between IDE agents and Copilot for enhanced collaboration.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Memory Journal MCP ServerSummarize my current session and hand off context."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Memory Journal MCP Server
๐ Full Documentation (Wiki) โข Changelog โข Security โข Release Article
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(orpnpm 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-triageworkflow 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_idis omitted, the server automatically resolves the target workspace by matchingproject_numberagainstPROJECT_REGISTRY, matching content/tag keyword aliases, or inspectingprocess.cwd(), before falling back toDEFAULT_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 acceptworkspace_id: "*"to query across all workspaces.Immutability: A
workspace_idis permanently assigned upon entry creation and cannot be changed afterward.Server Config: Set
--default-workspace-id(or theDEFAULT_WORKSPACE_IDenvironment 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 --> OutputsSuggested 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:
You will receive the output of the
memory://briefing/{repo_name}resource.Prepend your response EXACTLY as:
๐ Briefing loaded โ
{repo_name}{paste ENTIRE briefing here}Address the user's request below the briefing.
NEVER autonomously execute tasks listed in the briefing.
Do NOT proactively ask the user to load the briefing. Wait for them to use the prompt.
Control Access with Tool Filtering
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 |
| All tools (default) |
| Core + search + codemode |
| Minimal footprint |
| Disable all mutations |
| Exclude a group |
| 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 |
| Code Mode (sandboxed code execution) ๐ Recommended |
| Entry CRUD, tags, test, staleness |
| Text search, date range, semantic, vector stats, cross-team |
| Statistics, cross-project insights |
| Link entries, visualize graphs |
| JSON/Markdown export and File-level Markdown Data Integration Interoperability (Import/Export) |
| Update configuration, update, delete, restore, rebuild/add to vector index, merge tags, search audit log, bulk operations (batch create/update/delete) |
| Issues, PRs, context, Kanban, Milestones, Insights, issue lifecycle, Copilot Reviews |
| Commit history, search, release info, patterns, staleness checks |
| Backup, list, restore, cleanup |
| CRUD, search, stats, relationships, IO (Markdown import/export), backup, vector search, cross-project insights, matrix, RBAC member management (requires |
๐ฏ 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()andFunction()construction from strings disabled at the V8 engine level viacodeGeneration: { 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 accessProxy constructor nullified โ
Proxy: undefinedin the sandbox prevents meta-object protocol abuseRPC 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 readonlysafely 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-configas 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? Runnpx memory-journal-mcp project createin 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 createto easily configure multiple repositories into yourPROJECT_REGISTRYwithout 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/summarybreadcrumbs.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 |
| Control tool exposure: |
Journal Content |
| How many recent entries, session summaries, and whether team entries appear |
GitHub Enrichment |
| 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 |
npx (no install) | Replace |
From source | Replace |
Code Mode only | Add |
Docker | Replace |
Team collaboration | Add |
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
localhostand blocks wildcard CORS to prevent unauthorized access and CSRF attacks. Public network binding (--server-host 0.0.0.0) requires explicit authentication (--auth-tokenor--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 3000To 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 1440Endpoints:
Endpoint | Description | Mode |
| Server info and available endpoints | Both |
| JSON-RPC requests (initialize, tools/call, etc.) | Both |
| SSE stream for server-to-client notifications | Stateful |
| Session termination | Stateful |
| Legacy SSE connection (MCP 2024-11-05) | Stateful |
| Legacy SSE message endpoint | Stateful |
| Health check ( | Both |
| Prometheus metrics export (requires flag) | Both |
| 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 --statelessMode | Progress Notifications | Legacy SSE | Serverless |
Stateful (default) | โ Yes | โ Yes | โ ๏ธ Complex |
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 720Flag | Default | Description |
| 0 (off) | Create timestamped database backups and prune old ones automatically |
| 5 | Max backups retained during automated cleanup |
| 0 (off) | Run |
| 0 (off) | Full vector index rebuild to maintain semantic search quality |
| 0 (off) | Scheduled report generation interval in minutes |
| 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:
Dynamic Project Routing: If the agent passes a
repostring that matches a key in yourPROJECT_REGISTRY, the server dynamically mounts the physical directory mapped to that project. It executes git commands locally and automatically infers theowner.Explicit Override: If the agent provides both
ownerandrepoexplicitly, those values override auto-detection for API calls.Missing Context: Without
PROJECT_REGISTRYor 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 themj.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:
Exploring the raw
project_numberargument passed by the agent.Checking if the
repostring precisely matches an entry in yourPROJECT_REGISTRY, seamlessly mapping it to its pre-configuredproject_number.Falling back to the globally defined
DEFAULT_PROJECT_NUMBERif 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 |
Auth Server Discovery | โ | RFC 8414 metadata discovery with caching |
Token Validation | โ | JWT validation with JWKS support |
Scope Enforcement | โ | Granular |
HTTP Transport | โ | Streamable HTTP with OAuth middleware |
Supported Scopes:
Scope | Tool Groups |
| core, search, analytics, relationships, io |
| github, team (+ all read groups) |
| 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/certsOr 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 3000Note: OAuth is opt-in. When not enabled, the server falls back to simple token authentication via
MCP_AUTH_TOKENenvironment variable, or runs without authentication.
๐ Session Management
Session start โ agent reads
memory://briefing(ormemory://briefing/{repo}) and shows project contextSession summary โ use
/session-summaryto capture progress and next-session contextNext session's briefing includes the previous summary โ context flows seamlessly
๐ง Configuration
Environment Variables
Variable | Description |
Core Database | |
| Path to the personal journal SQLite database |
| Path to the shared team SQLite database |
| Default workspace ID for multi-tenant isolation ( |
| Personal access token for GitHub integrations |
| JSON map of repo names to local paths and project numbers |
Security & Tooling | |
| Comma-separated paths for Code Mode filesystem boundaries |
| Control tool exposure ( |
| Max execution payload buffer size in Code Mode (bytes) |
| Allow Code Mode to bypass tool filters internally |
| Enable/disable autonomous tool & parameter healing ( |
| Max array/object elements in tool inputs (default: |
Briefing & Context | |
| Number of granular journal entries in briefing (default: 3) |
| Number of session summaries in briefing (default: 1) |
| Include entries from the team database (default: false) |
| GitHub Issues and PRs to list with titles |
| GitHub Milestones to list with titles |
| CI workflow runs to list |
| Injected behavioral rules and skills boundaries |
OAuth (HTTP Mode) | |
| Enable OAuth 2.1 authentication (default: false) |
| OAuth token verification parameters |
Telemetry & Administration | |
| File path for JSONL telemetry and argument redaction |
| In-memory and disk-persisted operational metrics |
| Auto-prune settings and exclusion tags |
| Scheduled HTTP reports |
GitHub Integration (Optional)
export GITHUB_TOKEN="your_token" # For Projects/Issues/PRsScopes: 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
ghCLI.
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 --> ExternalStack
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 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-sqlite3with synchronous I/Osqlite-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.
calculateImportanceis ~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-vecwith SQL-native KNN queries.Core MCP Routines:
getToolsuses cached O(1) dispatch (~4800-7000x faster thanget_recent_entries).create_entryandsearch_entriesexecute through the full MCP layer with sub-millisecond overhead.
To run the benchmarking suite locally:
pnpm run benchTesting
Extensively tested across two frameworks:
Suite | Command | Covers |
Vitest (unit/integration) |
| Database, tools, resources, handlers, security, GitHub, vector search, codemode |
Playwright (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 testsSecurity
Note: When updating schemas or validation logic, please refer to the
/zodskill 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 messagesLocal-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
.dbfile anywhereSoft delete - Entries can be recovered
Auto-backup on restore - Never lose data accidentally
๐ Documentation & Resources
GitHub Wiki - Complete documentation
Copilot Setup Guide - Cross-agent memory bridge between IDE agents and GitHub Copilot
Deployment Guide - CI/CD pipeline, environments, and version bump checklist
Docker Hub - Container images
npm Package - Node.js distribution
Issues - Bug reports & feature requests
๐ License
MIT License - See LICENSE file for details.
๐ค Contributing
Built by developers, for developers. PRs welcome! See CONTRIBUTING.md for guidelines.
Available Tools
113 toolsadd_kanban_itemAdd Kanban ItemAIdempotentInspect
Add an existing GitHub Issue or Pull Request to a Kanban board (GitHub Project v2). Returns the project item ID on success.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| owner | No | Repository owner - LEAVE EMPTY to auto-detect | |
| use_test_db | No | ||
| issue_number | No | The number of the issue or PR to add | |
| project_number | No | GitHub Project number (optional if repo is registered) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| itemId | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| projectNumber | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 IndexCIdempotentInspect
Add a specific entry to the semantic search vector index
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 PatternsCRead-onlyIdempotentInspect
Analyze patterns in a list of commits or recent history
| Name | Required | Description | Default |
|---|---|---|---|
| maxCount | No | Maximum number of commits to analyze. Default: 50 | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | Yes | |
| analysis | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Custom backup name (optional, defaults to timestamp). Anti-Hallucination Hint: You can use positional args like mj.backup.backupJournal("my_name"). | |
| compress | No | Anti-Hallucination Hint: Compression is natively handled by the database engine. This parameter is safely ignored. | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| path | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| filename | No | |
| sizeBytes | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | No | ||
| auto_index | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| indexStatuses | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesBDestructiveInspect
Delete multiple existing journal entries in a single transaction. Max 50 per batch.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | No | ||
| permanent | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| deleted | No | |
| details | No | Additional error context |
| success | No | |
| warning | No | |
| category | No | Error category (validation, query, connection, internal) |
| notFound | No | |
| permanent | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | No | ||
| auto_index | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| notFound | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| indexStatuses | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 StalenessBIdempotentInspect
Check if a journal entry's anchors have been modified or deleted in git since the entry was created.
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | No | The ID of the journal entry to check | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| results | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_count | No | Number 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_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| deleted | No | |
| details | No | Additional error context |
| message | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| keptCount | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| deletedCount | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| tags | No | Journal entry tags | |
| owner | No | Repository owner - LEAVE EMPTY to auto-detect | |
| comment | No | Comment to add to the issue before closing | |
| use_test_db | No | ||
| issue_number | No | Issue number to close | |
| move_to_done | No | Move the associated Kanban item to "Done" column | |
| project_number | No | GitHub Project number (required if move_to_done is true, or uses DEFAULT_PROJECT_NUMBER) | |
| resolution_notes | No | Notes about how the issue was resolved |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| issue | No | |
| kanban | No | |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| journalEntry | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags 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_url | No | ||
| anchors | No | Files or lines of code that this entry is fundamentally anchored to. If the anchor becomes stale/invalid, the entry importance score drops. | |
| content | No | Markdown-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_url | No | ||
| pr_number | No | ||
| pr_status | No | ||
| entry_type | No | Entry 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_id | No | Agent session ID for thread isolation (usually conversation ID). | |
| is_personal | No | ||
| trust_score | No | Heuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified). | |
| auto_context | No | JSON string with structured metadata. Used for session-commits context. | |
| impact_score | No | Heuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs). | |
| issue_number | No | ||
| workspace_id | Yes | REQUIRED. The repository name (e.g. adamic). Do not use numeric project IDs or "workspace" as the key. | |
| project_owner | No | ||
| relationships | No | Optional array of links to previous entries/flags to establish relationships immediately upon creation. Types: "resolves", "depends_on", "implements", "relates_to", "references", "evolves_from" | |
| workflow_name | No | ||
| project_number | No | Numeric project ID (e.g., 1, 14). This is now optional; workspace_id is preferred. | |
| share_with_team | No | If true, saves a copy of this entry to the Team database (if configured) using your team alias | |
| workflow_run_id | No | ||
| workflow_status | No | ||
| significance_type | No | ||
| validation_status | No | Current validation status of the entry (passed, none, failed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| author | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| sharedWithTeam | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Issue body/description | |
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| tags | No | Journal entry tags | |
| owner | No | Repository owner - LEAVE EMPTY to auto-detect | |
| title | No | Issue title | |
| labels | No | Labels to apply | |
| assignees | No | Users to assign | |
| use_test_db | No | ||
| entry_content | No | Custom journal content (defaults to auto-generated summary) | |
| initial_status | No | Initial status column (e.g., "Backlog", "Ready"). Defaults to "Backlog" when adding to a project. | |
| project_number | No | GitHub Project number to add this issue to | |
| milestone_number | No | Milestone number to assign this issue to |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| issue | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| journalEntry | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect | |
| owner | No | LEAVE EMPTY to auto-detect | |
| title | No | Milestone title | |
| due_on | No | Due date in YYYY-MM-DD format (optional) | |
| description | No | Milestone description | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| milestone | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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.
cross_team_searchCross-Team SearchBRead-onlyIdempotentInspect
Search across multiple configured team databases simultaneously. Returns results with team_db labels.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| end_date | No | ||
| team_dbs | No | Specific team DB labels to search. Omit to search all configured DBs. | |
| entry_type | No | ||
| start_date | No | ||
| fuzzy_match | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| errors | No | |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| degraded | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| searched_dbs | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results carry team_db labels, but does not explain pagination, behavior when a configured DB is unavailable, or limits on cross-team queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core scope. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety, which reduces the burden. However, for a 12-parameter cross-team search with low schema coverage, the description is too thin to help an agent choose parameters or understand cross-DB behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% across 12 parameters, so the description needs to compensate and does not. It gives no meaning for limit, fuzzy_match, include_archived, date ranges, entry_type, or the relationship between team_dbs and the configured databases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Search across multiple configured team databases simultaneously.' This distinguishes it from single-team siblings such as team_search and search_entries, though it does not name 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'across multiple configured team databases simultaneously' implies when this tool is appropriate versus a single-team search, but there are no explicit when-to-use or when-not-to-use instructions and no named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entryDelete EntryADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | The ID of the entry to delete. If you need to delete multiple entries, use batch_delete_entries instead. | |
| permanent | No | If true, permanently deletes the entry. If false, performs a soft delete. | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | Ignored. Provided for agent compatibility. | |
| expected_version | No | REQUIRED for safe deletion to prevent optimistic concurrency gaps. Get this from get_entry_by_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entryId | No | |
| success | No | |
| warning | No | |
| category | No | Error category (validation, query, connection, internal) |
| permanent | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MilestoneADestructiveInspect
Permanently delete a GitHub milestone. Issues assigned to the milestone will be un-assigned but not deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect | |
| owner | No | LEAVE EMPTY to auto-detect | |
| confirm | No | Must be set to true to confirm deletion | |
| use_test_db | No | ||
| milestone_number | No | Milestone number to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| milestoneNumber | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| owner | No | Project owner - LEAVE EMPTY to auto-detect | |
| item_id | No | The project item ID to remove (from get_kanban_board) | |
| use_test_db | No | ||
| project_number | No | GitHub Project number (optional if repo is registered) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| itemId | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| projectNumber | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 ProjectCDestructiveIdempotentInspect
Remove a project from the global registry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The key/name of the project to delete. | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| error | No | Human-readable error message |
| items | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesBRead-onlyIdempotentInspect
Export journal entries to JSON or Markdown format
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | Maximum entries to export (default: 100) | |
| format | No | Export format (json or markdown). Anti-Hallucination Hint: Do NOT use type, use format. | json |
| end_date | No | ||
| start_date | No | ||
| entry_types | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| format | No | |
| content | No | |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| truncated | No | True if the results were truncated to fit within payload limits |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 FilesAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags | |
| limit | No | Max entries to export (default: 100, max: 500) | |
| end_date | No | End date filter (YYYY-MM-DD) | |
| output_dir | No | Target directory for .md files. Anti-Hallucination Hint: Do NOT use path or filepath, use output_dir. | |
| start_date | No | Start date filter (YYYY-MM-DD) | |
| entry_types | No | Filter by entry types | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| files | No | |
| details | No | Additional error context |
| skipped | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| output_dir | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| exported_count | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 HistoryBRead-onlyIdempotentInspect
Retrieve commit history for the current repository
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Git reference (branch, tag, commit). Default: HEAD | |
| path | No | Filter by specific file or directory path | |
| scope | No | Filter commits by a specific scope | |
| since | No | Show commits more recent than a specific date (e.g. "2023-01-01") | |
| sortBy | No | Sort commits by date or impact score | |
| maxCount | No | Maximum number of commits to return. Default: 50 | |
| use_test_db | No | ||
| techDebtAudit | No | Filter for high impact commits with low trust or missing validation |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| commits | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| changelog | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 ReviewsARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect from git | |
| owner | No | LEAVE EMPTY to auto-detect from git | |
| pr_number | No | Pull request number | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| error | No | Human-readable error message |
| owner | No | |
| state | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| comments | No | |
| prNumber | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| commentCount | No | |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 InsightsARead-onlyIdempotentInspect
Analyze patterns across all GitHub Projects tracked in journal entries. Use for architecture planning.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Anti-Hallucination Hint: get_cross_project_insights does not take a limit. | |
| query | No | Anti-Hallucination Hint: get_cross_project_insights does not take a query. It analyzes all entries. | |
| end_date | No | End date (YYYY-MM-DD) | |
| start_date | No | Start date (YYYY-MM-DD) | |
| min_entries | No | Minimum entries to include project | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | Anti-Hallucination Hint: get_cross_project_insights analyzes ALL projects. Do not pass a project_number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| project_count | No | |
| total_entries | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| inactive_projects | No | |
| time_distribution | No | |
| inactiveThresholdDays | No |
TDQS
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.
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.
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.
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.
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.
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 IDCRead-onlyIdempotentInspect
Retrieve a specific entry by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | The numeric ID of the entry to retrieve | |
| use_test_db | No | ||
| workspace_id | No | Optional 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_number | No | ||
| include_relationships | No | If true, includes all linked relationships (causal, related) in the response |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| importance | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| relationships | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| importanceBreakdown | No |
TDQS
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.
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.
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.
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.
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.
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 HistoryCRead-onlyIdempotentInspect
Retrieve the revision history of an entry (last 10 edits).
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | The numeric ID of the entry | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| current | No | |
| details | No | Additional error context |
| history | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 ContextARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name (use this to switch projects dynamically) | |
| owner | No | Repository owner | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| branch | No | |
| commit | No | |
| issues | No | |
| details | No | Additional error context |
| prCount | No | |
| category | No | Error category (validation, query, connection, internal) |
| repoName | No | |
| remoteUrl | No | |
| issueCount | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| pullRequests | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 DetailsBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect from git | |
| owner | No | LEAVE EMPTY to auto-detect from git | |
| use_test_db | No | ||
| issue_number | No | ||
| truncate_body | No | Max characters for body text (0 = full body, default 800). Reduces token usage. | |
| include_comments | No | Include issue comments (default false). Each comment adds tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| error | No | Human-readable error message |
| issue | No | |
| owner | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| comments | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| commentCount | No | |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 IssuesARead-onlyIdempotentInspect
List issues from a GitHub repository. IMPORTANT: Do NOT guess owner/repo values - leave them empty to auto-detect from the current git repository.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides. | |
| limit | No | ||
| owner | No | Repository owner - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides. | |
| state | No | open | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| count | No | |
| error | No | Human-readable error message |
| owner | No | |
| issues | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
Get detailed information about a specific GitHub milestone including progress and linked issue counts.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect from git | |
| owner | No | LEAVE EMPTY to auto-detect from git | |
| use_test_db | No | ||
| milestone_number | No | Milestone number |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| error | No | Human-readable error message |
| owner | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| milestone | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 MilestonesBRead-onlyIdempotentInspect
List GitHub milestones for the repository with completion percentages and due dates.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect from git | |
| limit | No | Max milestones to return (default: 20) | |
| owner | No | LEAVE EMPTY to auto-detect from git | |
| state | No | Filter by state (default: open) | open |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| count | No | |
| error | No | Human-readable error message |
| owner | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| milestones | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect from git | |
| owner | No | LEAVE EMPTY to auto-detect from git | |
| pr_number | No | ||
| use_test_db | No | ||
| truncate_body | No | Max characters for body text (0 = full body, default 800). Reduces token usage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| error | No | Human-readable error message |
| owner | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| pullRequest | No | |
| recoverable | No | Whether the error is recoverable |
| detectedRepo | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 RequestsBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides. | |
| limit | No | ||
| owner | No | Repository owner - LEAVE EMPTY to auto-detect from git. Only specify if user explicitly provides. | |
| state | No | open | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| count | No | |
| error | No | Human-readable error message |
| owner | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| detectedRepo | No | |
| pullRequests | No | |
| detectedOwner | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 BoardBRead-onlyIdempotentInspect
View a GitHub Project v2 as a Kanban board with items grouped by Status column. Returns all columns with their items.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| owner | No | Project owner - LEAVE EMPTY to auto-detect | |
| item_limit | No | Maximum items per column (default 25, max 100). Set to 0 for summary_only behavior. | |
| use_test_db | No | ||
| summary_only | No | Return column summaries only (name + itemCount), omitting individual items. Saves ~80% tokens. | |
| project_number | No | GitHub Project number (optional if repo is registered) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| hint | No | |
| error | No | Human-readable error message |
| owner | No | |
| columns | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| projectId | No | |
| suggestion | No | Suggested fix for the error |
| totalItems | No | |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| summaryOnly | No | |
| detectedRepo | No | |
| projectTitle | No | |
| detectedOwner | No | |
| itemDirectory | No | |
| projectNumber | No | |
| statusFieldId | No | |
| statusOptions | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 ProjectBRead-onlyIdempotentInspect
Get details of a specific registered project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The key/name or project number of the project to retrieve. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| error | No | Human-readable error message |
| items | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesCRead-onlyIdempotentInspect
Get the most recent journal entries
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum entries to return (max 500) | |
| cursor | No | ||
| offset | No | Zero-based offset for pagination (used when cursor is not provided) | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| is_personal | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| hasMore | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 InfoBRead-onlyIdempotentInspect
Get latest release commits
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Git reference (branch, tag, commit). Default: HEAD | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| commits | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| changelog | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 InsightsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| owner | No | Repository owner - LEAVE EMPTY to auto-detect | |
| sections | No | Data section to return (default: stars). Use "all" for full payload. | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| repo | No | |
| size | No | |
| error | No | Human-readable error message |
| forks | No | |
| owner | No | |
| paths | No | |
| stars | No | |
| details | No | Additional error context |
| section | No | |
| success | No | |
| traffic | No | |
| category | No | Error category (validation, query, connection, internal) |
| watchers | No | |
| referrers | No | |
| openIssues | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| defaultBranch | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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 StatisticsCRead-onlyIdempotentInspect
Get journal statistics and analytics (Phase 2: includes project breakdown)
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Anti-Hallucination Hint: Use group_by instead of timeframe or time. | |
| period | No | Anti-Hallucination Hint: Use group_by instead of timeframe or period. | |
| end_date | No | ||
| group_by | No | week | |
| timeframe | No | Anti-Hallucination Hint: Use group_by instead of timeframe or period. | |
| start_date | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | Anti-Hallucination Hint: get_statistics cannot be filtered by project_number. It always returns global stats. Use project_breakdown: true instead. | |
| project_breakdown | No | Set to true to return multi-project entry breakdown across all registered projects (workspace_id: "*"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| groupBy | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| dateRange | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| totalEntries | No | |
| activityTrend | No | |
| causalMetrics | No | |
| entriesByType | No | |
| decisionDensity | No | |
| entriesByPeriod | No | |
| projectBreakdown | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| relationshipComplexity | No |
TDQS
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.
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.
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.
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.
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.
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 CommitsCRead-onlyIdempotentInspect
Get commits since the last tag/release
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| commits | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| changelog | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 StatsCRead-onlyIdempotentInspect
Get statistics about the semantic search vector index
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| available | Yes | |
| itemCount | No | |
| modelName | No | |
| dimensions | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files to process (default: 100, max: 500) | |
| dry_run | No | Parse and validate without writing to database | |
| source_dir | No | Directory containing files to import. Anti-Hallucination Hint: Do NOT use path or filepath, use source_dir. | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| source_format | No | Source format (notion, obsidian, logseq). Anti-Hallucination Hint: Do NOT use source, use source_format. | |
| project_number | No | ||
| default_entry_type | No | Fallback entry type if heuristics cannot determine one |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| errors | No | |
| created | No | |
| details | No | Additional error context |
| dry_run | No | |
| skipped | No | |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| vectorsIndexed | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| relationshipsLinked | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files to process (default: 100, max: 500) | |
| dry_run | No | Parse and validate without writing to database | |
| source_dir | No | Directory containing .md files to import. Anti-Hallucination Hint: Do NOT use path or filepath, use source_dir. | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| errors | No | |
| created | No | |
| details | No | Additional error context |
| dry_run | No | |
| skipped | No | |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| vectorsIndexed | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| relationshipsLinked | No |
TDQS
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.
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.
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.
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.
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.
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.
link_entriesLink EntriesCInspect
Create a relationship between two journal entries
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| rel | No | ||
| from | No | ||
| text | No | ||
| type | No | ||
| to_id | No | ||
| from_id | No | ||
| message | No | ||
| source_id | No | ||
| target_id | No | ||
| description | No | ||
| to_entry_id | No | ID of the target entry. Anti-Hallucination Hint: use to_entry_id, not targetId | |
| workspace_id | No | ||
| from_entry_id | No | ID of the source entry. Anti-Hallucination Hint: use from_entry_id, not sourceId | |
| project_number | No | ||
| relationship_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | Additional context about the operation |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| duplicate | No | True if relationship already existed |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| relationship | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-idempotent, non-destructive, closed-world write. The description adds nothing beyond that: it does not say what happens on a duplicate link (non-idempotent hint makes this critical), whether the relationship type is free-form, or what happens if an endpoint is missing. For a 16-parameter mutation with zero required fields, this is a substantial behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, so nothing is wasted. But the brevity is achieved by omission rather than by precision; a 16-parameter tool warrants more structure than one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description never addresses the gap that no parameters are required despite 'between two entries' implying two are needed. With 16 loosely-related alias parameters and 13% schema coverage, the description leaves an agent unable to construct a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 13% and the description adds no parameter meaning at all. The schema exposes roughly a dozen competing aliases for the same concept (to/to_id/target_id/to_entry_id, from/from_id/source_id/from_entry_id, rel/type/relationship_type) with zero guidance on which set is canonical โ only two params carry any hint. This is exactly the case where the description had to compensate and did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Create a relationship between two journal entries'), which is clearly understandable. However, it makes no attempt to distinguish itself from the sibling team_link_entries, so an agent has no basis for choosing between the two without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (do both entries need to exist? must they be in the same workspace?), and no mention of alternatives such as team_link_entries or visualize_relationships. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_backupsList Journal BackupsBRead-onlyIdempotentInspect
List all available backup files with their sizes and creation dates
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| hint | No | |
| error | No | Human-readable error message |
| total | No | |
| backups | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| backupsDirectory | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesARead-onlyIdempotentInspect
List recently soft-deleted entries that can be restored
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| facets | No | Distribution counts when include_facets is true |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| degraded | No | True if the search degraded to a slower fallback method due to infrastructure failure |
| highlights | No | FTS5 search snippets when include_highlights is true |
| searchMode | No | |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 ProjectsCRead-onlyIdempotentInspect
List all registered projects.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| error | No | Human-readable error message |
| items | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 TagsBRead-onlyIdempotentInspect
List all unique tags used across all entries
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| tags | No | |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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)CRead-onlyInspect
Fallback handler for load-briefing when invoked as an MCP tool instead of an MCP prompt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 StaleCIdempotentInspect
Update the status of multiple anchors (e.g. to stale or invalidated) based on validation rules or git history checks.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | No | ||
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| updated_count | Yes | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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)CRead-onlyInspect
Fallback handler for memory_read_resource when invoked as an MCP tool instead of a protocol resource read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source_tag | No | Tag to merge from (will be deleted) | |
| target_tag | No | Tag to merge into (will be created if not exists) | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| sourceTag | No | |
| targetTag | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| sourceDeleted | No | |
| entriesUpdated | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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" })
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | REQUIRED 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. | |
| repo | No | Target repository name to set as default context for all github/kanban tools executed in this sandbox (e.g., "memory-journal-mcp"). | |
| entry | No | Optional entry object or dictionary to create/update. When passed without code, Code Mode automatically synthesizes an appropriate journal entry. | |
| query | No | Optional search query string or SQL-style query string. If provided, Code Mode will automatically resolve it to search or retrieve entries. | |
| context | No | A 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_run | No | If true, state-modifying API calls (create_entry, update_entry, etc.) will be skipped, returning simulated success. | |
| payload | No | Optional 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. | |
| timeout | No | Maximum execution time in milliseconds before the sandbox forcibly terminates the script (max: 30000ms). | |
| readonly | No | If true, execution is restricted to read-only operations. Write tools will be filtered out of the API bridge. | |
| use_test_db | No | ||
| auto_version | No | Automatically inject expected_version for optimistic concurrency on updates/deletes | |
| workspace_id | No | Target workspace ID to isolate data. If omitted, uses defaultWorkspaceId if configured. | |
| maxResultSize | No | Alias for max_result_size. | |
| project_number | No | Numeric 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_size | No | Maximum 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
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.
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.
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.
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.
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.
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)CRead-onlyInspect
Fallback handler for mj_read_resource when invoked as an MCP tool instead of a protocol resource read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)BRead-onlyInspect
Fallback handler for mj_session_summary when invoked as an MCP tool instead of an MCP prompt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ItemAIdempotentInspect
Move a Kanban item to a different status column. Requires the project board to have a Status field.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository name - LEAVE EMPTY to auto-detect | |
| owner | No | Project owner - LEAVE EMPTY to auto-detect | |
| item_id | No | Project item ID (from get_kanban_board) | |
| use_test_db | No | ||
| target_status | No | Target status column name (e.g., "In Progress", "Done") | |
| project_number | No | GitHub Project number (optional if repo is registered) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| itemId | No | |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| newStatus | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| projectNumber | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| availableStatuses | No |
TDQS
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.
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.
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.
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.
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.
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)CRead-onlyInspect
Fallback handler for read_resource when invoked as an MCP tool instead of a protocol resource read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No | ||
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| partial | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| failedEntries | No | |
| entriesIndexed | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 ProjectAIdempotentInspect
Register a new project in the global registry. This is required before the agent can switch context to this repository.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The key/name of the project in the registry. | |
| use_test_db | No | ||
| absolute_path | No | The absolute path to the local repository. | |
| project_number | No | The GitHub Project number, if applicable. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| error | No | Human-readable error message |
| items | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 BackupADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be set to true to confirm the restore operation | |
| filename | No | Backup 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_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | Yes | |
| warning | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| restoredFrom | No | |
| newEntryCount | No | |
| revertedChanges | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| previousEntryCount | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 PruneADestructiveInspect
Manually trigger the autonomous pruning and cleanup routines. This evaluates entry importance, archives old entries, and hard-deletes stale softly-deleted ones.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, simulates the pruning process and returns the counts without making actual changes. | |
| use_test_db | No | ||
| importance_threshold | No | Override the importance score threshold (0.0 - 1.0) below which entries are eligible for pruning. | |
| prune_older_than_days | No | Override the number of days before archived entries are soft-deleted. | |
| archive_older_than_days | No | Override the number of days before active entries are archived. | |
| hard_delete_older_than_days | No | Override the number of days before soft-deleted entries are permanently removed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| dryRun | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| backupFile | No | |
| suggestion | No | Suggested fix for the error |
| prunedCount | No | |
| recoverable | No | Whether the error is recoverable |
| archivedCount | No | |
| hardDeletedCount | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 LogBRead-onlyIdempotentInspect
Search operational telemetry audit logs by tool name, user, date range, status, or category. Returns the most recent matches up to the limit.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| limit | No | ||
| status | No | ||
| category | No | ||
| tool_name | No | ||
| date_range | No | ||
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| results | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 RangeCRead-onlyIdempotentInspect
Search journal entries within a date range with optional filters
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| cursor | No | Cursor for pagination | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| end_date | No | [REQUIRED] End date (use `end_date`, not `end`). Must provide an ISO-8601 date string (e.g. YYYY-MM-DD). | |
| pr_number | No | ||
| entry_type | No | ||
| start_date | No | [REQUIRED] Start date (use `start_date`, not `start`). Must provide an ISO-8601 date string (e.g. YYYY-MM-DD). | |
| is_personal | No | ||
| include_team | No | Include team entries in the search results | |
| issue_number | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| workflow_run_id | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| facets | No | Distribution counts when include_facets is true |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| degraded | No | True if the search degraded to a slower fallback method due to infrastructure failure |
| highlights | No | FTS5 search snippets when include_highlights is true |
| searchMode | No | |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 CommitsCRead-onlyIdempotentInspect
Search commit history by query
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to match in commit messages | |
| scope | No | Filter commits by a specific scope | |
| sortBy | No | Sort commits by date or impact score | |
| maxCount | No | Maximum number of commits to return. Default: 50 | |
| use_test_db | No | ||
| techDebtAudit | No | Filter for high impact commits with low trust or missing validation |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| commits | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| changelog | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Search strategy: auto (default, heuristic-based), fts (FTS5 keyword), semantic (vector), hybrid (RRF fusion of FTS5+vector) | auto |
| tags | No | ||
| limit | No | ||
| query | No | The search query string (use `query`, not `q`) | |
| cursor | No | Cursor for pagination | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| end_date | No | ||
| pr_number | No | ||
| pr_status | No | ||
| entry_type | No | ||
| fts_weight | No | Weight multiplier for FTS5 results in hybrid search (default: 1.0) | |
| start_date | No | ||
| exact_match | No | Legacy hallucinated alias. Maps exact_match: false to fuzzy_match: true | |
| fuzzy_match | No | If true and no exact FTS5 results found, returns typo-tolerant suggestions (fts mode only) | |
| is_personal | No | ||
| auto_correct | No | If true and fuzzy_match=true, automatically runs a new search with the best suggestion if distance <= 1 | |
| include_team | No | Include team entries in the search results | |
| issue_number | No | ||
| workspace_id | No | Optional 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_facets | No | Include facet distributions (tags, entry types) for the search results | |
| project_number | No | ||
| semantic_weight | No | Weight multiplier for semantic results in hybrid search (default: 1.0) | |
| workflow_run_id | No | ||
| include_archived | No | ||
| include_highlights | No | Include snippets with matched terms highlighted (only applies to fts mode) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| facets | No | Distribution counts when include_facets is true |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| degraded | No | True if the search degraded to a slower fallback method due to infrastructure failure |
| highlights | No | FTS5 search snippets when include_highlights is true |
| searchMode | No | |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
semantic_searchSemantic SearchARead-onlyIdempotentInspect
Perform semantic/vector search on journal entries using AI embeddings. Supports find-related-by-ID (entry_id) and metadata filters (tags, entry_type, date range). Threshold default is 0.25 (try 0.15-0.2 for broader matches, 0.4+ for strict matches). Entries are auto-indexed on creation. If index drifts, use rebuild_vector_index.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter results by tags | |
| limit | No | ||
| query | No | The search query string (use `query`, not `q`) | |
| end_date | No | Filter results until this date (YYYY-MM-DD) | |
| entry_id | No | Find entries related to this entry ID (uses existing embedding, skips re-embedding) | |
| pr_number | No | Filter results by GitHub PR number | |
| entry_type | No | Filter results by entry type | |
| start_date | No | Filter results from this date (YYYY-MM-DD) | |
| is_personal | No | ||
| include_team | No | Include team entries in the search results | |
| issue_number | No | Filter results by GitHub issue number | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| hint_on_empty | No | Include hint when no results found (default: true) | |
| project_number | No | Filter results by project number | |
| workflow_run_id | No | Filter results by GitHub Actions workflow run ID | |
| include_archived | No | ||
| similarity_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| hint | No | |
| count | No | |
| error | No | Human-readable error message |
| query | No | |
| details | No | Additional error context |
| entries | No | |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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 genuinely new context: entries are auto-indexed on creation and the index can drift and be rebuilt, plus how threshold values change result breadth. Pagination and limit behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then modes, then the tuning advice, then the index-maintenance escape hatch. Every sentence carries information an agent would otherwise have to guess at.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, zero-required tool with an output schema and rich annotations, the description covers the key modes, the tunable that matters most, and the failure/recovery path. The remaining gap is routing: nothing tells the agent when to prefer this over search_entries, cross_team_search, or team_semantic_search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 76%, so most parameters are documented structurally, but the description adds the one thing the schema omits entirely: what similarity_threshold actually does and how to tune it. It also clarifies the entry_id mode ('find-related-by-ID'). However, several of the 17 parameters (is_personal, include_archived, include_team, limit) get no prose attention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Perform semantic/vector search on journal entries using AI embeddings') and names the two operating modes (find-related-by-ID vs. metadata filtering). It implicitly distinguishes itself from keyword siblings like search_entries via the word 'semantic', but never names an actual sibling, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete tuning guidance for the threshold (0.25 default, 0.15-0.2 for broader, 0.4+ for strict) and explicitly routes to rebuild_vector_index when the index has drifted โ a real alternative-selection rule. It lacks guidance on when to choose this over search_entries or team_semantic_search, which keeps it below a 5.
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 AliasAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | The raw author name to map (e.g., "Chris" or "GitHub: neverinfamous") | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| canonical_author | Yes | The canonical author identity to map the alias to (e.g., "christopher") |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| alias | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | The role to assign | |
| author | Yes | The author ID/username to add | |
| display_name | No | Optional display name | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| member | No | |
| details | No | Additional error context |
| message | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 IndexBIdempotentInspect
Add a specific team entry to the semantic search vector index. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| use_test_db | No | ||
| workspace_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| path | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| filename | No | |
| sizeBytes | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | No | ||
| auto_index | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| indexStatuses | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesADestructiveInspect
Delete multiple existing team journal entries in a single transaction. Max 50 per batch. Can only delete entries you authored.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_ids | No | ||
| permanent | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| deleted | No | |
| details | No | Additional error context |
| success | No | |
| warning | No | |
| category | No | Error category (validation, query, connection, internal) |
| notFound | No | |
| permanent | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | No | ||
| auto_index | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| notFound | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| indexStatuses | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 AuthorsADestructiveInspect
Retroactively rewrite all past entries matching an author's aliases to the canonical author name. Requires admin role. This operation modifies database entries.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| canonical_author | Yes | The canonical author name. All entries matching any of this author's aliases will be updated to use this canonical name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| updated_count | No | |
| canonical_author | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags 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. | |
| author | No | Override author name (default: auto-detected) | |
| pr_url | No | ||
| content | No | Markdown-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_url | No | ||
| pr_number | No | ||
| pr_status | No | ||
| entry_type | No | Entry 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_id | No | Agent session ID for thread isolation (usually conversation ID). | |
| trust_score | No | Heuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified). | |
| auto_context | No | ||
| impact_score | No | Heuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs). | |
| issue_number | No | ||
| workspace_id | No | REQUIRED. The repository name (e.g. adamic). Do not use numeric project IDs or "workspace" as the key. | |
| project_owner | No | Owner of the project/task. | |
| relationships | No | Optional array of links to previous entries/flags to establish relationships immediately upon creation. Types: "resolves", "depends_on", "implements", "relates_to", "references", "evolves_from" | |
| workflow_name | No | ||
| project_number | No | Numeric project ID (e.g., 1, 14). This is now optional; workspace_id is preferred. | |
| workflow_run_id | No | ||
| workflow_status | No | ||
| significance_type | No | ||
| validation_status | No | Current validation status of the entry (passed, none, failed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| author | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntryCDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| expected_version | No | REQUIRED for safe deletion to prevent optimistic concurrency gaps. Get this from get_entry_by_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesBRead-onlyIdempotentInspect
Export team entries in JSON or Markdown format with optional date range, type, and tag filters. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| format | No | json | |
| end_date | No | ||
| entry_type | No | ||
| start_date | No | ||
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| count | No | |
| error | No | Human-readable error message |
| format | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| truncated | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MarkdownBIdempotentInspect
Export team entries as frontmattered Markdown files
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags | |
| limit | No | Max entries to export (default: 100, max: 500) | |
| end_date | No | End date filter (YYYY-MM-DD) | |
| output_dir | No | Target directory for .md files | |
| start_date | No | Start date filter (YYYY-MM-DD) | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| files | No | |
| details | No | Additional error context |
| skipped | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| output_dir | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| exported_count | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MatrixBRead-onlyIdempotentInspect
Analyze cross-author collaboration: activity heatmap per period, cross-linking patterns between authors, and impact factor (inbound links). Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| period | No | month | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| impactFactor | No | |
| totalAuthors | No | |
| totalEntries | No | |
| authorActivity | No | |
| crossAuthorLinks | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 InsightsBRead-onlyIdempotentInspect
Analyze patterns across all GitHub Projects tracked in team entries. Use for architecture planning. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max projects to return | |
| end_date | No | End date (YYYY-MM-DD) | |
| start_date | No | Start date (YYYY-MM-DD) | |
| min_entries | No | Minimum entries to include project | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| project_count | No | |
| total_entries | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| inactive_projects | No | |
| time_distribution | No | |
| inactiveThresholdDays | No |
TDQS
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.
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.
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.
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.
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.
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 IDARead-onlyIdempotentInspect
Get a specific team entry by ID with full details including relationships and importance score. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| include_relationships | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| importance | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| relationships | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MemberBRead-onlyIdempotentInspect
Get details about a specific team member. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | The author ID/username to fetch | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| member | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesCRead-onlyIdempotentInspect
Get recent entries from the team database. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | Cursor for pagination | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 StatisticsBRead-onlyIdempotentInspect
Get statistics for the team database including entry counts, types, top tags, and contributor breakdown. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | week | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| authors | No | |
| details | No | Additional error context |
| success | No | |
| topTags | No | |
| category | No | Error category (validation, query, connection, internal) |
| entryTypes | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| totalEntries | No | |
| periodEntries | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 StatsBRead-onlyIdempotentInspect
Get statistics about the team vector search index (item count, model, dimensions). Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| available | Yes | |
| itemCount | No | |
| modelName | No | |
| dimensions | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files to process (default: 100, max: 500) | |
| dry_run | No | Parse and validate without writing to database | |
| source_dir | No | Directory containing files to import | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| source_format | No | Source format (notion, obsidian, logseq) | |
| project_number | No | ||
| default_entry_type | No | Fallback entry type if heuristics cannot determine one |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| errors | No | |
| created | No | |
| details | No | Additional error context |
| dry_run | No | |
| skipped | No | |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max files to process (default: 100, max: 500) | |
| dry_run | No | Parse and validate without writing to database | |
| source_dir | No | Directory containing .md files to import | |
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| errors | No | |
| created | No | |
| details | No | Additional error context |
| dry_run | No | |
| skipped | No | |
| success | No | |
| updated | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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_link_entriesLink Team EntriesCInspect
Create a relationship between two team entries. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| type | No | ||
| to_id | No | ||
| from_id | No | ||
| description | No | ||
| to_entry_id | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| from_entry_id | No | ||
| project_number | No | ||
| relationship_type | No | references |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| duplicate | No | True if relationship already existed |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| relationship | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-idempotent, non-destructive, closed-world behavior, and the description is consistent with them. The description adds the TEAM_DB_PATH prerequisite, but it does not explain duplicate handling, permissions, or side effects beyond 'create a relationship'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the operation and prerequisite are front-loaded. It is efficient, though the extreme brevity contributes to gaps captured in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation with very low schema description coverage, this definition is incomplete: it doesn't explain parameter aliases, relationship semantics, or required/optional usage. Output schema exists and annotations cover safety, but the invocation-critical parameter context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 11 parameters with only 9% schema description coverage; just workspace_id is documented. The description provides no meaning for the many ambiguous aliases (to/from/to_id/from_id/to_entry_id/from_entry_id) or for relationship_type and project_number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('a relationship between two team entries'), and the 'team' qualifier differentiates it from the sibling link_entries. It does not name an alternative explicitly, so it is clear but not fully sibling-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only a prerequisite is stated ('Requires TEAM_DB_PATH'); there is no guidance on when to use this versus link_entries, team_visualize_relationships, or other relationship tools. The agent must infer the team-only scope from the name.
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 AliasesARead-onlyIdempotentInspect
List all registered author aliases. Requires admin role.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| canonical_author | No | Optional canonical author to filter aliases by |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| aliases | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 BackupsBRead-onlyIdempotentInspect
List all available backup files for the team database. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| hint | No | |
| error | No | Human-readable error message |
| total | No | |
| backups | No | |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| backupsDirectory | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EntriesBRead-onlyIdempotentInspect
List recently soft-deleted team entries that can be restored. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MembersBRead-onlyIdempotentInspect
List all registered team members and their roles. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| members | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 TagsARead-onlyIdempotentInspect
List all tags used in the team database with usage counts. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| tags | No | |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source_tag | No | ||
| target_tag | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| sourceDeleted | No | |
| entriesUpdated | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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]
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| partial | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| failedEntries | No | |
| entriesIndexed | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 AliasADestructiveInspect
Remove an author alias mapping. Requires admin role.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | The alias mapping to remove | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 MemberBDestructiveInspect
Remove a member from the team. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | The author ID/username to remove | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 AuthorARead-onlyIdempotentInspect
Resolve a raw author name to its canonical identity using registered aliases. Requires admin role.
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | The raw author name to resolve | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| is_aliased | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| original_author | No | |
| canonical_author | No | |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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_searchSearch Team EntriesARead-onlyIdempotentInspect
Search entries in the team database by text and/or 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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| cursor | No | Cursor for pagination | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| fuzzy_match | No | ||
| auto_correct | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely new context the schema can't convey โ the team DB is a shared multi-tenant domain and cross-project leakage is a real risk. It does not cover pagination behavior or what happens if project_number is omitted despite the 'MUST' language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then prerequisite, then the highest-risk constraint. The emoji warning styling is mildly noisy but the content behind it earns its place for a multi-tenant search.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter read-only search with an output schema and full annotations, the description covers purpose, environment prerequisite, and the key isolation requirement. Gaps remain around pagination/sorting defaults and the required-vs-optional discrepancy on project_number, which an agent could trip over.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 30% (10 params, 3 described), so the description must compensate. It does explain what query/tags do and turns project_number into a semantic isolation requirement, but leaves limit, fuzzy_match, auto_correct, include_archived, and cursor unexplained, and never reconciles the 'MUST specify project_number' claim with the schema marking zero required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search entries in the team database') plus the two search axes (text and/or tags), which clearly separates it from mutation siblings like team_create_entry. It does not explicitly differentiate itself from close siblings such as team_semantic_search or team_search_by_date_range, so the agent must infer which search variant applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite (TEAM_DB_PATH) and a hard usage constraint (must specify project_number to isolate results to a project). It stops short of naming alternatives โ nothing tells the agent when to prefer search_entries, semantic_search, or team_search_by_date_range instead.
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 RangeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| cursor | No | Cursor for pagination | |
| sort_by | No | Sort results by timestamp (default) or importance score | timestamp |
| end_date | No | End date (YYYY-MM-DD) | |
| entry_type | No | ||
| start_date | No | Start date (YYYY-MM-DD) | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_number | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| count | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| entries | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| next_cursor | No | Cursor for the next page of results |
| recoverable | No | Whether the error is recoverable |
| suggestions | No | Fuzzy matches when fuzzy_match=true and no exact results were found |
| correctedQuery | No | The corrected query when auto_correct=true and a confident match was found |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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_semantic_searchTeam Semantic SearchARead-onlyIdempotentInspect
Perform semantic/vector search on team entries using AI embeddings. Supports find-related-by-ID (entry_id) and metadata filters. Threshold default is 0.25 (try 0.15-0.2 for broader matches, 0.4+ for strict matches). Entries auto-indexed on creation. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | No | ||
| end_date | No | ||
| entry_id | No | Find entries related to this entry ID | |
| pr_number | No | Filter results by GitHub PR number | |
| entry_type | No | ||
| start_date | No | ||
| issue_number | No | Filter results by GitHub issue number | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| hint_on_empty | No | Include hint when no results found (default: true) | |
| project_number | No | ||
| workflow_run_id | No | Filter results by GitHub Actions workflow run ID | |
| include_archived | No | ||
| similarity_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| hint | No | |
| count | No | |
| error | No | Human-readable error message |
| query | No | |
| details | No | Additional error context |
| entries | No | |
| entryId | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real value beyond that: index freshness ('entries auto-indexed on creation') and an environment prerequisite ('requires TEAM_DB_PATH'), both of which affect whether results can be trusted. Return format is not described, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core action, then the two modes, then tuning guidance, then operational prerequisites. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter tool with an output schema, the description covers the essentials: what it searches, the two query modes, threshold tuning, index freshness, and the env requirement. The notable gap is that zero parameters are required, so the behavior of a bare call (no query, no entry_id, no filters) is undefined here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% across 15 parameters, so the description must carry weight. It does add threshold semantics and the entry_id relationship mode, which go beyond the schema. But tags, entry_type, start_date/end_date, limit, include_archived, project_number, and hint_on_empty receive no explanation in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: semantic/vector search over team entries using embeddings. This is clearly distinguishable from keyword-style siblings like team_search by the 'semantic/vector' framing. It does not, however, explicitly name which sibling to use instead, so an agent must infer the boundary from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives genuinely actionable guidance on the similarity_threshold knob (default 0.25, 0.15-0.2 for broader, 0.4+ for strict) and notes the find-related-by-ID mode via entry_id. It stops short of stating when to prefer this over team_search or cross_team_search, so the alternative-selection rule is left implicit.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| pr_url | No | ||
| content | No | Updated 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_id | No | ||
| issue_url | No | ||
| pr_number | No | ||
| pr_status | No | ||
| entry_type | No | ||
| session_id | No | Agent session ID for thread isolation (usually conversation ID). | |
| is_archived | No | ||
| trust_score | No | Heuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified). | |
| auto_context | No | ||
| impact_score | No | Heuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs). | |
| issue_number | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_owner | No | ||
| workflow_name | No | ||
| project_number | No | ||
| workflow_run_id | No | ||
| workflow_status | No | ||
| expected_version | No | ||
| significance_type | No | ||
| validation_status | No | Current validation status of the entry (passed, none, failed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | The new role to assign | |
| author | Yes | The author ID/username to update | |
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| member | No | |
| details | No | Additional error context |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 RelationshipsARead-onlyIdempotentInspect
Generate a Mermaid diagram showing relationships between team entries. Filter by entry ID, tag, or traverse to a specified depth. Requires TEAM_DB_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| depth | No | ||
| entry_id | No | ||
| use_test_db | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| mermaid | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| edgeCount | No | |
| nodeCount | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 HandlingBRead-onlyIdempotentInspect
Throws a specific type of error to verify the server formats and returns them correctly over MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Test error message | |
| error_type | No | ||
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 EchoBRead-onlyIdempotentInspect
A simple echo tool for testing connection and basic parameter parsing.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Hello | |
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| timestamp | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 NotificationsBRead-onlyIdempotentInspect
Triggers a sequence of progress notifications to verify the transport layer supports them.
| Name | Required | Description | Default |
|---|---|---|---|
| use_test_db | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | Yes | |
| success | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_filter | No | A comma-separated list of tool groups to enable, or "all" | |
| briefing_prs | No | ||
| project_number | No | ||
| briefing_issues | No | ||
| briefing_copilot | No | ||
| briefing_entries | No | ||
| briefing_pr_status | No | ||
| briefing_summaries | No | ||
| briefing_workflows | No | ||
| briefing_milestones | No | ||
| briefing_include_team | No | ||
| briefing_workflow_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | Yes | |
| updated | Yes | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| pr_url | No | ||
| content | No | Updated 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_id | No | ||
| issue_url | No | ||
| pr_number | No | ||
| pr_status | No | ||
| entry_type | No | ||
| session_id | No | Agent session ID for thread isolation. | |
| is_archived | No | ||
| is_personal | No | ||
| trust_score | No | Heuristic score (0.0-1.0) indicating confidence (0.3-0.5 for unverified, 0.9+ for verified). | |
| auto_context | No | ||
| impact_score | No | Heuristic score (0.0-1.0) indicating blast radius (0.9+ for core architecture, 0.1 for simple docs). | |
| issue_number | No | ||
| workspace_id | No | Optional workspace isolation identifier (e.g. "alpha"). Do not use numeric project IDs or "workspace" as the key. | |
| project_owner | No | ||
| workflow_name | No | ||
| project_number | No | ||
| workflow_run_id | No | ||
| workflow_status | No | ||
| expected_version | No | ||
| significance_type | No | ||
| validation_status | No | Current validation status of the entry (passed, none, failed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| entry | No | |
| error | No | Human-readable error message |
| details | No | Additional error context |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| suggestion | No | Suggested fix for the error |
| indexStatus | No | |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | LEAVE EMPTY to auto-detect | |
| owner | No | LEAVE EMPTY to auto-detect | |
| state | No | Set to "closed" to close the milestone | |
| title | No | New title | |
| due_on | No | New due date in YYYY-MM-DD format | |
| description | No | New description | |
| use_test_db | No | ||
| milestone_number | No | Milestone number to update |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| error | No | Human-readable error message |
| details | No | Additional error context |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| milestone | No | |
| suggestion | No | Suggested fix for the error |
| instruction | No | |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| requiresUserInput | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The current key/name of the project. | |
| new_name | No | The new key/name for the project (if renaming). | |
| use_test_db | No | ||
| absolute_path | No | The new absolute path to the local repository. | |
| project_number | No | The new GitHub Project number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| data | No | |
| error | No | Human-readable error message |
| items | No | |
| details | No | Additional error context |
| message | No | |
| project | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| projects | No | |
| suggestion | No | Suggested fix for the error |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
TDQS
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.
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.
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.
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.
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.
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 RelationshipsCRead-onlyIdempotentInspect
Generate a Mermaid diagram visualization of entry relationships
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| id | No | ||
| rel | No | ||
| keep | No | ||
| mode | No | ||
| path | No | ||
| tags | No | Filter entries by tags | |
| text | No | ||
| type | No | ||
| depth | No | Relationship traversal depth | |
| limit | No | Maximum entries to include | |
| message | No | ||
| entry_id | No | Specific entry ID to visualize (shows connected entries) | |
| description | No | ||
| workspace_id | No | ||
| project_number | No | ||
| relationship_type | No | Filter to show only this relationship type (e.g., blocked_by, implements) |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | Error code (e.g. VALIDATION_ERROR, INTERNAL_ERROR) |
| depth | No | |
| error | No | Human-readable error message |
| legend | No | |
| details | No | Additional error context |
| mermaid | No | |
| message | No | |
| success | No | |
| category | No | Error category (validation, query, connection, internal) |
| root_entry | No | |
| suggestion | No | Suggested fix for the error |
| entry_count | No | |
| recoverable | No | Whether the error is recoverable |
| aggregated_errors | No | Details of individual errors in a multi-step operation |
| relationship_count | No |
TDQS
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.
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.
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.
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.
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.
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.
113 tool updates
v9.0.0- First observed
add_kanban_item - First observed
add_to_vector_index - First observed
analyze_commit_patterns - First observed
backup_journal - First observed
batch_create_entries - First observed
batch_delete_entries - First observed
batch_update_entries - First observed
check_entry_staleness - First observed
cleanup_backups - First observed
close_github_issue_with_entry - First observed
create_entry - First observed
create_github_issue_with_entry - First observed
create_github_milestone - First observed
cross_team_search - First observed
delete_entry - First observed
delete_github_milestone - First observed
delete_kanban_item - First observed
delete_project - First observed
export_entries - First observed
export_markdown - First observed
get_commit_history - First observed
get_copilot_reviews - First observed
get_cross_project_insights - First observed
get_entry_by_id - First observed
get_entry_history - First observed
get_github_context - First observed
get_github_issue - First observed
get_github_issues - First observed
get_github_milestone - First observed
get_github_milestones - First observed
get_github_pr - First observed
get_github_prs - First observed
get_kanban_board - First observed
get_project - First observed
get_recent_entries - First observed
get_release_info - First observed
get_repo_insights - First observed
get_statistics - First observed
get_unreleased_commits - First observed
get_vector_index_stats - First observed
import_external - First observed
import_markdown - First observed
link_entries - First observed
list_backups - First observed
list_deleted_entries - First observed
list_projects - First observed
list_tags - First observed
load-briefing - First observed
mark_anchors_stale - First observed
memory_read_resource - First observed
merge_tags - First observed
mj_execute_code - First observed
mj_read_resource - First observed
mj_session_summary - First observed
move_kanban_item - First observed
read_resource - First observed
rebuild_vector_index - First observed
register_project - First observed
restore_backup - First observed
restore_entry - First observed
run_auto_prune - First observed
search_audit_log - First observed
search_by_date_range - First observed
search_commits - First observed
search_entries - First observed
semantic_search - First observed
team_add_author_alias - First observed
team_add_member - First observed
team_add_to_vector_index - First observed
team_backup - First observed
team_batch_create_entries - First observed
team_batch_delete_entries - First observed
team_batch_update_entries - First observed
team_consolidate_authors - First observed
team_create_entry - First observed
team_delete_entry - First observed
team_export_entries - First observed
team_export_markdown - First observed
team_get_collaboration_matrix - First observed
team_get_cross_project_insights - First observed
team_get_entry_by_id - First observed
team_get_member - First observed
team_get_recent - First observed
team_get_statistics - First observed
team_get_vector_index_stats - First observed
team_import_external - First observed
team_import_markdown - First observed
team_link_entries - First observed
team_list_author_aliases - First observed
team_list_backups - First observed
team_list_deleted_entries - First observed
team_list_members - First observed
team_list_tags - First observed
team_merge_tags - First observed
team_rebuild_vector_index - First observed
team_remove_author_alias - First observed
team_remove_member - First observed
team_resolve_author - First observed
team_restore_entry - First observed
team_search - First observed
team_search_by_date_range - First observed
team_semantic_search - First observed
team_update_entry - First observed
team_update_member_role - First observed
team_visualize_relationships - First observed
test_error_handling - First observed
test_simple - First observed
trigger_progress - First observed
update_configuration - First observed
update_entry - First observed
update_github_milestone - First observed
update_project - First observed
visualize_relationships
TDQS
Scored across 113 tools
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.
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.
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.
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
Related MCP Connectors
Shared memory across AI dev tools: each session hands its context to the next, not starting cold.
Shared project memory that keeps teammates and AI agents aligned across sessions.
Persistent cross-session memory shared by Codex, Claude Code, ChatGPT, and other AI agents.
Persistent engineering memory designed to follow developers across coding agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides AI coding assistants with persistent project memory by capturing development checkpoints during git commits, branch switches, and inactivity. It enables seamless task resumption through tools that retrieve session history, momentum, and synthesized re-entry briefings.12 npm3MIT
- AlicenseBqualityBmaintenancePersistent memory and session intelligence for AI coding assistants. Auto-tracks mistakes, decisions, and context via hooks. Mines your full session history for patterns, predictions, and cross-session search.2116MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI coding assistants with persistent, context-rich memory of a codebase, including documentation and git history, enabling recall across sessions.105Apache 2.0
- AlicenseNot gradedqualityDmaintenanceNever start from zero. Persistent session intelligence for AI coding assistants.34 npm1MIT