Project MCP
project-mcp is an intent-based MCP server for searching and managing project documentation, plans, and tasks.
Search project knowledge: Semantic search across
.project/,docs/, and root files, with intent mapping for “project”, “docs”, “plan”, “status”, “todos”, and more.Manage project files: Initialize
.project/structure and create/update ROADMAP, TODO, STATUS, index/contract, and DECISIONS files, including smart auto-detection of the right file.Task lifecycle: Create tasks with YAML metadata (ID, priority, status, owner, dependencies, estimates, tags), get dependency-aware next tasks, update/delete/search/list tasks, and sync the TODO dashboard.
Backlog management: Add/import/update/remove backlog items and promote them into active YAML task files.
Archive/reopen work: Archive completed tasks, list archived tasks, and unarchive them for further work.
Documentation authoring: Create/update docs, add release notes, update architecture docs, and list doc categories or the full doc structure.
Decisions & status: Add/list/get structured architecture decision records (ADRs) and post quick timestamped project status updates.
Roadmap planning: Add milestones with deliverables and read the roadmap.
Thought processing: Process brain-dump files into tasks, list/get thoughts, and archive processed thoughts with logging.
Quality checks: Lint project documentation for standards compliance, check project state, and auto-fix common issues.
Mentioned as an example OAuth provider in task creation documentation, indicating potential OAuth authentication integration capabilities.
Mentioned as an example OAuth provider in task creation documentation, indicating potential OAuth authentication integration capabilities.
Provides tools for managing and searching Markdown-based project documentation, including files like README.md, ROADMAP.md, TODO.md, and STATUS.md across .project/ and docs/ directories.
Provides tools for managing task files with YAML frontmatter, including creating, updating, and archiving tasks with structured metadata for project management workflows.
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., "@Project MCPwhat's the next task in the backlog?"
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.
project-mcp
Intent-based MCP server for project documentation — Maps natural language to the right sources automatically
When users say "project", "docs", or "todos", project-mcp automatically
searches the right directories—no configuration needed. It understands intent,
not just directory names.
⚡ Quick Start
Install
npm install project-mcpRelated MCP server: Planer MCP Server
Configure
Add to .mcp.json:
{
"mcpServers": {
"project": {
"command": "npx",
"args": ["-y", "project-mcp"]
}
}
}That's it. The server automatically finds and indexes:
.project/— Operational truth (plans, todos, status)Root markdown files — README.md, DEVELOPMENT.md, etc.
docs/— Reference documentation
Table of Contents
🎯 Why project-mcp?
The Problem: AI agents need to search project documentation, but:
Users say "project" not ".project/"
Different queries need different sources
Manual source mapping is error-prone
No standard way to organize project knowledge
The Solution: Intent-based search that maps language to sources automatically:
User Says | Searches |
"project" / "the project" |
|
"docs" / "documentation" | Only |
"plan" / "todos" / "roadmap" / "status" | Only |
🛠️ Available Tools (47)
Search Tools
Tool | Description | Use When |
| Intent-based search across all sources | User says "project" or asks about status/plans |
| Search reference documentation only | User specifically asks for "docs" |
| Get full file content | You know the exact file path |
| List all documentation files | Browsing available docs |
| Get directory structure | Understanding organization |
Project Management Tools
Tool | Description | Use When |
| Initialize | Starting a new project |
| Smart create/update based on content analysis | Auto-detect which file to update |
| Create or update ROADMAP.md | Planning milestones and phases |
| Create or update TODO.md | Managing project-wide todos |
| Create or update STATUS.md | Tracking project health |
| Create or update index.md (contract file) | Defining source mappings |
| Create or update DECISIONS.md | Recording architecture decisions |
| Check which project files exist | Before making changes |
Documentation Tools
Tool | Description | Use When |
| Create new doc in | Adding application documentation |
| Update existing doc in | Modifying reference docs |
| Add versioned release notes | Documenting releases |
| Create/update architecture docs | Documenting system design |
| List documentation categories | Understanding docs structure |
Backlog Tools
Tool | Description | Use When |
| Add single item to BACKLOG.md | Quick task creation |
| Read backlog with filtering/sorting | Viewing queued work |
| Update priority, title, tags, phase | Adjusting backlog items |
| Delete item without promoting | Removing cancelled work |
| Parse plan/roadmap and bulk add to BACKLOG.md | Populating from roadmap |
| Move task from BACKLOG to active work (creates YAML) | Starting work on a backlog item |
Task Management Tools
Tool | Description | Use When |
| Create active task directly (bypass backlog) | Urgent/immediate work |
| Read specific task by ID with full details | Viewing task details |
| Update any task field, transition status | Modifying existing tasks |
| Permanently remove a task (with confirmation) | Removing cancelled tasks |
| Search tasks by keyword in title/content | Finding specific tasks |
| Get dependency-aware next task(s) to work on | Determining what to do |
| List/filter tasks with summary dashboard | Reviewing all tasks |
| Generate TODO.md dashboard from active tasks | Updating the overview |
Archive Tools
Tool | Description | Use When |
| Move completed task to archive/ | Cleaning up done work |
| List tasks in archive with filtering | Reviewing completed history |
| Restore task from archive to active | Reopening completed work |
Decision & Status Tools
Tool | Description | Use When |
| Record ADR with structured format | Documenting architecture choices |
| Read specific decision by ADR ID | Viewing decision details |
| List/filter architecture ADRs | Reviewing past decisions |
| Quick timestamped status update | Reporting progress |
| Add milestone with deliverables | Planning future work |
| Read roadmap content | Viewing planned work |
Thoughts Tools
Tool | Description | Use When |
| Process brain dump files into tasks | Converting notes to actionable tasks |
| Archive processed thought files | Cleaning up processed notes |
| List unprocessed thought files | Reviewing pending brain dumps |
| List processed thought history | Reviewing what was processed |
| Read specific thought file | Viewing thought content |
Quality Tools
Tool | Description | Use When |
| Validate documentation against standards | Before commits, ensuring quality |
📋 Task Management System
Tasks flow from planning → backlog → active → archive. Only active tasks (10-30 items) are YAML files.
Workflow
ROADMAP.md ──→ import_tasks ──→ BACKLOG.md ──→ promote_task ──→ todos/*.md ──→ archive_task ──→ archive/
(plan) (extract) (queue) (activate) (work) (complete) (history)
hundreds ok hundreds ok 10-30 files YAML filesStage | Files | Purpose |
Planning |
| Phases, milestones, high-level |
Backlog |
| Prioritized queue, hundreds of items OK |
Active |
| YAML files with full metadata, 10-30 items |
Archive |
| Completed work history |
Task File Format (Active Tasks)
---
id: AUTH-001
title: Implement OAuth authentication
project: AUTH
priority: P0
status: todo
owner: cursor
depends_on:
- AUTH-002
blocked_by: []
tags:
- security
- feature
estimate: 2d
due: 2025-01-15
created: 2025-12-29
updated: 2025-12-29
---
# AUTH-001: Implement OAuth authentication
## Description
Implement OAuth 2.0 authentication flow...
## Subtasks
- [ ] Set up OAuth provider
- [ ] Implement callback handler
- [x] Configure environment variables
## NotesAgent Execution Loop
┌─────────────────────────────────────────────────────────────┐
│ 1. promote_task(task_id: "AUTH-001") │
│ → Creates todos/AUTH-001.md from BACKLOG.md │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 2. get_next_task() │
│ → Returns AUTH-001 (dependencies met, highest priority) │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 3. update_task(id: "AUTH-001", status: "in_progress") │
│ → Agent works on the task │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 4. update_task(id: "AUTH-001", status: "done") │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 5. archive_task(task_id: "AUTH-001") │
│ → Moves to archive/, keeps todos/ small │
└─────────────────────────────────────────────────────────────┘Key Features
Backlog-first: Plan hundreds of items in
BACKLOG.md, promote to active as neededSmall active queue: Only 10-30 YAML task files at a time, not hundreds
Stable IDs:
{PROJECT}-{NNN}format (e.g.,AUTH-001,API-042)Dependencies:
depends_onarray - task won't appear inget_next_taskuntil deps are donePriority Sorting: P0 (critical) → P3 (low) in all views
Status Workflow:
todo→in_progress→blocked|review→doneArchive history: Completed work preserved in
archive/for reference
🏗️ Project Structure Guide
Recommended Directory Structure
my-project/
├── .project/ # Operational truth (current state)
│ ├── index.md # Contract file (defines source mappings)
│ ├── BACKLOG.md # Prioritized work queue (hundreds of items OK)
│ ├── TODO.md # Task dashboard (auto-generated)
│ ├── ROADMAP.md # Project roadmap and milestones
│ ├── STATUS.md # Current project status
│ ├── DECISIONS.md # Architecture and design decisions
│ ├── todos/ # Active tasks (10-30 YAML files)
│ │ ├── AUTH-001.md
│ │ └── AUTH-002.md
│ └── archive/ # Completed tasks (history)
│ └── AUTH-000.md
│
├── docs/ # Reference truth (long-form docs)
│ ├── README.md
│ ├── architecture/
│ └── guides/
│
├── README.md # Project overview
└── CONTRIBUTING.md # Contribution guidelinesWhat Goes Where?
.project/ — Operational Truth
Purpose: Current state, plans, decisions, and active work.
File | Purpose |
| Contract file (defines how agents interpret sources) |
| Prioritized work queue (future tasks, hundreds OK) |
| Task dashboard (auto-generated by |
| Future plans, milestones, upcoming features |
| Current project status, recent changes, health |
| Architecture decisions, trade-offs, rationale |
| Active task files (10-30 items, YAML frontmatter) |
| Completed tasks (history, reference) |
docs/ — Reference Truth
Purpose: Long-form documentation, guides, and reference materials.
Architecture documentation
API references
How-to guides
Technical specifications
🎨 Intent Mapping
The server uses intent detection to route queries to the right sources:
User Query
│
├─ "project" / "the project"
│ └─→ Searches: .project/ + root files + docs/
│
├─ "docs" / "documentation"
│ └─→ Searches: docs/ only
│
├─ "plan" / "todos" / "roadmap" / "status"
│ └─→ Searches: .project/ only
│
└─ Default
└─→ Searches: All sourcesHow It Works
User query: "What's the project status?"
Intent detection: Keywords "status" → intent
planSource mapping:
plan→ searches only.project/Results: Returns
.project/STATUS.md,.project/TODO.md, etc.
📝 Documentation Examples
Example: .project/index.md (Contract File)
# Project Knowledge Index
## Contract for AI Agents
When a user says **"project"**, the canonical sources of truth are:
1. **`.project/`** — Current state, plans, todos, decisions
2. **Root markdown files** — README.md, DEVELOPMENT.md, etc.
3. **`docs/`** — Long-form reference documentation
## Principles
- **Natural language stays natural** - Users say "project" not ".project/"
- **Agents don't guess** - Explicit mappings defined here
- **Intent over structure** - Language maps to intent, not directory namesExample: Task Creation
{
"tool": "create_task",
"arguments": {
"title": "Implement OAuth authentication",
"project": "AUTH",
"priority": "P0",
"owner": "cursor",
"description": "Add OAuth 2.0 support for Google and GitHub",
"depends_on": ["AUTH-002"],
"estimate": "2d",
"tags": ["security", "feature"]
}
}Example: Getting Next Task
{
"tool": "get_next_task",
"arguments": {
"owner": "cursor",
"limit": 3
}
}Returns tasks sorted by priority where all dependencies are complete.
Example: Initialize Project
{
"tool": "init_project",
"arguments": {
"project_name": "My App",
"project_description": "A web application for task management"
}
}Creates .project/ with all standard files: index.md, TODO.md,
ROADMAP.md, STATUS.md, DECISIONS.md, and todos/ directory.
Example: Import Tasks to Backlog
{
"tool": "import_tasks",
"arguments": {
"source": ".project/ROADMAP.md",
"project": "APP",
"dry_run": true
}
}Parses the roadmap and adds tasks to BACKLOG.md. Use dry_run: true to
preview first.
Example: Promote Task to Active Work
{
"tool": "promote_task",
"arguments": {
"task_id": "APP-001",
"owner": "cursor",
"estimate": "2h"
}
}Moves task from BACKLOG.md to todos/APP-001.md with full YAML frontmatter.
Example: Archive Completed Task
{
"tool": "archive_task",
"arguments": {
"task_id": "APP-001"
}
}Moves completed task from todos/ to archive/ to keep active queue small.
⚙️ Configuration
Custom Documentation Directory
{
"mcpServers": {
"project": {
"command": "npx",
"args": ["-y", "project-mcp"],
"env": {
"DOCS_DIR": "/path/to/documentation"
}
}
}
}Custom Working Directory
{
"mcpServers": {
"project": {
"command": "npx",
"args": ["-y", "project-mcp"],
"cwd": "/path/to/project/root"
}
}
}🧪 Development
# Clone repository
git clone https://github.com/pouyanafisi/project-mcp.git
cd project-mcp
# Install dependencies
npm install
# Run tests
npm test
# Test the server
node src/index.js📚 Documentation
Examples — Usage examples and patterns
Contributing — How to contribute
Security — Security policy
Changelog — Version history
Release Notes v2.0.0 — Latest release
🤝 Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
📄 License
MIT License - see LICENSE for details.
Available Tools
42 toolsadd_decisionA
Adds a single architecture decision record (ADR) to DECISIONS.md. Creates a structured entry with title, context, decision, and consequences sections.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the decision (e.g., "Use PostgreSQL for primary database"). | |
| context | No | The context and problem statement that led to this decision. | |
| decision | Yes | The decision that was made. | |
| consequences | No | The positive and negative consequences of the decision. | |
| status | No | Status of the decision. Default: "accepted". | accepted |
| tags | No | Tags for categorization (e.g., ["database", "infrastructure"]). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behaviors. It states the tool writes to a file and creates structured sections, but does not mention whether it appends or overwrites, error conditions, or if it modifies existing entries. Gaps remain for a write 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?
Two sentences with no wasted words. The first sentence front-loads the action and target, the second adds detail on structure. Ideal conciseness.
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 6 parameters, no output schema, and no annotations, the description covers purpose and structure but lacks usage guidelines, behavioral transparency, and parameter cooperation details. It is minimally adequate but could provide more context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context by grouping params into sections (title, context, decision, consequences) but does not elaborate on individual parameter semantics beyond the existing schema descriptions.
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 ('Adds') and resource ('architecture decision record to DECISIONS.md'), clearly distinguishing it from sibling tools like 'get_decision' (read) and 'create_or_update_decisions' (update/upsert).
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 explicit guidance on when to use this tool versus alternatives like 'create_or_update_decisions' or 'list_decisions'. The context implicitly suggests it's for adding new records, but no when-not-to-use or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_roadmap_milestoneA
Adds a milestone or phase to ROADMAP.md. Creates a structured entry with title, description, target date, and deliverables.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Milestone title (e.g., "v1.0 Release", "Q1 2025"). | |
| description | No | Description of the milestone. | |
| target_date | No | Target date (e.g., "2025-03-01", "Q1 2025"). | |
| deliverables | No | List of deliverables for this milestone. | |
| status | No | Status of the milestone. Default: "planned". | planned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states it 'creates a structured entry' but does not disclose whether it appends, overwrites, or updates existing entries. No mention of file locking, error handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the action and resource, then lists key fields. No redundancy or filler. Efficient and to the point.
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 5 parameters and no output schema, the description provides basic purpose but lacks details on ordering, formatting conventions, or interaction with the existing file. It is adequate but not thorough for a file-modifying 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?
All 5 parameters have schema descriptions (100% coverage), so baseline is 3. The description merely repeats field names (title, description, target date, deliverables) without adding new semantic nuance or usage examples beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Adds') and the resource ('milestone or phase to ROADMAP.md'). It specifies the content it creates (title, description, target date, deliverables), distinguishing it from sibling tools like 'create_or_update_roadmap' which likely manages the entire file.
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 does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, it lacks context on prerequisites (e.g., the existence of ROADMAP.md) or exclusions (e.g., when to use 'create_or_update_roadmap' instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_backlogA
Adds a single item to BACKLOG.md. Use this for quick task creation without bulk import. Items are added to the specified priority section and can later be promoted to active work.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The task title/description. | |
| project | Yes | Project prefix for the task ID (e.g., "AUTH", "API"). | |
| priority | No | Priority level. Default: "P2". | P2 |
| tags | No | Optional tags for categorization. | |
| phase | No | Optional phase/milestone this task belongs to. | |
| subtasks | No | Optional subtasks to include. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses the tool adds to a priority section and mentions later promotion, but lacks details on side effects like file creation or overwrite 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, each adding unique value: action, usage context, and lifecycle hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, and lifecycle but does not describe output expectations. With no output schema, a brief note on result would be helpful but is not critical.
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 baseline is 3. The description adds no extra semantics beyond what the input schema already provides for each 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 states 'Adds a single item to BACKLOG.md' with a specific verb and resource, and distinguishes from the sibling tool 'import_tasks' by mentioning 'without bulk import'.
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?
Explicitly says 'Use this for quick task creation without bulk import', providing clear context. However, it does not explicitly name alternative tools for bulk import or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_taskA
Archives a completed task by moving it from todos/ to archive/. Keeps the active task queue small and focused. Archived tasks are preserved for history but excluded from get_next_task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to archive (e.g., "AUTH-001"). Must have status "done". | |
| force | No | Archive even if not marked done. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the mutation (moving) and the behavioral effect (excluded from get_next_task). However, it does not discuss reversibility (though unarchive_task exists) or any permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the key action, and contains no superfluous words. Every sentence adds 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?
The description adequately explains the purpose, effect, and state after archiving. Given the tool's simplicity and the presence of a sibling unarchive_task, it covers the essentials. No output schema exists, but the description does not need to explain return values for this mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both parameters have detailed descriptions in the schema. The description adds no additional meaning beyond what the schema already provides, so a baseline score of 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 clearly states the verb (archives), resource (task), and the effect (moving from todos to archive). It distinguishes from siblings like delete_task (deletion) and unarchive_task (reversal) by noting that archived tasks are preserved for history and excluded from get_next_task.
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 when to use (for completed tasks to keep queue focused) and mentions a precondition (task must have status 'done'). However, it does not explicitly state when not to use or list alternative tools beyond the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_thoughtA
Archives a processed thought file by moving it to .project/thoughts/todos/.archive/. Use this after you've created tasks from a thought file to keep the active thoughts folder clean. Also logs the archive action with timestamp and created task IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The thought file to archive (e.g., "my-ideas.md"). | |
| created_tasks | No | Array of task IDs that were created from this thought (e.g., ["AUTH-001", "AUTH-002"]). | |
| notes | No | Optional notes about the processing (e.g., "Consolidated 5 items into 2 tasks"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool moves the file to a specific directory and logs the archive action with timestamp and created task IDs. Since no annotations are provided, the description carries the full burden and adequately conveys the key behavioral traits, though it could be more explicit about side effects like file deletion.
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 core action, and every word adds value. It efficiently conveys purpose, usage, and a side effect without redundancy.
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 no annotations or output schema, the description covers the essential aspects: action, when to use, and logging behavior. It could be slightly more complete by mentioning recoverability or error cases, but it is sufficient for a straightforward file 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 input schema has 100% description coverage, so the description adds marginal value. However, it ties the 'created_tasks' parameter to the logging action and reinforces the purpose of 'file' and 'notes', enhancing understanding beyond schema alone.
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 verb 'Archives' and the resource 'processed thought file' with a specific destination path. It effectively distinguishes itself from sibling tools like 'archive_task' (which archives tasks) and 'process_thoughts' (which processes thoughts), making its unique purpose obvious.
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 explicitly says to use this tool after creating tasks from a thought file, providing clear context for its use. It does not explicitly state when not to use it or mention alternatives, but the context is sufficient for an agent to understand the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_project_stateA
Checks the current state of project management files. Returns which files exist (.project/index.md, ROADMAP.md, TODO.md, STATUS.md, DECISIONS.md) and provides a summary of project state. Use this before making changes to understand what exists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the tool returns file existence and a summary, but does not detail the summary format, error cases, or whether it also reads file contents. For a simple check, this is adequate but lacks depth.
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: first states action and outputs, second gives usage guidance. No redundant words, front-loaded with key 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?
For a simple state check with no parameters and no output schema, the description covers the tool's scope by listing specific files checked. It could elaborate on what the 'summary' includes, but overall it is complete enough for an AI agent to invoke 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 has zero parameters with 100% schema coverage. No parameter explanation is needed, and the description correctly adds no extraneous param info. Baseline 4 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?
Description clearly states the tool checks the current state of project management files, lists specific files (.project/index.md, ROADMAP.md, TODO.md, STATUS.md, DECISIONS.md), and provides a summary. This verb-resource combination is distinct from sibling tools like get_doc or get_roadmap.
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 explicitly advises 'Use this before making changes to understand what exists,' giving clear when-to-use guidance. It does not explicitly list alternative tools, but the purpose is sufficiently distinct among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_decisionsB
Creates or updates the DECISIONS.md file in .project/ directory. Use this when documenting architecture decisions, trade-offs, or rationale. Helps maintain a decision log for the project.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The decision content to add. Should include the decision, context, trade-offs, and rationale. | |
| decisionTitle | No | Optional: Title for the decision entry. If not provided, will extract from content or use a timestamp. | |
| replace | No | If true, replaces the entire file. If false (default), merges with existing content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It states 'creates or updates' but does not disclose potential destructive behavior (e.g., replacing the file) unless reading the replace parameter. No mention of side effects, auth requirements, or impact on existing content.
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 clear sentences that are front-loaded and easy to parse. No wasted words, though could be slightly more 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?
Given the tool has 3 well-described parameters and no output schema, the description adequately explains purpose but lacks details on file format, creation behavior for missing files, and differentiation from similar siblings. It is minimally 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?
The input schema has 100% coverage with detailed descriptions for all parameters. The tool description adds no additional meaning beyond what the schema provides, 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 clearly states the tool creates or updates a DECISIONS.md file in .project/ directory for documenting architecture decisions, trade-offs, or rationale. It is specific about the verb and resource, but does not explicitly differentiate from sibling 'add_decision'.
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 a clear use case ('when documenting architecture decisions...') but does not mention when to use alternatives like 'add_decision' or when not to use this tool. Provides context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_indexB
Creates or updates the index.md file in .project/ directory. This is the contract file that defines how agents should interpret sources. Use this when setting up project structure or updating source mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The contract content to add. Should define source mappings and how agents should interpret different queries. | |
| replace | No | If true, replaces the entire file. If false (default), merges with existing content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only mentions the basic action (create/update) and merge/replace behavior. It lacks details on potential side effects, permissions needed, or what happens to existing content when merging. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two sentences. The first sentence clearly states the action and resource, and the second provides context and usage. No unnecessary words or redundancy.
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 moderate complexity (2 params, no output schema), the description provides adequate context: purpose, usage scenario, and basic behavior. It does not explain return values, but given the simplicity, this is acceptable. Siblings are many but the tool's focus is unique enough.
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 covers both parameters with descriptions (100% coverage). The tool description repeats the schema's content description without adding new semantics. Given high schema coverage, a baseline score of 3 is appropriate as the description adds no extra 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?
The description clearly identifies the tool's action (creates or updates) and resource (index.md in .project/), and explains its role as a contract file. However, it does not explicitly differentiate from sibling tools like 'sync_todo_index' or 'manage_project_file', though the focus on index.md makes it distinct.
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 states when to use the tool ('when setting up project structure or updating source mappings'), which is helpful. However, it does not provide guidance on when not to use it or mention alternatives, leaving some ambiguity about overlap with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_roadmapA
Creates or updates the ROADMAP.md file in .project/ directory. Use this when planning future work, milestones, or phases. If the file exists, intelligently merges new content with existing roadmap.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The roadmap content to add. Can be a new section, milestone, or phase. The tool will merge with existing content if the file exists. | |
| section | No | Optional: The section to add to (e.g., "Q1 2025", "Phase 1", "Future Considerations"). If not provided, will append to appropriate section or create new. | |
| replace | No | If true, replaces the entire file. If false (default), merges with existing content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions merging behavior but does not detail the 'intelligent' merge logic, possible side effects, or failure scenarios. Essential behavioral traits like file locking or permission requirements are absent.
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 extremely concise with two sentences that cover purpose, usage context, and merge behavior. Every word adds value, and the structure is front-loaded with the core action.
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 the tool has 3 parameters and no output schema, the description adequately explains the primary function and merge behavior. However, it omits details about return values, error handling, and edge cases like empty content or file creation failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the notion of 'intelligent merging', but this is vague and does not significantly enhance understanding beyond the schema's parameter descriptions.
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?
Description clearly states the tool creates/updates the ROADMAP.md file in the .project/ directory. While it differentiates from siblings by specifying a separate file, it does not explicitly contrast with tools like 'add_roadmap_milestone' or 'create_or_update_decisions'.
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 advises using this tool 'when planning future work, milestones, or phases', providing context. However, it lacks guidance on when not to use it or alternatives, such as using 'add_roadmap_milestone' for adding specific milestones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_statusA
Creates or updates the STATUS.md file in .project/ directory. Use this when updating project health, recent changes, metrics, or current phase. Automatically updates the "Last Updated" timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The status update content. Can include current phase, health status, recent changes, metrics, risks, or next milestone. | |
| updateType | No | Optional: Type of update: "phase", "health", "changes", "metrics", "risks", "milestone", "general". Helps organize the update appropriately. | |
| replace | No | If true, replaces the entire file. If false (default), merges with existing content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals that the tool automatically updates the 'Last Updated' timestamp, which is useful. However, it does not clarify the difference between create and update behavior, nor mention any side effects like overwriting or merging.
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 core purpose, and every word adds value. No unnecessary 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?
Given the moderate complexity (3 params, no output schema, no annotations), the description provides sufficient context for the tool's basic usage. It could mention that no output is returned, but it's not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already well-described. The description reinforces that 'content' holds the update and 'replace' controls merging, but adds no new semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates or updates the STATUS.md file in the .project/ directory. It specifies the resource and action, but does not distinguish it from the sibling tool 'update_project_status', which may have overlapping functionality.
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 clear when-to-use context: when updating project health, recent changes, metrics, or current phase. However, it does not mention when not to use it or suggest alternative sibling tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_todoA
Creates or updates the TODO.md file in .project/ directory. Use this when adding tasks, marking items complete, or updating task status. Intelligently organizes tasks into sections (In Progress, Next Up, Blocked, Completed).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The task or todo item to add. Can be a single task or multiple tasks. Use markdown checkbox format: "- [ ] Task description". | |
| section | No | Optional: The section to add to: "in_progress", "next_up", "blocked", "completed". If not provided, defaults to "next_up". | |
| markComplete | No | Optional: Task description to mark as complete. Will move from current section to "Completed" section. | |
| replace | No | If true, replaces the entire file. If false (default), merges with existing content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions 'intelligently organizes tasks into sections' but doesn't explain the criteria or whether it merges intelligently. It doesn't describe side effects, idempotency, or return values. Vague on how content and markComplete interact.
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 concise sentences that front-load the main purpose. Every sentence adds information without redundancy. Efficient and clear.
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 4 parameters and no output schema. The description covers main use cases but lacks details on return value, interaction of parameters (e.g., can content and markComplete be used together?), and the 'intelligently organizes' behavior. More completeness would be beneficial for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining markdown checkbox format for content, enumerating sections with defaults, and clarifying that markComplete moves tasks to Completed. This goes beyond the schema alone.
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 specific verbs ('creates or updates', 'adding tasks', 'marking complete') and identifies the resource ('TODO.md file in .project/ directory'). It clearly distinguishes from sibling tools that handle individual tasks or other files.
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?
Explicitly states when to use: 'when adding tasks, marking items complete, or updating task status'. Does not explicitly state when not to use, but the context of sibling tools (e.g., delete_task, list_tasks) implies alternatives for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
Creates a new task with YAML frontmatter metadata. Uses Jira-like IDs (e.g., AUTH-001, API-042) for stable references. Supports dependencies, priorities, estimates, due dates, and tags. Agents can determine execution order by checking dependencies and priorities.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title of the task (e.g., "Implement OAuth authentication", "Fix login bug"). | |
| project | Yes | Project/Epic identifier used in the task ID (e.g., "AUTH", "API", "FRONTEND"). Will be uppercased. The task ID will be {PROJECT}-{NNN}. | |
| description | No | Detailed description of the task. Can include markdown formatting. | |
| owner | No | Who is responsible for this task (e.g., "cursor", "john-doe", "backend-team"). | |
| priority | No | Priority level: "P0" (critical/blocker), "P1" (high), "P2" (medium/default), "P3" (low). | P2 |
| status | No | Current status: "todo" (not started), "in_progress" (being worked on), "blocked" (waiting on something), "review" (needs review), "done" (completed). | todo |
| depends_on | No | Array of task IDs this task depends on (e.g., ["AUTH-001", "AUTH-002"]). Task cannot start until dependencies are done. | |
| blocked_by | No | Array of task IDs or external blockers (e.g., ["AUTH-003", "waiting-on-api-key"]). Different from depends_on - these are blockers that prevent progress. | |
| estimate | No | Time estimate (e.g., "2h", "1d", "3d", "1w"). Use h=hours, d=days, w=weeks. | |
| due | No | Due date in YYYY-MM-DD format (e.g., "2025-01-15"). | |
| tags | No | Array of tags for categorization (e.g., ["security", "urgent", "tech-debt", "feature"]). | |
| subtasks | No | Array of subtask descriptions. Will be rendered as a checklist in the task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the ID format and supported features (dependencies, priorities) but does not mention side effects, permissions, or whether creation triggers any indexing or notifications.
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 4 sentences and front-loaded with the main purpose. It is reasonably concise, though a few words could be trimmed without loss of 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?
Given the tool has 12 parameters and no output schema, the description provides high-level capability overview but lacks details on return values or how the created task is represented. The mention of YAML frontmatter hints at output but is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds value by explaining Jira-like IDs and the fact that agents can use dependencies/priorities for execution order, but it does not deeply enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'creates' and resource 'task', and distinguishes the tool from siblings like 'update_task', 'delete_task', etc., by specifying features like YAML frontmatter and Jira-like IDs.
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 does not explicitly state when to use this tool versus alternatives like 'create_or_update_todo' or 'import_tasks'. It mentions agents can use dependencies and priorities to determine execution order, providing some context but lacking clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskA
Permanently deletes a task from todos/. Use with caution - this cannot be undone. Consider using archive_task instead for completed tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to delete (e.g., "AUTH-001"). | |
| confirm | No | Must be true to confirm deletion. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: permanence and irreversibility. With no annotations present, this is sufficient for a simple delete operation, though it does not cover potential auth requirements or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, followed by safety caution and alternative suggestion. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description fully covers what an agent needs to know: purpose, irreversibility, and alternative action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what the schema provides, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'deletes' and resource 'task from todos/' and distinguishes it from the sibling tool 'archive_task' for alternative action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises caution due to permanence and recommends using 'archive_task' for completed tasks, providing clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_backlogA
Reads and returns the current backlog contents with optional filtering. Shows tasks organized by priority with counts and summary.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | Filter by priority level. | |
| project | No | Filter by project prefix. | |
| include_promoted | No | Include already-promoted items. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates a read operation but does not disclose potential side effects, error conditions, or performance characteristics. The mention of 'counts and summary' adds some output 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?
Two sentences with no redundancy. Action is front-loaded, and output format is succinctly described.
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?
Adequately describes output format (priority-organized with counts and summary) for a read tool. Lacks details on error handling or pagination, but is sufficient given the simplicity.
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 the description adds no additional meaning beyond the schema's parameter descriptions. 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?
Clearly states the action ('Reads and returns'), the resource ('current backlog contents'), and the format ('organized by priority with counts and summary'). Distinguishes from sibling tools like add_to_backlog and remove_from_backlog.
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 tool versus alternatives. Does not mention when not to use it or suggest sibling tools like add_to_backlog for modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decisionA
Reads a specific architecture decision by ADR ID. Returns the full decision content including context, decision, and consequences.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ADR ID to retrieve (e.g., "ADR-001", "001", or just "1"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a read operation but lacks details on side effects, authentication needs, or rate limits. Adequate but minimal.
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 convey all necessary information without any fluff. Highly efficient and 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?
For a simple read operation with one parameter and no output schema, the description is sufficiently complete. It covers what the tool does and what it returns.
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 100% coverage for the single parameter, and the description adds value by explaining the ID format (e.g., 'ADR-001', '001', '1'). This goes beyond the 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?
The description clearly states it reads a specific architecture decision by ADR ID, and specifies the returned content includes context, decision, and consequences. It effectively distinguishes from siblings like list_decisions and add_decision.
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 when to use (when you need a specific decision's details), but does not explicitly state when NOT to use or provide alternatives. However, the context of siblings makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docA
Get the full content of a specific file. Supports files from .project/, root-level, or docs/. Use the path as returned from search results.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file. Can be relative to project root (e.g., ".project/index.md", "README.md", "docs/architecture/ARCHITECTURE_SPEC.md"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses supported file locations and that it returns full content. Does not mention potential limitations like file size or encoding, but is reasonable for a simple retrieval 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 sentences with no filler. Purpose is front-loaded, and additional context is efficiently provided. 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?
Given low complexity (one parameter, no output schema, no annotations), the description is mostly complete. It covers purpose and path usage. The return format could be implied (full content as text), but no further detail is needed.
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% for the single 'path' parameter. Description adds value by specifying supported directories and suggesting using paths from search results, which clarifies permissible values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get the full content of a specific file' with specific supported directories and path usage guidance, distinguishing it from sibling tools like search_docs or list_docs.
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?
Explicitly advises to use the path from search results, indicating when to use this tool. Does not explicitly mention when not to use or alternatives, but is sufficient for the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_structureA
Get the complete documentation directory structure with file paths and descriptions. Useful for understanding the organization of documentation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It describes a read operation ('Get') without mentioning any side effects, permissions, or potential costs. While it does not contradict annotations (none exist), it lacks details about behavior, such as whether the operation is cheap or if caching applies. This is adequate for a simple retrieval but not exemplary.
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 concise, consisting of two short sentences. The first sentence clearly states the tool's purpose and output. The second provides context on usage. No extraneous information is present, and the key points are 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?
Given the tool has no parameters and no output schema, the description is nearly complete. It explains what the tool returns ('file paths and descriptions') and its utility. Missing is a more detailed description of the output format (e.g., flat list or nested structure), but the description is sufficient for understanding the tool's basic function.
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 has no parameters, so the input schema provides full coverage (100%). The description does not need to add parameter information. Per the guidelines, 0 parameters warrant a baseline of 4.
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 ('Get') and the resource ('complete documentation directory structure'), specifying it includes file paths and descriptions. This distinguishes it from sibling tools like list_docs or get_doc, which operate on individual documents or lists.
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 'Useful for understanding the organization of documentation', which implies when to use the tool. However, it does not explicitly exclude cases or suggest alternatives, such as noting when to use list_docs instead. The guidance is present but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_next_taskA
Returns the next task(s) that should be worked on. Considers: dependencies (only returns tasks whose dependencies are done), priority (P0 first), status (excludes done/blocked), and optionally filters by owner or project. This is the key tool for agentic execution - call this to know what to do next.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | Filter by owner. Only return tasks assigned to this owner. | |
| project | No | Filter by project. Only return tasks from this project. | |
| include_blocked | No | Include blocked tasks in results. Default: false. | |
| limit | No | Maximum number of tasks to return. Default: 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns tasks with done dependencies, high priority, and non-done/blocked status. It also mentions optional filters. Although no annotations are provided, the description sufficiently covers behavioral traits for a read 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?
The description is concise (two sentences), front-loaded with the purpose, and uses efficient language. Every sentence adds value without redundancy.
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 description covers the tool's purpose, considerations, and usage hint. It is complete for a tool with four optional parameters and no output schema, as the return type (tasks) is clear from 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 coverage is 100% with good parameter descriptions. The description adds value by explaining how parameters (e.g., owner, project) interact with the tool's logic, going beyond the schema alone.
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 tool returns the next task(s) to work on based on dependencies, priority, and status. It explicitly distinguishes itself as the key tool for agentic execution, which differentiates it from sibling tools like list_tasks or search_tasks.
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 provides clear guidance by stating 'call this to know what to do next' and explaining the filtering logic. It does not explicitly mention when not to use it or compare to alternatives, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_roadmapA
Reads the current roadmap content from ROADMAP.md. Returns milestones, phases, and planned work.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Optional: Return only a specific section/milestone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description captures the basic read-only nature and return content. However, it lacks details on potential side effects, authorization needs, or any other behavioral traits beyond the straightforward read 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?
The description is concise at two sentences, directly stating the action and output without any redundant or unnecessary 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?
Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers its purpose and return value. It explains what the tool does and what it returns, which is 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 100% for the single optional parameter 'section'. The description adds no extra meaning beyond what the input schema already provides, so it meets 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?
The description clearly states the tool reads the current roadmap content from ROADMAP.md and returns milestones, phases, and planned work. It specifies the verb 'reads' and the resource, and distinguishes from sibling tools like get_backlog or get_decision.
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 does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it or list any prerequisites. It simply implies the context of reading the roadmap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskA
Reads and returns a specific task by ID. Shows all metadata including frontmatter, description, subtasks, and notes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to read (e.g., "AUTH-001"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly calls this a 'reads' operation, implying read-only behavior. Discloses returned fields (frontmatter, description, subtasks, notes). With no annotations, the description adequately conveys the tool's side-effect-free nature.
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 efficient sentences with no wasted words. Front-loaded with main action and required input, then lists what is returned.
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 simple get-by-id tool with one parameter and no output schema, the description adequately explains what is returned. Could optionally mention that the output includes the full task object, but the listed fields suffice.
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 covers the single parameter with an example. Description reinforces 'by ID' but adds no new semantic details beyond what the schema provides. Schema coverage is 100%, 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?
Clearly states action (reads/returns) and resource (specific task by ID). Distinguishes from siblings like list_tasks or search_tasks by specifying retrieval of a single task's full metadata.
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?
Implies use when you have a task ID and need all metadata, but lacks explicit guidance on when to prefer this over siblings like get_next_task or search_tasks. No exclusions or conditions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thoughtC
Reads a specific thought file and returns its raw content for review.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The thought file to read (e.g., "my-ideas.md"). | |
| category | No | The category/subdirectory. Default: "todos". | todos |
| from_archive | No | Read from archive instead of active thoughts. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It indicates a read operation but omits details like permissions required, side effects (none expected), or any limitations (e.g., file size). The lack of disclosure beyond the basic action leaves behavioral 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?
The description is a single, front-loaded sentence with no filler. Every word contributes to the core purpose, achieving maximum conciseness without sacrificing 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?
With no output schema, the description should clarify the return format or structure. It merely states 'raw content for review', which is insufficient for an agent to know how to interpret the result. Additionally, it does not explain the file format or any encoding, making the description incomplete given the tool's three parameters.
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 has 100% coverage with descriptions for all three parameters. The tool description adds no further meaning beyond the schema, so it meets the baseline expectation. No contradictions or enhancements observed.
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 verb (Reads), resource (specific thought file), and outcome (returns raw content). It distinguishes from sibling tools like list_thoughts or archive_thought by focusing on a single file retrieval, though it could be more explicit about the specific file selection mechanism.
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 tool versus alternatives such as list_thoughts or get_doc. The description does not mention exclusions, prerequisites, or context, leaving the agent to 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.
import_tasksA
Parses a plan document and imports tasks to BACKLOG.md (not individual files). Use this to populate the backlog from a roadmap or requirements doc. Tasks stay in BACKLOG until promoted to active work via promote_task.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Path to the source file to parse (e.g., "ROADMAP.md", ".project/ROADMAP.md"). Can also be raw markdown content if source_type is "content". | |
| source_type | No | Type of source: "file" (path to file) or "content" (raw markdown). Default: "file". | file |
| project | Yes | Project prefix for task IDs (e.g., "AUTH", "API"). Required. | |
| phase | No | Optional: Only import tasks from a specific phase/section. | |
| default_priority | No | Default priority for tasks. Default: "P2". | P2 |
| dry_run | No | If true, shows what would be imported without modifying BACKLOG.md. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses the main action (import to BACKLOG.md) and mentions dry_run via schema. However, it lacks details on side effects (e.g., overwrites or appends?), error handling, idempotence, or what happens on duplicate tasks.
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 concise sentences (49 words) front-loaded with action. Every sentence adds value, with no fluff or repetition of schema details.
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?
No output schema exists, so description should hint at return value or side effects. It does not mention what the tool returns (if anything). For a file-modifying tool, more details on confirmation or error outcomes would improve 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?
Schema has 100% description coverage for all 6 parameters. Description adds no extra meaning beyond 'parses a plan document' and importing to BACKLOG.md. Baseline 3 is appropriate since schema already documents parameters well.
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?
Description clearly states it parses a plan document and imports tasks to BACKLOG.md, not individual files. It explicitly contrasts with personal creation and mentions promotion via promote_task, distinguishing it from siblings like add_to_backlog, create_task, and promote_task.
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?
Explicitly states 'Use this to populate the backlog from a roadmap or requirements doc.' It also explains the task lifecycle (stay in BACKLOG until promoted) and references promote_task. No explicit 'when not to use' for alternatives, but the purpose is clear enough for a capable agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_projectA
Initializes the .project/ directory with all standard files following strict templates. Creates index.md (contract), TODO.md (dashboard), BACKLOG.md (prioritized work queue), ROADMAP.md, STATUS.md, DECISIONS.md, and todos/ directory. Use this to bootstrap a new project with proper structure.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | Name of the project. Used in headers and metadata. | |
| project_description | No | Brief description of the project. | |
| overwrite | No | If true, overwrites existing files. Default: false (skip existing). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions file creation and overwrite behavior (skip vs. overwrite). However, it does not specify whether the tool replaces the entire .project/ directory or what happens if it already exists without the overwrite flag, which could be important for the agent.
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, focused sentence followed by a list of files, with the usage guidance appended. Every sentence is relevant and front-loaded with the core purpose.
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 the absence of annotations and output schema, the description covers the tool's purpose, inputs, and behavior reasonably well. It does not describe the return value, but that is acceptable for a setup tool with no output schema. The file list is helpful for the agent to understand the impact.
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%, but the description adds value by linking parameters to the files created and stating that 'project_name' is used in headers and metadata, which goes beyond the schema's description. The overwrite parameter's behavior is also clarified.
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 explicitly states it 'Initializes the .project/ directory with all standard files' and lists the specific files created. This clearly distinguishes it from sibling tools like create_or_update_index or add_decision, which operate on individual components rather than bootstrapping the entire 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?
The description includes 'Use this to bootstrap a new project with proper structure,' providing a clear when-to-use signal. It does not explicitly mention when not to use or alternatives, but the context of sibling tools makes this somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lint_project_docsA
Validates project documentation against standards. Checks for required files, valid frontmatter, broken dependencies, missing fields, and formatting issues. Can auto-fix common problems. Run this before commits to ensure documentation quality.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | If true, automatically fix issues that can be auto-corrected (missing timestamps, formatting, etc.). Default: false (report only). | |
| strict | No | If true, enforce stricter rules (all tasks must have estimates, due dates, descriptions). Default: false. | |
| scope | No | What to lint: "all" (everything), "tasks" (only task files), "docs" (only documentation files). Default: "all". | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states validation and auto-fix capability, implying mutation, but does not describe side effects, idempotency, or run safety. Partially transparent.
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 efficiently cover purpose, capabilities, and usage advice. No redundant text; each sentence serves a purpose.
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 3 optional parameters and no output schema, the description provides sufficient context: what it checks, when to use, and auto-fix option. Covers all necessary aspects.
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 parameters are well-documented in schema. The description adds high-level context but no additional semantics per parameter beyond the schema defaults and enums.
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 tool validates project documentation against standards, listing specific checks (required files, frontmatter, dependencies, etc.) and the ability to auto-fix. It is distinct from sibling tools, which are mostly CRUD operations and project management functions.
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?
Explicitly advises to run before commits to ensure quality, providing clear context. However, it does not mention when not to use or alternatives, though no direct sibling linter exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archived_tasksB
Lists tasks in the archive/ directory. Shows completed work history with optional filtering by project or date.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Filter by project prefix. | |
| limit | No | Maximum number of tasks to return. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions optional filtering but does not disclose other behaviors such as default ordering, pagination, or what happens if no tasks match. For a read operation, the description is adequate but lacks some details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded. It clearly states the main action and context. However, the inaccuracy about date filtering slightly detracts from its conciseness 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?
Given the tool's simplicity (2 optional parameters, no output schema), the description covers the core functionality. It lacks details on ordering, pagination behavior, and the absence of a date parameter is confusing. It is minimally 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?
The input schema has 100% description coverage, so baseline is 3. However, the description claims filtering by date, which is not a parameter, creating a contradiction. This inaccuracy reduces the score, as it does not add meaning and may mislead.
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 (lists tasks), the resource (archive/ directory), and the context (completed work history). It distinguishes from siblings like 'list_tasks' and 'archive_task'. However, it mentions optional filtering by date, but the input schema does not include a date parameter, which is a minor inaccuracy.
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 usage for viewing completed work history, suggesting it is for archived tasks rather than active ones. However, there is no explicit guidance on when to use this tool versus alternatives like 'list_tasks' or 'search_tasks', nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archived_thoughtsA
Lists all archived thought files with their processing history. Shows what thoughts were processed, when, and what tasks were created.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of archived thoughts to show. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states basic listing behavior, missing details like read-only nature, empty result handling, or performance implications.
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 action. No wasted words, clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple listing tool, mentions what info is shown. Lacks details on ordering, pagination, or whether full thought content is included. No output schema, so more context would help.
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% for the single parameter 'limit', with good description. Tool description does not add any extra meaning beyond the schema, 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?
Clearly states action (lists) and resource (archived thought files). Adds detail on what info is shown (processing history, timestamps, tasks). Distinguishes from sibling 'list_thoughts' by focusing on archived ones.
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?
Implies usage for archived thoughts, but no explicit guidance on when to use versus alternatives like 'list_thoughts'. Lacks when-not-to-use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decisionsA
Lists all architecture decisions from DECISIONS.md with optional filtering by status or tag.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status. | |
| tag | No | Filter by tag. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It states read operation (list) and filtering, but doesn't mention if it's read-only, what happens if file missing, or return format. Adequate but not thorough.
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?
Single sentence, 14 words, no fluff. Front-loaded with verb and resource. Efficiently conveys core functionality.
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?
No output schema exists, so description should clarify what the list contains. It doesn't mention return format (e.g., list of titles, IDs). Adequate but incomplete for an agent to fully understand output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description adds minimal value. It restates optional filtering but doesn't explain enum values (e.g., empty string) or tag semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists architecture decisions from a specific file (DECISIONS.md) with optional filtering. Differentiates from siblings like get_decision (single) and add_decision (add).
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?
Implied usage for listing decisions, but no explicit guidance on when to use vs. alternatives (e.g., get_decision for details) or when not to use. Many sibling tools exist without differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docsA
List all available documentation files organized by category. Use this to discover what documentation is available or to get an overview of the documentation structure.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: Filter by category. Options: product, architecture, operations, api, guides, reference, or leave empty for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description provides basic behavior: list operation with category organization. Lacks details on output format, but acceptable for a simple list 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 concise sentences with no waste, front-loaded with action.
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?
Fully sufficient for a simple list tool with one optional parameter and no output schema; covers discovery and overview use cases.
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 has high coverage (100%) with enum, description adds minimal context ('organized by category') beyond 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?
Clearly states it lists documentation files by category, distinct from sibling tools like get_doc (specific retrieval) and search_docs (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?
Explicitly says to use for discovering documentation or getting an overview; implicitly suggests alternatives like get_doc for specific files, but doesn't name them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksB
Lists all tasks with optional filtering. Returns a summary view of tasks organized by status and priority.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | Filter by project. | |
| owner | No | Filter by owner. | |
| status | No | Filter by status. | |
| priority | No | Filter by priority. | |
| tag | No | Filter by tag. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It briefly notes the output format (summary view by status/priority) but omits important details like read-only nature, pagination, authorization requirements, or limits. The description is insufficient for a safe agent invocation.
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, clear sentence that communicates purpose and key features without waste. However, it could be slightly more structured (e.g., separate filtering from output summary) but remains effective.
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 the tool has 5 optional parameters and no output schema or annotations, the description should explain how filters behave (e.g., AND logic), the output format in more detail, and any limitations. The current description leaves significant gaps for an agent to use 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 100%, so the baseline is 3. The description adds context that filters are optional and output is organized, but it does not clarify filter combination logic or the meaning of empty strings in enum fields. Thus it provides marginal added value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists all tasks'), the resource ('tasks'), and key features: optional filtering and organization by status and priority. It effectively distinguishes from sibling tools like 'get_task' (single task) and 'search_tasks' (full-text 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?
No explicit guidance on when to use this tool over siblings such as 'search_tasks' or 'list_archived_tasks'. The description implies it is for listing all tasks with filters but does not provide exclusion criteria or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_thoughtsB
Lists all thought files in the .project/thoughts/ directory structure. Shows available brain dump files organized by category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: Filter by thought category. Currently supported: "todos". | |
| include_archived | No | Include archived thoughts in the listing. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation, but does not detail behavior like sorting, empty results, or error handling. With no annotations, it carries the burden but provides only minimal transparency.
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 fluff. Efficient for a simple tool, though slightly more structure could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose and directory, but lacks mention of return format or behavior for edge cases. No output schema increases the need for description 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?
Schema coverage is 100%, so baseline is 3. The description mentions 'organized by category' which hints at the category parameter, but adds no extra meaning beyond the schema descriptions.
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 lists thought files in a directory, organized by category. It distinguishes from siblings like list_archived_thoughts by not mentioning archived, but does not explicitly exclude 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?
No guidance on when to use this tool versus alternatives like list_archived_thoughts or get_thought. Context about filtering or common use cases is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_project_fileA
Smart tool that automatically determines which project file to create or update based on context. Use this when making changes to the project - it will check project state and determine if index.md, ROADMAP.md, TODO.md, STATUS.md, or DECISIONS.md should be created/updated. This is the primary tool for managing project documentation during development.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action being performed: "planning" (creates/updates ROADMAP), "task" (creates/updates TODO), "status_change" (creates/updates STATUS), "decision" (creates/updates DECISIONS), "contract" (creates/updates index), "auto" (automatically determines based on content). | |
| content | Yes | The content to add or update. For "auto" mode, describe what you're doing and the tool will determine the appropriate file. | |
| fileType | No | Optional: Force a specific file type. If not provided and action is "auto", the tool will determine automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions automatic file determination based on context but does not detail side effects (e.g., overwrite vs. append), permissions needed, or what happens if a file is missing. The description provides moderate transparency but lacks depth.
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 long, with no redundant words. The first sentence clearly states the function, and the second provides usage context, making it efficient and 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?
The tool has 3 parameters with 2 enums and no output schema. The description adequately covers the tool's purpose and usage, but lacks details on return behavior or error handling. For its complexity, it is mostly 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 description coverage is 100%, so baseline is 3. The description adds value by explaining how the 'action' parameter maps to file types and how 'auto' mode works, going beyond the schema's enum descriptions.
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 tool's purpose: automatically determining which project file to create or update based on context. It specifies the files involved (index.md, ROADMAP.md, etc.) and positions itself as the primary tool for project documentation changes, distinguishing it from sibling tools.
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 says 'Use this when making changes to the project' and explains the automatic determination logic. However, it does not explicitly state when to use sibling tools (e.g., create_or_update_todo) instead, leaving some ambiguity for precise actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_thoughtsA
Reads brain dump markdown files from .project/thoughts/todos/ and returns the content along with project context for analysis.
This tool gathers:
Raw thought content - The unstructured brain dump as written
Project context - Existing tasks, roadmap milestones, decisions for reference
Task format guide - The YAML structure for creating tasks
YOU (the LLM) should then analyze the content to:
Understand the user's intent (explicit, shadow/underlying, practical)
Identify logical task groupings (consolidate related items)
Determine appropriate priorities based on context
Create well-structured tasks using create_task
After creating tasks, use archive_thought to archive the processed file
The tool does NOT automatically create tasks - it provides you with everything needed to make intelligent decisions about task creation.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Specific thought file to process (e.g., "my-ideas.md"). If not provided, processes all files in thoughts/todos/. | |
| project | Yes | Project prefix for task IDs when you create tasks (e.g., "AUTH", "API"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses read-only behavior (reads files) and that no automatic task creation occurs. Could mention if any side effects, but likely none.
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?
Well-structured with bullet points and clear sections. Front-loaded with main action. Some repetition in listing gathered items, but overall appropriately sized for 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?
Covers what tool does, returns, and intended subsequent actions. Lacks explicit comparison to sibling tools like list_thoughts, but sufficient given the detailed workflow guidance. Output schema absent but not critical for this read-and-analyze 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 descriptions already cover both parameters (file optional, project required) with examples. Description adds context about project as task ID prefix, but does not significantly enhance beyond schema's 100% 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 clearly states the tool reads brain dump markdown files and returns content with project context. It distinguishes from siblings like list_thoughts, get_thought, and archive_thought by explaining its analysis-oriented 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?
Explicitly outlines the workflow: analyze content, create tasks using create_task, then archive with archive_thought. It also states the tool does not auto-create tasks, setting clear expectations and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_taskA
Promotes a task from BACKLOG.md to an active YAML task file in todos/. Use this when starting work on a backlog item. Creates a full task file with YAML frontmatter, dependencies, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to promote from backlog (e.g., "AUTH-001"). | |
| owner | No | Who will work on this task. Default: "unassigned". | unassigned |
| priority | No | Priority override. If not set, uses priority from backlog. | |
| depends_on | No | Task IDs this depends on (e.g., ["AUTH-002"]). Only active tasks can be dependencies. | |
| estimate | No | Time estimate (e.g., "2h", "1d", "3d"). | |
| due | No | Due date in YYYY-MM-DD format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the creation of a full task file with YAML frontmatter and dependencies. However, it omits key behavioral details such as whether the backlog entry is removed or updated, and there are no annotations to supplement safety or side-effect information.
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 concise sentences that front-load the core purpose and function. Every word contributes value, with no redundancy or irrelevant 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?
Given 6 parameters, no output schema, and no annotations, the description provides adequate context for the basic operation but lacks details on return values, error handling, and the fate of the backlog entry. Slightly incomplete for a tool with moderate 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 coverage is 100%, so the baseline is 3. The description adds context about the overall action (e.g., creating a full task file) but does not elaborate on individual parameters beyond what the schema provides. This meets the minimum for a well-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (promote), the resource (task from BACKLOG.md to active YAML file), and distinguishes from sibling tools like add_to_backlog or create_task by focusing on promotion rather than creation or addition.
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 explicit usage context: 'Use this when starting work on a backlog item.' This guides the agent on when to invoke. However, it does not mention when not to use it or suggest alternatives, which would strengthen the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_backlogA
Removes an item from BACKLOG.md without promoting it. Use for tasks that are no longer needed or were added by mistake.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to remove (e.g., "AUTH-001"). | |
| reason | No | Optional reason for removal (for logging). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior (removal without promotion) but does not elaborate on whether the removal is permanent, reversible, or requires confirmation. With no annotations, more detail would be beneficial.
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?
Single sentence, 15 words, front-loaded with the action and purpose. No extraneous 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?
Given the tool's simplicity, no output schema, and presence of sibling tools, the description is largely complete. It could mention whether removal is a soft or hard delete, but overall it provides sufficient context for an agent.
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?
Input schema has 100% description coverage for both parameters, so baseline is 3. The description adds no additional context about the parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Removes' and the resource 'item from BACKLOG.md'. It differentiates from sibling tools like 'promote_task' by adding 'without promoting it'.
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 says 'Use for tasks that are no longer needed or were added by mistake', providing clear context on when to use this tool. It implicitly distinguishes from promote but does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsA
Search only the docs/ directory for reference documentation. Use this when the user specifically asks for "docs" or "documentation". Returns relevant documentation chunks with file paths and content snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Can be a single word, multiple words, or a phrase. The search is semantic and will find relevant content even with partial matches. | |
| category | No | Optional: Filter by documentation category. Options: product, architecture, operations, api, guides, reference, or leave empty for all. | |
| maxResults | No | Maximum number of results to return. Default is 10, maximum is 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes semantic search and return format but does not explicitly state that the tool is read-only or non-destructive. The behavioral traits are adequately implied but not fully 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?
The description is concise with two sentences, front-loaded with purpose and usage guidance. No unnecessary words or redundancy.
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 no output schema, the description mentions return format (chunks with paths and snippets) which is sufficient. It covers when to use and all parameters are detailed in schema. Slightly lacks details on output structure but adequate for agent decision.
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 baseline is 3. The description adds value by clarifying the scope (docs/ directory) and the semantic nature of search with partial matches, which is not present in the schema parameter descriptions.
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 tool searches only the docs/ directory for reference documentation, returning relevant chunks with file paths and snippets. It distinguishes from sibling tools like search_project and get_doc by specifying scope and purpose.
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?
Explicitly advises using this tool when the user specifically asks for 'docs' or 'documentation', providing clear usage context. However, it does not explicitly mention when not to use it or compare directly with alternative tools like search_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_projectA
Search across project sources with smart intent detection. IMPORTANT: "project docs" means APPLICATION documentation (docs/ + DECISIONS.md), NOT project management. Use intent "project_docs" when user says "project docs/documents/documentation" to search application documentation. Use intent "plan" for project management (status, todos, roadmap, backlog).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Can be a single word, multiple words, or a phrase. The search is semantic and will find relevant content even with partial matches. | |
| intent | No | Intent type to map to sources. "project_docs" searches docs/ + DECISIONS.md (application documentation). "docs" searches only docs/. "plan/todos/roadmap/status/operational" searches .project/ (project management). "project" searches everything. "decisions" searches only DECISIONS.md. | |
| maxResults | No | Maximum number of results to return. Default is 10, maximum is 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: smart intent detection, semantic search, and specific source mappings. It explains how different intents map to different directories, which goes beyond basic functionality.
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 plus a critical clarification about 'project docs'. Every sentence adds value, front-loading the important intent distinction. No 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?
Given no output schema, the description covers search behavior, source mapping, and intent guidance. It lacks detail on edge cases (e.g., empty results) but is sufficient for a search tool with semantic matching.
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%, but the description adds significant meaning beyond the schema by detailing the intent parameter's mapping (e.g., 'project_docs' vs 'plan') and clarifying ambiguous terms like 'project docs'. This helps the agent choose correct intent.
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 tool searches across project sources with intent detection. It specifies different sources (docs/, DECISIONS.md, .project/) and distinguishes from sibling tools like search_docs and search_tasks by covering multiple sources with intent mapping.
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 provides clear context on when to use each intent, especially the important distinction between 'project docs' (application docs) vs 'plan' (project management). However, it does not explicitly mention when NOT to use this tool or suggest alternatives like search_docs for docs-only searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tasksB
Search tasks by keyword in title, description, or content. Returns matching tasks with relevance ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (matches title, description, content). | |
| project | No | Filter by project. | |
| status | No | Filter by status. | |
| include_archived | No | Include archived tasks in search. Default: false. | |
| limit | No | Maximum results to return. Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing full burden on the description. While it mentions 'relevance ranking', it does not explain the ranking mechanism, whether results are sorted, or what fields are searched beyond title/description/content. It also lacks details on side effects (none, read-only), auth, rate limits, or pagination behavior beyond a limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose and output. No extraneous or redundant information is present, making it highly concise and 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?
Given the tool has 5 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not specify return field details (e.g., which task fields are returned), search behavior nuances (e.g., exact vs fuzzy matching), or how to interpret the relevance ranking. A more comprehensive description would address these 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 100%, so the schema already documents all parameters. The description adds 'relevance ranking' context but does not elaborate on how each parameter affects search behavior beyond what the schema provides. For example, it does not explain how the 'project' filter interacts with the search or whether 'include_archived' overrides the default filtering.
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 tool's purpose: 'Search tasks by keyword in title, description, or content. Returns matching tasks with relevance ranking.' It uses a specific verb-resource pair and specifies the scope of search and output format, effectively distinguishing it from sibling tools like list_tasks (which returns all tasks) and search_docs (which searches documents).
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 usage for keyword-based task search but provides no explicit guidance on when to use this tool versus alternatives like search_docs, search_project, or get_task. It lacks when-to-use, when-not-to-use, or prerequisite information, relying on implied context from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_todo_indexA
Syncs the parent TODO.md file with all tasks. Generates a dashboard view with tasks organized by status, priority counts, dependency graph, and execution order. This provides a bird's eye view of all work.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: "dashboard" (default, visual overview), "table" (compact table), "kanban" (by status columns). | dashboard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It mentions syncing (potentially modifying the index file) but doesn't clarify if it's read-only, destructive, or requires specific permissions. Lacks detail on side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. First sentence states the core action, second elaborates on output. Extremely concise and 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?
Given low complexity (1 param, no output schema), description covers purpose, output type, and parameter options. Missing only behavioral details, so nearly 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?
Single parameter 'format' with 100% schema coverage. The description adds context about dashboard as default but doesn't significantly enhance schema meaning, meeting 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?
The description clearly states the tool syncs a TODO.md file with all tasks and generates a dashboard view. It distinguishes from sibling tools like create_task or get_task by focusing on high-level syncing and overview.
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 explicit when-to-use or when-not-to-use guidance. The description implies it's for getting an overview, but doesn't compare to alternatives or state prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_taskA
Restores a task from archive/ back to todos/ for further work. Use when a completed task needs to be reopened.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to unarchive (e.g., "AUTH-001"). | |
| status | No | Status to set on restore. Default: "todo". | todo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states that the task is restored for further work, implying it becomes editable again, but does not describe potential side effects (e.g., preserving history) or prerequisites. For a simple state change, this is adequate but lacks depth.
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 primary action, and contains no superfluous information. Every word contributes to understanding.
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 the tool's simplicity, no output schema, and high schema coverage, the description covers the essential purpose and usage. It does not specify behavior for edge cases (e.g., unarchiving a non-archived task), but for typical use it is 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 coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema: it implies the task_id is the one to unarchive and mentions the default status 'todo' in the action context, but does not elaborate on the meaning or constraints of the 'status' 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 clearly states the verb 'Restores' and the resource 'task', specifies the transition from 'archive/' to 'todos/', and distinguishes it from the sibling 'archive_task' by indicating it is the inverse operation.
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 explicitly states when to use the tool: 'Use when a completed task needs to be reopened.' This provides clear context, though it does not explicitly mention when not to use it, the intended use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_backlog_itemA
Updates an item in BACKLOG.md. Can change priority, title, tags, or phase without promoting to active work.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to update (e.g., "AUTH-001"). | |
| title | No | New title for the task. | |
| priority | No | New priority level (will move to new section). | |
| tags | No | New tags (replaces existing). | |
| phase | No | New phase/milestone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions updating a file and not promoting, but omits details like file creation behavior, error handling, permissions, idempotency, and return value. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and a key constraint without any redundant 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?
For a tool with 5 parameters, 100% schema coverage, no output schema, and no annotations, the description is adequate but lacks details on side effects, return values, and error conditions. It covers the essential purpose but not enough for complete understanding.
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 has 100% coverage with descriptions for each parameter. The description adds no additional meaning beyond the schema, 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 clearly states the verb 'Updates', the resource 'item in BACKLOG.md', and specifies the fields it can change (priority, title, tags, phase). It also distinguishes from siblings by noting it does not promote to active work.
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 when to use (for backlog item updates without promotion) but does not explicitly state when not to use or mention alternative tools like promote_task. The sibling list provides context but the description lacks direct exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_statusC
Quick status update for the project. Adds a timestamped entry to STATUS.md with the current status, changes, or notes.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Current status summary (e.g., "On track", "Blocked by API issues"). | |
| health | No | Project health indicator. | |
| changes | No | List of recent changes or updates. | |
| blockers | No | Current blockers or risks. | |
| next_milestone | No | Next milestone or goal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the action (appends to STATUS.md) and timestamping, but lacks information on safety (it is likely destructive), required permissions, or side effects beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and mechanism. It is efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description should provide more context about the function's behavior and return value. It does not explain what happens to existing entries, how the timestamp is generated, or what the user should expect after 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 100%, so the schema already explains all parameters. The description adds minimal extra meaning ('timestamped', 'quick'), but does not go beyond what the schema provides for 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 states it adds a timestamped entry to STATUS.md with status, changes, or notes. This distinguishes it from similar siblings like 'create_or_update_status' by emphasizing quickness and timestamping, though not explicitly differentiating.
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 explicit guidance on when to use this tool versus alternatives such as 'create_or_update_status'. The description does not provide context for when a quick update is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskB
Updates an existing task by ID. Can update any field including status, priority, owner, dependencies, etc. Use this to transition tasks through workflow states.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task ID to update (e.g., "AUTH-001"). | |
| title | No | New title for the task. | |
| description | No | New description. Use "append:TEXT" to append to existing description. | |
| owner | No | New owner for the task. | |
| priority | No | New priority level. | |
| status | No | New status. Transitioning to "done" will set completed date. | |
| depends_on | No | New dependency list. Use "add:ID" or "remove:ID" to modify existing. | |
| blocked_by | No | New blocked_by list. | |
| estimate | No | New time estimate. | |
| due | No | New due date (YYYY-MM-DD). | |
| tags | No | New tags list. Use "add:TAG" or "remove:TAG" to modify existing. | |
| add_subtask | No | Add a new subtask to the task. | |
| complete_subtask | No | Mark a subtask as complete (partial match on subtask text). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose side effects and constraints. It mentions updating but does not warn about potential overriding of lists, required permissions, or consequences of status transitions. The special syntax for append/add/remove is only in the schema, not the description.
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 long, directly stating the purpose and a key use case. It is concise without any unnecessary information, making it easy for an agent to parse.
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 13 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, valid status transitions, error handling, or how the tool interacts with siblings like promote_task. More detail would be needed for complete understanding.
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?
Since schema description coverage is 100%, the baseline is 3. The description highlights a few fields (status, priority, etc.) and the workflow transition use case, which adds some context, but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool updates existing tasks by ID and can modify various fields like status, priority, and owner. It distinguishes from sibling tools such as create_task or delete_task by focusing on updates and workflow transitions.
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 advises using this tool to transition tasks through workflow states, which is helpful. However, it does not explicitly differentiate from similar tools like promote_task or specify when not to use this tool, leaving some ambiguity.
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.
42 tool updates
- First observed
add_decision - First observed
add_roadmap_milestone - First observed
add_to_backlog - First observed
archive_task - First observed
archive_thought - First observed
check_project_state - First observed
create_or_update_decisions - First observed
create_or_update_index - First observed
create_or_update_roadmap - First observed
create_or_update_status - First observed
create_or_update_todo - First observed
create_task - First observed
delete_task - First observed
get_backlog - First observed
get_decision - First observed
get_doc - First observed
get_doc_structure - First observed
get_next_task - First observed
get_roadmap - First observed
get_task - First observed
get_thought - First observed
import_tasks - First observed
init_project - First observed
lint_project_docs - First observed
list_archived_tasks - First observed
list_archived_thoughts - First observed
list_decisions - First observed
list_docs - First observed
list_tasks - First observed
list_thoughts - First observed
manage_project_file - First observed
process_thoughts - First observed
promote_task - First observed
remove_from_backlog - First observed
search_docs - First observed
search_project - First observed
search_tasks - First observed
sync_todo_index - First observed
unarchive_task - First observed
update_backlog_item - First observed
update_project_status - First observed
update_task
TDQS
Scored across 42 tools
Most tools have clear, distinct purposes (e.g., create_task, archive_task, get_task). A few tools like manage_project_file vs specific create/update tools could cause minor confusion, but descriptions clarify their roles.
Predominantly uses verb_noun pattern (create_task, get_task, delete_task). Some variations like add_ vs create_or_update_ and manage_project_file, but overall consistent and readable.
42 tools is on the higher end, but each tool serves a distinct purpose in project management (CRUD for tasks, backlog, decisions, roadmap, etc.). Slightly over but reasonable given the comprehensive scope.
Covers full lifecycle for tasks, backlog, decisions, roadmap, status, documentation, and thoughts. Includes search, linting, and import/export features. No obvious gaps for project management.
Maintenance
Related MCP Connectors
- DartOAuthcom.dartai
AI-native project management for tasks, docs, collaboration, and agents.
- OneLoreOAuthai.onelore
Shared project context for AI agents and teams: docs, tasks, and messages that stay current.
AI-native project management + agent memory: tasks, sprints, risk, burnout, knowledge search.
Manage tasks, projects, roadmaps, files, meetings, and team workflows with AI tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server providing comprehensive task management capabilities with support for project organization, task tracking, and automatic PRD parsing into actionable items.37MIT
- AlicenseNot gradedqualityDmaintenanceAn intelligent task management server that generates context-aware engineering plans using LLM-powered workflows and interactive requirement elicitation. It features persistent SQLite storage, category-based planning strategies, and automated progress tracking for software development projects.MIT

Version Pill MCPofficial
FlicenseNot gradedqualityBmaintenanceAI-native project management server for coding agents, offering 60 tools for tasks, releases, epics, cycles, docs, and ideas with caching and agent memory.-- FlicenseNot gradedqualityBmaintenanceA local-first MCP server and CLI that gives coding agents structured project memory, task contracts, context packs, backlog workflows, and verification evidence, storing data in reviewable Markdown/YAML with a fast SQLite index.1-