Skip to main content
Glama

omni-dev

MCP Toplist

Crates.io Documentation Build Status License: BSD-3-Clause

An intelligent Git commit message toolkit with AI-powered contextual intelligence. Transform messy commit histories into professional, conventional commit formats with project-aware suggestions.

🎬 See It In Action

asciicast

Watch omni-dev transform messy commits into professional ones with AI-powered analysis

Related MCP server: MCP Atlassian Node Server

30-Second Demo

Transform your commit messages and create professional PRs with AI intelligence:

# Analyze and improve commit messages in your current branch
omni-dev git commit message twiddle 'origin/main..HEAD' --use-context

# Before: "fix stuff", "wip", "update files"
# After:  "feat(auth): implement OAuth2 authentication system"
#         "docs(api): add comprehensive endpoint documentation"
#         "fix(ui): resolve mobile responsive layout issues"

# Create a professional PR with AI-generated description
omni-dev git branch create pr
# 🎉 Generates comprehensive PR with detailed description, testing info, and more

✨ Key Features

  • 🤖 AI-Powered Intelligence: Claude AI analyzes your code changes to suggest meaningful commit messages and PR descriptions

  • 🧠 Contextual Awareness: Understands your project structure, conventions, and work patterns

  • 🔍 Comprehensive Analysis: Deep analysis of commits, branches, and file changes

  • ✏️ Smart Amendments: Safely improve single or multiple commit messages

  • 🚀 PR Creation: Generate professional pull requests with AI-powered descriptions

  • 📦 Automatic Batching: Handles large commit ranges intelligently

  • 🎯 Conventional Commits: Automatic detection and formatting

  • 🌐 Browser Bridge: Drive HTTP requests through an authenticated browser tab without exfiltrating cookies or tokens

  • 🗂️ Worktrees View: One live view of every repo and git worktree open across all your VS Code windows

  • 🛡️ Safety First: Working directory validation, protection against amending commits already in remote main branches, and error recovery

  • Fast & Reliable: Built with Rust for memory safety and performance

🚀 Quick Start

Installation

# Install from crates.io
cargo install omni-dev

# Install with Nix
nix profile install github:rust-works/omni-dev

# Install with Nix flakes (development)
nix run github:rust-works/omni-dev

Next step: see Getting Started — a 10-minute walkthrough from authentication to your first AI-improved commit. (For just the API-key reference, see Authentication.)

Shell Completion

omni-dev completions <shell> prints a completion script to stdout for bash, zsh, fish, powershell, or elvish. The quickest path is bash per-user:

# Add to ~/.bashrc:
eval "$(omni-dev completions bash)"

See docs/shell-completion.md for per-shell install recipes, the $fpath/compinit setup zsh requires, and troubleshooting.

🆚 How omni-dev Compares

omni-dev sits in two adjacent spaces — AI commit-message tooling and Atlassian/dev-workflow MCP servers. The tables below contrast the incumbents on the dimensions a first-time reader is most likely to weigh. In every cell, means full / native support, means partial or available only with caveats, and means not supported — and omni-dev's own limitations are flagged just as honestly (the marks in its own columns).

Beyond these two niches, omni-dev also ships a supervised daemon that hosts a browser bridge (an authenticated proxy that runs requests through a logged-in browser tab for SSO-gated dashboards such as Grafana and Loki), a Snowflake SQL service (one external-browser SSO session reused for concurrent queries), and a worktrees registry (one live view of the repos open across every VS Code window), plus a local append-only request log (omni-dev log). These have no direct incumbent in either table below, so they are called out here rather than scored against tools that don't aim for them.

vs AI commit tools

omni-dev

opencommit

aicommits

Rewrite existing commits in a range

twiddle

❌ pre-commit only

❌ pre-commit only

Parallel batched processing (long ranges)

--concurrency N

AI-written PR descriptions

git branch create pr

⚠ GitHub Action only

Project-context awareness

--use-context

Sandboxed claude-cli backend

ADR-0028

Multi-backend (Anthropic / Bedrock / OpenAI / Ollama)

Conventional Commits

⚠ config

Language / runtime

Rust (static binary)

Node.js

Node.js

vs Atlassian-workflow MCP servers

omni-dev's MCP server also exposes Git tools (commit analysis, twiddling, PR creation), Datadog tools, and an ai_chat proxy — surfaces the Atlassian-focused servers don't aim for. The table below compares only Atlassian capability depth.

omni-dev MCP

sooperset/mcp-atlassian

Atlassian official (Rovo)

Jira REST surface

✅ 36 tools (agile, fields, dev panel, links, watchers, worklogs, versions, changelog)

✅ 49 tools (above + JSM, proforma forms, SLA, batch ops)

⚠ 14 tools (basic CRUD, search, transitions, worklogs only)

Confluence REST surface

✅ 25 tools (history, diff, attachments, labels, spaces, inline + footer comments)

✅ 24 tools (history, diff, attachments, labels; no inline comments / spaces)

⚠ 12 tools (inline + footer comments, spaces; no delete / move / history / diff / attachments / labels)

Lossless JFM ↔ ADF round-trip

✅ full ADF node set (schema v56.1.18) + unsupported-node escape

⚠ raw ADF, model-dependent

Anchored review-comment preservation

✅ annotation marks survive round-trip

❌ anchor stripped, comments orphaned

⚠ ADF carries anchors; model-dependent

Pre-flight ADF schema validation

✅ nesting + arity, before write

Offline JFM ↔ ADF conversion (no creds)

atlassian_convert

Cloud + Server + Data Center

⚠ Cloud verified

✅ Cloud + Server (v6+) + DC (Jira v8.14+)

❌ Cloud only

Auth

⚠ API token only

✅ API token / PAT / OAuth 2.0

✅ OAuth 2.1 / API token

Last verified: 2026-06-23. omni-dev and sooperset rows are live-tested — a tools/list enumeration (omni-dev branch build vs ghcr.io/sooperset/mcp-atlassian:latest) plus a live read→write→read fidelity cycle on a complex page. Atlassian Rovo's server accepts the API token but gates tool execution behind an org-admin grant, so its rows combine Atlassian's Supported tools docs with the ADF-passthrough reasoning (raw ADF can round-trip, but only if the model echoes it faithfully — no deterministic guarantee), not a live run. Refresh quarterly or whenever a release-note search for the comparators flags a relevant change.

📋 Core Commands

🤖 AI-Powered Commit Improvement (twiddle)

The star feature - intelligently improve your commit messages with real-time model information display:

# Improve commits with contextual intelligence
omni-dev git commit message twiddle 'origin/main..HEAD' --use-context

# Process large commit ranges with parallel processing
omni-dev git commit message twiddle 'HEAD~20..HEAD' --concurrency 5

# Save suggestions to file for review
omni-dev git commit message twiddle 'HEAD~5..HEAD' \
  --save-only suggestions.yaml

# Auto-apply improvements without confirmation
omni-dev git commit message twiddle 'HEAD~3..HEAD' --auto-apply

🔍 Analysis Commands

# Analyze commits in detail (YAML output)
omni-dev git commit message view 'HEAD~3..HEAD'

# Analyze current branch vs main
omni-dev git branch info main

# Get comprehensive help
omni-dev help-all

🚀 AI-Powered PR Creation

Create professional pull requests with AI-generated descriptions:

# Generate and create PR with AI-powered description
omni-dev git branch create pr

# Create PR with specific base branch
omni-dev git branch create pr main

# Save PR details to file without creating
omni-dev git branch create pr --save-only pr-description.yaml

# Auto-create without confirmation
omni-dev git branch create pr --auto-apply

📝 Atlassian Integration

Read, write, and manage JIRA issues and Confluence pages from the command line:

# Authenticate with Atlassian Cloud
omni-dev atlassian auth login

# Check authentication status
omni-dev atlassian auth status

# Fetch a JIRA issue as markdown
omni-dev atlassian jira read PROJ-123

# Fetch as raw ADF JSON
omni-dev atlassian jira read PROJ-123 --format adf

# Push markdown changes back to JIRA
omni-dev atlassian jira write PROJ-123 issue.md

# Interactive edit: fetch, edit in $EDITOR, push
omni-dev atlassian jira edit PROJ-123

# Search issues with JQL
omni-dev atlassian jira search --project PROJ --status Open

# Create an issue
omni-dev atlassian jira create issue.md --project PROJ --summary "Fix bug"

# Transition an issue
omni-dev atlassian jira transition PROJ-123 "In Progress"

# Confluence: read, search, create pages
omni-dev atlassian confluence read 12345
omni-dev atlassian confluence search --space ENG --title auth
omni-dev atlassian confluence create page.md --space ENG --title "New Page"

# Convert markdown to ADF JSON (offline)
omni-dev atlassian convert to-adf input.md

📊 Datadog Integration (read-only)

Authenticate against the Datadog API and query metrics, monitors, dashboards, logs, events, SLOs, hosts, and downtimes. See the Datadog integration guide for the full subcommand reference, authentication setup, rate-limit behaviour, and troubleshooting.

# Configure Datadog API credentials (prompts for API key, APP key, and site)
omni-dev datadog auth login

# Verify the credentials by calling /api/v1/validate
omni-dev datadog auth status

# Query metrics, monitors, dashboards, logs, and SLOs
omni-dev datadog metrics query --query 'avg:system.cpu.user{*}' --from 15m
omni-dev datadog monitor list --tags env:prod
omni-dev datadog dashboard list
omni-dev datadog logs search --filter 'service:api status:error' --from 1h
omni-dev datadog slo list --tags team:platform

DATADOG_SITE defaults to datadoghq.com. Other regions (datadoghq.eu, us3.datadoghq.com, us5.datadoghq.com, ap1.datadoghq.com, ddog-gov.com) are recognised without warning. Environment variables DATADOG_API_KEY, DATADOG_APP_KEY, DATADOG_SITE override the stored settings. For on-prem or proxied installs, set DATADOG_API_URL to override the site-derived URL.

All Datadog subcommands are also exposed as MCP tools (datadog_*) — see docs/mcp.md. For the full guide covering every family with worked examples, see docs/datadog.md.

📧 Gmail Integration

Authenticate against your own Gmail account via OAuth2 (loopback authorization-code + PKCE), search/read/label messages and threads, and maintain a durable local archive with gmail sync. New to this integration? Start with the Gmail Quickstart for a zero-to-synced-archive walkthrough; see the Gmail integration guide for prerequisites (you bring your own Google Cloud OAuth2 client — Gmail read scopes require Google's CASA security assessment to distribute otherwise), authentication setup, rate-limit behaviour, and troubleshooting.

# One-time: create your own Google Cloud OAuth2 client (see docs/gmail.md),
# then authenticate (opens a browser)
export GMAIL_CLIENT_ID=...
export GMAIL_CLIENT_SECRET=...
omni-dev gmail auth login

# Verify the credentials by calling users.getProfile
omni-dev gmail auth status

# Search, read messages/threads, and manage labels
omni-dev gmail search --query 'label:finance after:2026/01/01' --limit 50
omni-dev gmail read <message-id>
omni-dev gmail thread <thread-id>
omni-dev gmail label list

# Maintain a durable local archive (.eml files + a JSONL manifest)
omni-dev gmail sync --output-dir ~/mail-archive --query 'label:finance'

An OAuth2 client left in Google's "Testing" publishing status issues refresh tokens that expire after 7 days — see docs/gmail.md for how to avoid re-running auth login weekly.

Every read-only Gmail subcommand except sync is also exposed as an MCP tool (gmail_*) — see docs/mcp.md; sync is CLI-only (a long-running bulk filesystem operation, a poor fit for a synchronous MCP call). For the full guide, see docs/gmail.md.

📁 Drive Integration

Authenticate against your own Google Drive account via OAuth2 (loopback authorization-code + PKCE, the same flow as Gmail), then search files, read their metadata or content, find duplicates, rename/move files, and create, upload, or replace file content. Every write is opt-in twice over. First by OAuth scope: the default drive.readonly covers search/read/dedupe; rename/move need drive.metadata (drive auth login --write), the narrowest write scope Google offers; create/upload need drive.file (--write-file); and editing a file omni-dev did not itself create needs the unrestricted drive scope (--write-full). Second by a local, folder-scoped gate: create/upload/edit resolve the target's ancestor folder chain against per-account rules in settings.json — closest ancestor wins, deny beats allow, and a write with no matching rule is denied — so an OAuth grant alone never authorizes a mutation (see ADR-0071). Inspect that gate with drive permissions show/lookup-folder/check before granting anything. There is still no trash/share/permission-mutation capability anywhere in this surface. drive move is separately security-gated: it refuses any move that would change a file's visibility by default (see ADR-0070). New to this integration? Start with the Drive Quickstart for a zero-to-first-search walkthrough; see the Drive integration guide for prerequisites (you bring your own Google Cloud OAuth2 client, independent of Gmail's), authentication setup, rate-limit behaviour, and troubleshooting.

# One-time: create your own Google Cloud OAuth2 client (see docs/drive.md),
# then authenticate (opens a browser)
export DRIVE_CLIENT_ID=...
export DRIVE_CLIENT_SECRET=...
omni-dev drive auth login

# Verify the credentials by calling about.get
omni-dev drive auth status

# Search and read file metadata/content
omni-dev drive search "name contains 'report'"
omni-dev drive read <file-id>
omni-dev drive read <file-id> --content --out-file report.pdf

# Rename/move need the opt-in drive.metadata scope
omni-dev drive auth login --write
omni-dev drive rename <file-id> "New Name.pdf"
omni-dev drive move <file-id> --to <folder-id>

# Creating/uploading/editing content needs a content scope *and* a
# folder rule in settings.json permitting the destination
omni-dev drive auth login --write-file          # or --write-full to edit
omni-dev drive permissions show                 # what is configured
omni-dev drive permissions check <folder-id> --operation create  # what it decides
omni-dev drive create --name notes.txt --parent <folder-id>
omni-dev drive upload ./report.pdf --parent <folder-id>
omni-dev drive edit <file-id> --content ./report.pdf   # or --content - for stdin

An OAuth2 client left in Google's "Testing" publishing status issues refresh tokens that expire after 7 days — see docs/drive.md for how to avoid re-running auth login weekly.

Five read-only MCP tools (drive_*) mirror the CLI's auth status, search, dedupe, read, and account list — see docs/mcp.md. The mutating verbs — rename/move/create/upload/edit — have no MCP equivalent. For the full guide, see docs/drive.md.

🎙️ Transcript Fetching

Pull captions and transcripts from external media platforms. YouTube is the first supported source; the CLI namespace and library are designed so additional sources (Vimeo, podcast RSS, generic VTT/SRT URLs) can be added without restructuring. See docs/transcript.md for the full reference and the recipe for adding a new source.

# Fetch captions for a YouTube video as SubRip (default).
omni-dev transcript youtube fetch https://www.youtube.com/watch?v=jNQXAC9IVRw

# WebVTT to a file, falling through to auto-generated captions if needed.
omni-dev transcript youtube fetch jNQXAC9IVRw \
  --format vtt --auto --output me-at-the-zoo.vtt

# Synthesise a translated track when no native French track exists.
omni-dev transcript youtube fetch <url> --lang fr --translate fr

# List available caption tracks (manual + auto-generated).
omni-dev transcript youtube list-langs <url>

# Show video metadata (title, channel, duration, languages).
omni-dev transcript youtube info <url> --output json

--format accepts srt, vtt, txt, or json. Locators may be a watch?v= URL, a youtu.be/ short URL, a /shorts/ or /embed/ URL, or a bare 11-character video ID. Age-gated and login-required videos surface as a typed PlayabilityRefused error carrying YouTube's status code rather than a generic HTTP failure.

🌐 Browser Bridge

Drive HTTP requests through an authenticated browser tab. When you are investigating internal services (Grafana/Loki, internal dashboards, SSO-gated admin panels), the browser already holds sessions — SSO, OAuth, cookies — that are hard to replicate programmatically. The bridge issues requests inside the browser's authenticated context without exfiltrating cookies or tokens (a confused deputy by design). Both planes are authenticated and default-closed; see docs/browser-bridge.md for the full guide and ADR-0036 for the security rationale.

# Start the bridge; it prints the bound ports, a session token, and a JS
# snippet to paste into the DevTools console of the authenticated tab.
omni-dev browser bridge serve

# Drive requests through the tab (token from the bridge's stdout).
export OMNI_BRIDGE_TOKEN=<token printed by the bridge>
omni-dev browser bridge request --url /loki/api/v1/labels

# POST a JSON payload from a file, with a custom header.
omni-dev browser bridge request --url /api/foo --method POST \
  --body @payload.json --header "Accept: application/json"

# Stream a long-lived endpoint (SSE / chunked) instead of buffering.
omni-dev browser bridge request --url /api/events --stream

# Route to a specific tab when several are connected (by id or origin).
omni-dev browser bridge request --url /api/foo --target https://grafana.internal

Supports binary and streaming response bodies, multi-tab routing via X-Omni-Bridge-Target, per-request --credentials and --allow-origin overrides, and a transparent proxy for tools that speak plain HTTP.

🛰️ Daemon

Host long-lived services in one supervised process behind a private per-user Unix-domain control socket. The browser bridge is the first service migrated onto it (Snowflake and the worktrees registry followed), and on macOS an optional menu-bar app gives live control. daemon start installs a launchd LaunchAgent for auto-start at login, and status reports every hosted service. See Running under the daemon and ADR-0039 for the architecture.

# Start the background daemon (installs a launchd LaunchAgent on macOS)
omni-dev daemon start

# Per-service status (add --json for machines)
omni-dev daemon status

# Restart or stop it
omni-dev daemon restart
omni-dev daemon stop

The daemon is Unix-only — its control plane is a Unix-domain socket — while the rest of omni-dev runs everywhere.

❄️ Snowflake

Authenticate a Snowflake session once via external-browser SSO, then run concurrent arbitrary SQL across any account without an SSO popup on every query. The daemon holds the session in memory and multiplexes a bounded pool, so each query can still set its own warehouse/role/database/schema. See docs/snowflake-service.md.

# Run SQL (from an argument or stdin); the first query opens the SSO browser
omni-dev snowflake query "select current_version()"

# Per-query context overrides and JSON output
omni-dev snowflake query "select * from t limit 10" \
  --warehouse WH --role ANALYST --database DB --schema PUBLIC --format json

# Inspect or evict live sessions
omni-dev snowflake sessions
omni-dev snowflake disconnect --account <ACCOUNT> --user <USER>

Account/user/context default from SNOWFLAKE_* env vars then ~/.omni-dev/settings.json — no accounts are hardcoded. Runs on the daemon, so it is Unix-only.

📓 Request Log

Every invocation and the HTTP requests it issues are recorded to a local, append-only log you can search and tail. Best-effort and default-on; no secret is ever written (auth headers are redacted, bodies opt-in). See docs/log.md.

# Recent activity (one line each)
omni-dev log

# Filter by service and status class, or a query expression; follow live
omni-dev log --service jira --status 5xx
omni-dev log --query 'method:POST AND status:4xx' --follow

# Full records as JSON (byte-identical to the on-disk lines)
omni-dev log --format json -n 20

Set OMNI_DEV_LOG_DISABLE=1 to turn it off, or OMNI_DEV_LOG_BODIES=1 / OMNI_DEV_LOG_HEADERS=1 to opt into capturing bodies/headers.

🗂️ Worktrees

See every repo and git worktree open across all your VS Code windows in one live view. A VS Code extension host is sandboxed per window — no extension alone can see a sibling window's folders — so a small first-party companion extension registers each window with the daemon, which aggregates them into a single registry served back to the CLI, tray, and extension UI. The registry is in-memory only; windows that crash without unregistering age out automatically. See docs/worktrees-service.md and ADR-0040.

# One line per open window and its folders (add --json for machines)
omni-dev worktrees list

Runs on the daemon, so it is Unix-only.

📈 Coverage Diff

Attribute a per-line coverage report to a git diff and report patch coverage — the share of added lines that are tested — plus the uncovered new lines, per-file deltas, and indirect coverage changes. Reads lcov, llvm-cov JSON, or Cobertura XML (auto-detected), renders markdown/YAML/JSON, and can gate a branch. Coverage that is inherently non-deterministic across runs — a CPU-gated region measured on two different runner CPUs — can be excluded by file or, more precisely, by source comment markers that ignore a region or tolerate it (keeping its real coverage in the total while masking its flips). It powers the project's PR coverage comment and runs locally too. See docs/coverage.md.

# Patch coverage for the working tree against the default merge-base
omni-dev coverage diff --report head.lcov

# Fail if patch coverage is under 80% (a CI gate or a pre-push check)
omni-dev coverage diff --report head.lcov --fail-under-patch 80

# Full report with project deltas, as JSON
omni-dev coverage diff --report head.lcov --baseline-report base.lcov --format json

✏️ Manual Amendment

# Apply specific amendments from YAML file
omni-dev git commit message amend amendments.yaml

🧩 Claude Code Slash-Commands

Generate ready-to-use Claude Code slash-command templates into the project's .claude/commands/ directory. Each template is a self-contained workflow that drives a multi-step omni-dev operation from inside a Claude Code session.

# Generate all templates: commit-twiddle, pr-create, pr-update
omni-dev commands generate all

# Or individually
omni-dev commands generate commit-twiddle
omni-dev commands generate pr-create
omni-dev commands generate pr-update

Each subcommand writes .claude/commands/<name>.md. Commit the files to share the workflows with collaborators — Claude Code picks them up automatically, so anyone in the repo can invoke /commit-twiddle, /pr-create, or /pr-update inside a Claude Code session. See the user guide for the full reference.

🗒️ Claude Conversation History

Export your Claude Code chat history to a directory of .jsonl files for behavioural analysis, work-log generation, or downstream tooling. Re-running acts as an idempotent sync: new chats are added, modified chats are overwritten, unchanged chats are skipped.

# Mirror ~/.claude/projects to ./history/ (one .jsonl per chat, grouped by project slug)
omni-dev ai claude history sync --target ./history

# Limit to one project (encoded slug or decoded cwd path)
omni-dev ai claude history sync --target ./history --project /Users/me/work/repo

# Only sessions touched in the last week
omni-dev ai claude history sync --target ./history --since 7d

# Preview without writing, then prune target files for sessions removed upstream
omni-dev ai claude history sync --target ./history --dry-run --prune

# Render LLM-friendly markdown alongside the raw jsonl (one .md per session)
omni-dev ai claude history sync --target ./history --output-format jsonl,markdown

# Markdown only — suitable for piping into a coaching LLM
omni-dev ai claude history sync --target ./history --output-format markdown

The export is a behavioural transcript, not a faithful archive. The top-level session jsonl captures all prompts, responses, thinking blocks, tool calls, and tool-result metadata — the signal needed for analysis. Sub-agent internal turns, large tool-output sidecars, PDF page rasters, and Claude's auto-memory are deliberately excluded; they would bloat any LLM-ingested corpus without adding interaction-pattern signal.

In-progress chats produce a valid jsonl prefix (the source size is captured once at the start of the copy), so you can sync safely while a chat is open. The target layout mirrors the source — <target>/<slug>/<uuid>.jsonl — and source mtime is preserved on each target file so downstream tooling can sort sessions chronologically without parsing every file.

--output-format markdown writes a derived <target>/<slug>/<uuid>.md alongside (or instead of) the jsonl. Each markdown file has YAML frontmatter with session metadata followed by ## User / ## Assistant turns; tool calls render as ### Tool call: <name> blocks, thinking blocks collapse into <details>, and sub-agent (Agent) calls render the prompt argument only.

Agent-to-user interactions are surfaced as first-class structured events so the analyst LLM sees what was actually asked and how the user responded:

  • AskUserQuestion calls render as ### Agent question: <header> with the question text and a bulleted list of options (with descriptions); the paired user reply renders as ## User response.

  • Tool denials show up as **Tool result (<tool>, denied by user):** — detected by the canonical "The user doesn't want to proceed with this tool use" sentinel Claude Code stuffs into the next tool_result.

  • Tool interrupts (escape mid-execution) render as **Tool result (<tool>, interrupted by user):**.

  • Errors (real tool failures, distinct from user denials) keep the error label; successes use ok.

System reminders, attachments, and permission-mode events are included by default — pass --exclude-system to drop them. Markdown idempotency keys off source mtime alone (the rendered length differs from the source length), and --prune only deletes artifacts whose extension matches one of the formats listed in --output-format.

See docs/user-guide.md#ai-claude-history-sync--export-conversation-history for the in-depth reference, and the broader Claude Code Integration section for related commands (ai chat, ai claude skills).

🔌 MCP Server

omni-dev ships an optional Model Context Protocol server so AI assistants (Claude Desktop, Claude Code, the MCP Inspector, custom agents) can call omni-dev over stdio instead of shelling out to the CLI. The server is delivered as a second binary, omni-dev-mcp, gated behind the mcp Cargo feature (see ADR-0021).

Tools cover seven domains:

Domain

Examples

Git (5)

git_view_commits, git_branch_info, git_check_commits, git_twiddle_commits, git_create_pr

JIRA (28)

core read/write/search/transition/comment/link/dev/delete; sprints, boards, watchers, worklogs, fields, attachments, projects, changelog

Confluence (13)

read/write/search/create/delete/download/children, comments, labels, user search

Atlassian shared (2)

atlassian_auth_status, atlassian_convert (offline JFM ↔ ADF)

Datadog (14)

metrics, monitors, dashboards, logs, events, SLOs, hosts, downtimes, metrics catalog

Gmail (5)

gmail_auth_status, gmail_search, gmail_message_read, gmail_thread_read, gmail_label_list

AI / Config (5)

ai_chat (one-shot chat), claude_skills_* (sync / clean / status for .claude/skills/ distribution), config_models_show

Resources exposed via URI templates:

URI template

Returns

git://repo/commits/{range}

YAML commit analysis

jira://issue/{key}

JIRA issue as JFM

jira://issue/{key}.adf

JIRA issue body as ADF

confluence://page/{id}

Confluence page as JFM

confluence://page/{id}.adf

Confluence page body as ADF

omni-dev://specs/{name}

Embedded reference specs (e.g. jfm)

See docs/mcp.md for the full tool catalog, resource reference, cross-cutting parameters (output_file, confirm), and troubleshooting.

Install

cargo install omni-dev --features mcp

This adds a second binary, omni-dev-mcp, alongside the regular omni-dev CLI. The default cargo install omni-dev build is unchanged — no MCP dependencies are pulled in unless the mcp feature is enabled.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "omni-dev": {
      "command": "omni-dev-mcp"
    }
  }
}

Claude Code

Per-project — create .mcp.json at the repo root:

{
  "mcpServers": {
    "omni-dev": {
      "command": "omni-dev-mcp"
    }
  }
}

Or register globally with the Claude Code CLI:

claude mcp add omni-dev omni-dev-mcp

Smoke-test with the MCP Inspector

npx @modelcontextprotocol/inspector omni-dev-mcp

The Inspector opens a browser UI where you can list tools and resources, call any tool interactively, and fetch resources against the current working directory.

Configuration (settings.json)

Three server defaults can be set once in the mcp section of ~/.omni-dev/settings.json instead of per-invocation env vars or flags. All three fields are optional; an absent mcp block leaves the built-in behaviour unchanged.

{
  "mcp": {
    "default_model": "claude-sonnet-4-6",
    "log_level": "info",
    "max_response_bytes": 102400
  }
}

Field

Effect

Fallback

default_model

Model for ai_chat when its model param is omitted

model registry default

log_level

Tracing filter directive for the server

warn (env RUST_LOG overrides)

max_response_bytes

Cap on a tool response before truncation (0 disables)

100 KB

For troubleshooting (stderr logs, RUST_LOG=debug, "failed to open git repository"), see docs/mcp.md#troubleshooting.

⚙️ Configuration Commands

# Show supported AI models and their specifications
omni-dev config models show

# View model information with token limits and capabilities
omni-dev config models show | grep -A5 "claude-opus-4.1"

🧠 Contextual Intelligence

omni-dev understands your project context to provide better suggestions:

Project Configuration

Create .omni-dev/ directory in your repo root:

mkdir .omni-dev

Scope Definitions (.omni-dev/scopes.yaml)

scopes:
  - name: "auth"
    description: "Authentication and authorization systems"
    examples: ["auth: add OAuth2 support", "auth: fix token validation"]
    file_patterns: ["src/auth/**", "auth.rs"]
  
  - name: "api"
    description: "REST API endpoints and handlers"  
    examples: ["api: add user endpoints", "api: improve error responses"]
    file_patterns: ["src/api/**", "handlers/**"]

Commit Guidelines (.omni-dev/commit-guidelines.md)

# Project Commit Guidelines

## Format
- Use conventional commits: `type(scope): description`
- Keep subject line under 50 characters
- Use imperative mood: "Add feature" not "Added feature"

## Our Scopes
- `auth` - Authentication systems
- `api` - REST API changes
- `ui` - Frontend/UI components

🎯 Advanced Features

Intelligent Context Detection

omni-dev automatically detects:

  • Project Conventions: From .omni-dev/, CONTRIBUTING.md

  • Work Patterns: Feature development, bug fixes, documentation, refactoring

  • Branch Context: Extracts work type from branch names (feature/auth-system)

  • File Architecture: Understands UI, API, core logic, configuration changes

  • Change Significance: Adjusts detail level based on impact

Automatic Batching

Large commit ranges are automatically split into manageable batches:

# Processes 50 commits in batches of 4 (default)
omni-dev git commit message twiddle 'HEAD~50..HEAD' --use-context

# Custom concurrency for very large ranges
omni-dev git commit message twiddle 'main..HEAD' --concurrency 2

Command Options

Option

Description

Example

--fresh

Generate fresh messages from the diffs alone (the default; conflicts with --refine)

--fresh

--refine

Refine the existing messages instead of starting fresh (conflicts with --fresh)

--refine

--use-context

Enable contextual intelligence

--use-context

--work-context TEXT

Describe the work being done to steer suggestions

--work-context "feature: user auth"

--branch-context TEXT

Override the context detected from the branch name

--branch-context "bugfix: login flow"

--context-dir PATH

Custom context directory

--context-dir ./config

--model MODEL

Claude API model to use (defaults from settings)

--model claude-sonnet-4-5

--beta-header KEY:VALUE

Beta header for API requests (model-gated)

--beta-header key:value

--concurrency N

Number of parallel commit processors (default: 4)

--concurrency 3

--no-coherence

Skip cross-commit coherence refinement pass

--no-coherence

--no-ai

Skip AI; output the repository analysis YAML only

--no-ai

--auto-apply

Apply without confirmation

--auto-apply

--allow-pushed

Allow amending commits already in remote main branches

--allow-pushed

--check

Validate the messages after applying

--check

--save-only FILE

Save to file without applying

--save-only fixes.yaml

--quiet

Only show errors/warnings

--quiet

See the User Guide's Key Options table for the full reference; omni-dev git commit message twiddle --help is the source of truth.

📖 Real-World Examples

Before & After

Before: Messy commit history

e4b2c1a fix stuff
a8d9f3e wip
c7e1b4f update files
9f2a6d8 more changes

After: Professional commit messages

e4b2c1a feat(auth): implement JWT token validation system
a8d9f3e docs(api): add comprehensive OpenAPI documentation
c7e1b4f fix(ui): resolve mobile responsive layout issues
9f2a6d8 refactor(core): optimize database query performance

Workflow Integration

# 1. Work on your feature branch
git checkout -b feature/user-dashboard

# 2. Make commits (don't worry about perfect messages)
git commit -m "wip"
git commit -m "fix stuff"
git commit -m "add more features"

# 3. Before merging, improve all commit messages
omni-dev git commit message twiddle 'main..HEAD' --use-context

# 4. Create professional PR with AI-generated description
omni-dev git branch create pr

# ✅ Professional commit history + comprehensive PR description ready for review

Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Setup

  1. Clone the repository:

    git clone https://github.com/rust-works/omni-dev.git
    cd omni-dev
  2. Install Rust (if you haven't already):

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  3. Build the project:

    cargo build
  4. Run the build script (includes tests, linting, and formatting):

    ./scripts/build.sh

    Or run individual steps:

    cargo test         # Run tests
    cargo clippy       # Run linting
    cargo fmt          # Format code

📚 Documentation

🔧 Requirements

  • Rust: 1.80+ (for installation from source)

  • Claude API Key: Required for AI-powered features

  • AI Model Selection: Optional configuration for specific models

    • View available models: omni-dev config models show

    • Pick per-invocation with the global --model flag, or configure via OMNI_DEV_MODEL / the per-backend env chain (CLAUDE_MODEL, CLAUDE_CODE_MODEL, ANTHROPIC_MODEL for Claude-family backends; OPENAI_MODEL; OLLAMA_MODEL) or ~/.omni-dev/settings.json

    • Supports standard identifiers and Bedrock-style formats

  • Atlassian Credentials (for JIRA/Confluence features): Instance URL, email, and API token

    • Configure with: omni-dev atlassian auth login

  • Datadog Credentials (for Datadog features): API key, application key, and site

    • Configure with: omni-dev datadog auth login

  • Git: Any modern version

AI backend selection

omni-dev supports five AI backends. The global --ai-backend flag (or OMNI_DEV_AI_BACKEND) selects one decisively — default, claude-cli, openai, ollama, or bedrock:

  • --ai-backend claude-cli — sandboxed claude -p subprocess that reuses your Claude Code session.

  • --ai-backend ollama — local Ollama or LM Studio server.

  • --ai-backend openai — OpenAI Chat Completions API.

  • --ai-backend bedrock — AWS Bedrock.

  • --ai-backend default (or no flag) — direct Anthropic API.

When OMNI_DEV_AI_BACKEND is unset, the legacy USE_OLLAMA=true / USE_OPENAI=true / CLAUDE_CODE_USE_BEDROCK=true variables still select their backends, in that order.

See the AI Backends Guide for required env vars, model selection, the Claude CLI sandbox and its escape hatches (--claude-cli-allow-tools, --claude-cli-allow-mcp), the --claude-cli-max-budget-usd spending cap, and per-backend troubleshooting.

🐛 Debugging

For troubleshooting and detailed logging, use the RUST_LOG environment variable:

# Enable debug logging for omni-dev components
RUST_LOG=omni_dev=debug omni-dev git commit message twiddle ...

# Debug specific modules (e.g., context discovery)  
RUST_LOG=omni_dev::claude::context::discovery=debug omni-dev git commit message twiddle ...

# Show only errors and warnings
RUST_LOG=warn omni-dev git commit message twiddle ...

See Troubleshooting Guide for detailed debugging information.

Changelog

See CHANGELOG.md for a list of changes in each version.

License

This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.

Support

Acknowledgments

  • Thanks to all contributors who help make this project better!

  • Built with ❤️ using Rust

Available Tools

148 tools
ai_chatA

Send a single message to the configured AI (Claude/OpenAI/Ollama/Bedrock) and return its response. Non-streaming, single-turn. Optionally override the model (model) and the system prompt (system_prompt). On missing credentials, returns a tool error containing the same diagnostic the CLI would print. Mirrors omni-dev ai chat in one-shot form — that CLI command is interactive and has no system_prompt flag, so this tool is the only way to set a custom system prompt. Supply the message as message (inline) OR message_path (a filesystem path the server reads) — not both; prefer the path form when the message is already on disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoOptional model identifier (e.g., `claude-sonnet-4-6`). When omitted, the backend's environment-configured default model is used; call `config_models_show` to see the identifiers the CLI recognises.
messageNoUser message to send to the AI, e.g. `"Summarise this diff in one sentence."`. Sent as a single turn; there is no conversation history. Mutually exclusive with `message_path`; exactly one is required.
message_pathNoFilesystem path the server reads the message from, instead of `message`. Prefer this when the message is already on disk (e.g. a large prompt or document) — it avoids re-emitting it inline. Mutually exclusive with `message`.
system_promptNoOptional system prompt; defaults to `"You are a helpful assistant."`. MCP-only: the interactive `omni-dev ai chat` CLI has no equivalent flag, so this override is reachable only through the tool.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the full burden. It correctly discloses key behavioral traits: non-streaming, single-turn, optional model/system prompt overrides, mutual exclusivity of message parameters, and error handling for missing credentials. However, it does not explicitly state whether the tool is read-only or has any side effects, and the return value format is not described.

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

Conciseness5/5

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

The description is concise, front-loaded with the main purpose, and each sentence adds unique value (features, comparison, parameter guidance). No redundant or filler content.

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

Completeness4/5

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

Given the absence of an output schema, the description could better explain the return value format or structure. It mentions 'return its response' and error handling, but agents might need more detail. However, for a chat tool, the response is typically straightforward, so the gap is minor.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by reinforcing mutual exclusivity of message and message_path, explaining the CLI comparison for system_prompt, and advising preference for the path form. This goes beyond the schema's description, providing practical usage context.

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

Purpose5/5

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

The description clearly states the verb 'Send' and the resource 'message to the configured AI', listing supported backends. It distinguishes the tool from siblings by specifying it's a single-message, non-streaming tool, which is unique among the listed siblings that are mostly Atlassian, Datadog, Git, Jira, Snowflake, and transcript tools.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use (single-turn, non-streaming), mentions optional overrides, compares to the CLI command (noting differences like the system prompt flag), and advises preferring message_path when the message is already on disk. Also describes error behavior on missing credentials, helping the agent decide when this tool is appropriate.

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

atlassian_auth_statusA

Report which Atlassian credential scopes have credentials configured. Returns boolean presence flags only — NEVER includes the email, API token, or any other secret. The instance URL (non-secret) is returned verbatim. Checks local configuration only; it does NOT call the Atlassian API to validate the credentials (unlike omni-dev atlassian auth status, which signs in and prints the authenticated user). Takes no arguments. Read-only. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries full burden and delivers comprehensively. It discloses that it returns boolean presence flags only, never secrets, returns the instance URL verbatim, is read-only, and outputs YAML. Every behavioral trait is transparently stated, leaving no ambiguity about side effects or data handling.

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

Conciseness5/5

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

The description is front-loaded with the primary purpose and every sentence adds distinct value: secret safety, URL handling, local-only behavior, CLI contrast, no arguments, read-only, output format. It is concise yet information-dense, with no redundant phrases.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no output schema, no annotations), the description is remarkably complete. It covers functionality, limitations, return content, safety, and output format. It also provides contrast with a relevant alternative, fully equipping the agent to use and interpret the tool correctly.

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

Parameters4/5

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

The input schema is an empty object, indicating zero parameters. The description explicitly states 'Takes no arguments,' which aligns with the schema. With no parameters to document, the description adds no semantic details, but the baseline of 4 is appropriate for a zero-parameter tool.

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

Purpose5/5

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

The description clearly states the tool's function: 'Report which Atlassian credential scopes have credentials configured.' The verb 'report' and specific resource 'Atlassian credential scopes' make the purpose unambiguous. It also distinguishes itself from the CLI alternative by clarifying what it does not do (validate credentials).

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

Usage Guidelines5/5

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

The description explicitly contrasts this tool with `omni-dev atlassian auth status`, stating it checks local configuration only and does NOT call the API to validate credentials. This provides clear when-to-use and when-not-to-use guidance, with an explicit alternative named for validation.

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

atlassian_convertA

Convert between JFM (JIRA-Flavoured Markdown) and ADF (Atlassian Document Format) JSON. Bidirectional and fully offline — performs no network I/O and needs no Atlassian credentials. Set direction to "to-adf" to convert JFM markdown into an ADF JSON document (e.g. # Title becomes {"version":1,"type":"doc","content":[...]}), or "from-adf" to render an ADF JSON document back into JFM markdown. Use it to preview or inspect the ADF a JIRA/Confluence write tool would send. Output is the converted document (JSON for to-adf, markdown for from-adf). Mirrors omni-dev atlassian convert to-adf / from-adf.

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoWhen `direction = to-adf`, emit compact JSON instead of pretty-printed.
contentYesThe content to convert. For `to-adf` this is JFM markdown; for `from-adf` this is an ADF JSON document.
directionYesDirection of the conversion: `to-adf` (markdown → ADF JSON) or `from-adf` (ADF JSON → markdown).
strip_local_idsNoWhen `direction = from-adf`, strip `localId` attributes from output for better readability. For reading only — do NOT write stripped output back to Confluence, as `localId`s anchor inline comments and dropping them makes Confluence lose those comments.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description discloses that the tool is bidirectional, fully offline, performs no network I/O, and needs no credentials. It also warns about the 'strip_local_ids' parameter's potential impact on Confluence comments, adding important behavioral context.

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

Conciseness5/5

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

The description is remarkably concise with no filler. Three sentences cover purpose, behavior, examples, and a critical warning. Front-loaded with the core purpose.

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

Completeness4/5

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

Given high schema coverage, no output schema, and no annotations, the description is adequately complete. It explains purpose, behavior, parameter usage, and even provides example output format for one direction. Lack of explicit output schema description is acceptable.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by giving conversion examples for 'direction' and explaining 'compact' and 'strip_local_ids' with usage warnings, beyond the schema's descriptions.

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

Purpose5/5

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

The description states 'Convert between JFM and ADF JSON' with a specific verb and resource. It distinguishes from sibling tools by emphasizing offline, credential-free conversion, which no other tool offers.

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

Usage Guidelines4/5

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

The description advises using the tool to 'preview or inspect the ADF a JIRA/Confluence write tool would send' and highlights offline operation, giving clear context. It does not explicitly state when not to use or name alternatives, but the context is sufficient.

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

browser_bridge_requestA

Send one HTTP request through a running, authenticated browser-bridge tab and return the buffered response envelope (status, headers, body) as YAML. Mirrors omni-dev browser bridge request. Requires a running bridge (omni-dev browser bridge serve or the daemon's bridge service) and a session token from OMNI_BRIDGE_TOKEN or token_file. NOT read-only — the request runs with the tab's session, so a non-GET method can mutate remote state. url is relative to the tab's page origin unless allow_origin permits a cross-origin target. Streaming responses are not supported here.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesRequest URL, relative to the browser's page origin (e.g. `/api/foo`).
bodyNoRequest body, sent verbatim (no `@file` expansion — pass content inline).
methodNoHTTP method. Defaults to `GET`.GET
targetNoRoute to a specific connected tab: a connection id (from `/__bridge/status`) or an `Origin` that uniquely matches one tab. Required when more than one tab is connected.
headersNoRequest headers as a `{ "Name": "Value" }` map. Validated for safety.
token_fileNoRead the session token from this `0600` file instead of the `OMNI_BRIDGE_TOKEN` environment variable.
credentialsNoFetch credentials mode. Defaults to `include` (cookies/auth sent). Use `omit` to read a wildcard-CORS cross-origin response.
allow_originNoPermit a cross-origin outbound URL for this request only. Omit for same-origin (relative) requests.
control_portNoControl-plane port of the running bridge. Defaults to the standard port.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It clearly states the tool is NOT read-only and that requests run with the tab's session, potentially mutating remote state. It also mentions that streaming responses are not supported. This provides essential behavioral context beyond the basic purpose. However, it does not disclose rate limits or detailed auth requirements beyond the token, but the mutation warning is prominent.

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

Conciseness5/5

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

The description is concise, with two well-structured paragraphs. The first sentence front-loads the action and output. Subsequent sentences cover prerequisites, behavioral warnings, URL behavior, and limitations. Every sentence adds value with no redundancy. It is appropriately sized for the tool's complexity.

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

Completeness4/5

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

The description covers the key aspects: what the tool does, prerequisites, behavioral warnings, URL constraints, credential modes, and limitation (no streaming). Given the lack of output schema and annotations, it provides sufficient context. It could mention error handling or return format details more explicitly, but the mention of 'response envelope (status, headers, body) as YAML' is adequate. Score 4 for good completeness relative to complexity.

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

Parameters3/5

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

Schema description coverage is 100%, meaning every parameter is described in the JSON Schema. The tool description adds some context (e.g., referencing the CLI, explaining relative URL, credential modes) but does not significantly expand on what is already in the schema. Baseline 3 is appropriate; the description does not greatly improve parameter understanding beyond the schema.

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

Purpose5/5

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

Description clearly states the action: sending an HTTP request through a browser-bridge tab and returning the response. It specifies the resource (running browser-bridge tab) and the output format (YAML envelope). Distinguishes itself from sibling tools which are unrelated (e.g., Jira, Confluence tools) by referencing the specific browser bridge context and CLI command.

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

Usage Guidelines4/5

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

Description explains prerequisites: requires a running bridge and a session token from environment variable or file. It explicitly warns that the tool is not read-only and can mutate remote state with non-GET methods. It clarifies URL behavior (relative to origin unless allow_origin set). However, it does not explicitly state when NOT to use this tool or mention alternative tools, but the context is clear enough.

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

claude_skills_cleanA

Remove the skill symlinks under .claude/skills/ and the managed exclude block created by a prior claude_skills_sync — the inverse of that tool. MUTATES THE FILESYSTEM. Real files (non-symlinks) are preserved, never deleted. Operates relative to the server process's cwd. Use claude_skills_status first if you want to see what would be removed. Mirrors omni-dev ai claude skills clean.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: `"text"` (default) or `"yaml"`.
worktreesNoWhen true, also operate on every worktree belonging to the target repository.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly warns 'MUTATES THE FILESYSTEM', states that real files are never deleted ('Real files (non-symlinks) are preserved, never deleted'), and clarifies scope ('Operates relative to the server process's cwd'). This is exemplary transparency for a destructive tool.

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

Conciseness5/5

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

The description is four sentences, each serving a distinct purpose: state the action, warn about mutation, assure safety, and reference related tools. It is front-loaded with the verb 'Remove' and contains zero fluff.

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

Completeness5/5

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

Given the tool's complexity (2 optional params, no output schema), the description is complete: it explains what is removed, side effects, safety behavior, cwd scope, and how to preview. No essential information is missing for an agent to select and invoke it safely.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (`format` and `worktrees`) already explained in the input schema. The tool description adds no additional parameter semantics, so the baseline 3 applies per the rubric.

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

Purpose5/5

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

The description clearly states the tool's function: 'Remove the skill symlinks under `.claude/skills/` and the managed exclude block created by a prior `claude_skills_sync`'. It uses a specific verb ('Remove'), identifies the exact resources, and explicitly notes it is the inverse of `claude_skills_sync`, distinguishing it from siblings.

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

Usage Guidelines5/5

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

Provides explicit usage guidance: 'Use `claude_skills_status` first if you want to see what would be removed.' It also frames the tool as the inverse of `claude_skills_sync`, clarifying when it should be used (to undo a sync) and when to use an alternative (status for preview).

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

claude_skills_statusA

Report the skill symlinks under .claude/skills/ and the managed exclude-block entries left by prior claude_skills_sync runs. READ-ONLY — changes nothing, so it is the safe way to preview before calling claude_skills_sync or claude_skills_clean. Operates relative to the server process's cwd. Mirrors omni-dev ai claude skills status.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: `"text"` (default) or `"yaml"`.
worktreesNoWhen true, also inspect every worktree belonging to the target repository.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it declares 'READ-ONLY — changes nothing', explains the cwd-relative behavior, and mentions mirroring the `omni-dev` CLI. It doesn't detail output structure or edge cases, but for a read-only status tool this is strong transparency.

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

Conciseness5/5

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

Three succinct sentences: the first front-loads the primary outputs, the second adds safety/use-case, and the third covers operating scope and CLI parity. No redundancy or filler.

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

Completeness4/5

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

For a read-only status tool, the description covers purpose, usage context, safety profile, and operating scope. The schema fully documents parameters. While no output schema exists, the description's statement of what is reported (symlinks, exclude-block entries) conveys the return content adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (`format`, `worktrees`) are fully described in the input schema. The description adds no additional parameter-level meaning or hints, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Report the skill symlinks under `.claude/skills/` and the managed exclude-block entries'. It explicitly distinguishes itself from sibling tools by referencing `claude_skills_sync` and `claude_skills_clean`, making its unique purpose clear.

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

Usage Guidelines5/5

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

It explicitly provides usage guidance: 'the safe way to preview before calling `claude_skills_sync` or `claude_skills_clean`', naming the relevant alternatives and stating when to use this tool. It also adds the cwd-relative operating scope, giving concrete context.

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

claude_skills_syncA

Sync Claude Code skills from the current repository (the MCP server's current working directory) into target worktrees. MUTATES THE FILESYSTEM: creates symlinks inside .claude/skills/ (e.g. .claude/skills/my-skill -> ../../../.claude/skills/my-skill) and upserts a managed block in .git/info/exclude. Operates relative to the server process's cwd — not cross-project. Use claude_skills_clean to reverse this and claude_skills_status to inspect the result without changing anything. Mirrors omni-dev ai claude skills sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: `"text"` (default) or `"yaml"`.
worktreesNoWhen true, also operate on every worktree belonging to the target repository.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the transparency burden. It explicitly states 'MUTATES THE FILESYSTEM', details the creation of symlinks and updates to `.git/info/exclude`, and notes the operation is relative to the server cwd and not cross-project. This is comprehensive for a mutation tool.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus a short reference to a mirror command. Every sentence adds unique value—main action, behavioral details with all-caps warning, and alternatives with tool names. No wasted words.

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

Completeness5/5

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

Given the tool has 2 optional parameters, schema coverage 100%, no output schema, and the description details side effects, scope, and reversible alternatives, the description is complete. The output format is already described in the schema. There is no missing critical information.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add significant parameter-specific meaning beyond the schema; it mentions 'target worktrees' related to the `worktrees` parameter but does not elaborate on `format`. The schema already adequately describes both parameters.

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

Purpose5/5

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

The description clearly states the verb 'Sync' and the specific resource: 'Claude Code skills from the current repository into target worktrees.' It distinguishes from siblings by explicitly mentioning `claude_skills_clean` and `claude_skills_status` and noting that `claude_skills_status` inspects without changing anything.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: to sync skills from the current repo into worktrees. It explicitly names `claude_skills_clean` as the reverse operation and `claude_skills_status` for inspection. It does not include an explicit 'when not to use' section, but the alternatives are well-stated.

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

config_models_showA

Return the embedded models.yaml listing every supported AI model the CLI knows about, with each model's identifier, token limits (input context and max output tokens), and provider. Use this to discover the valid model values accepted by ai_chat and the git tools. Takes no arguments. Read-only. Output is YAML. Mirrors omni-dev config models show --embedded-only (the plain show additionally merges user/project overrides; this tool returns the embedded catalog only).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations were provided, but the description fully discloses behavior: 'Takes no arguments. Read-only. Output is YAML.' It also clarifies that this tool returns only the embedded catalog, while the plain `show` merges overrides, providing important edge-case context.

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

Conciseness5/5

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

The description is compact and front-loaded, delivering all key information in three sentences. It covers purpose, usage, output format, read-only nature, and the differentiation from the override-merging variant without unnecessary detail.

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

Completeness5/5

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

For a simple read-only tool with no parameters and no output schema, the description is complete: it specifies what is returned, the format (YAML), the exact data fields, and how it relates to other tools. It also preempts confusion about overrides by mentioning the embedded-only distinction.

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

Parameters4/5

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

The tool has 0 parameters and the input schema (empty object) already confirms this. The description redundantly states 'Takes no arguments,' which is harmless. Per the zero-parameter rule, a baseline of 4 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Return') and identifies the exact resource ('embedded `models.yaml`') and its contents. It clearly distinguishes this tool from siblings by noting it discovers valid `model` values for `ai_chat` and git tools, and further differentiates it from the plain `show` command.

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

Usage Guidelines5/5

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

It explicitly states 'Use this to discover the valid `model` values accepted by `ai_chat` and the git tools,' giving a clear purpose. It also contrasts with the non-embedded variant, which merges user/project overrides, providing when-to-use/not-use guidance.

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

confluence_attachment_deleteA

Delete a Confluence attachment by ID. Set purge: true to permanently purge instead of moving to trash (requires space admin). Mirrors omni-dev atlassian confluence attachment delete --force.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNoPermanently purge the attachment instead of moving it to trash (requires space admin). Defaults to false.
attachment_idYesAttachment ID.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses key destructive behaviors: default is moving to trash, and setting purge to true permanently removes (requiring admin rights). This exceeds the minimal expectation and contextualizes the delete operation's consequences.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action, and includes the critical purge nuance. Every sentence contributes value; the CLI mirror reference is a compact way to signal parity with an existing command. No wasted words.

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

Completeness4/5

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

Given the 100% schema coverage, the tool's purpose, and the crucial purge behavior, the description is sufficient for correct invocation. It lacks an explicit note about return values, but no output schema exists, and for a delete operation this is not an obvious gap. It could arguably mention irreversibility beyond trash, but that is already inferred from 'purge'.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (attachment_id, purge) are already documented. The description adds no extra meaning beyond echoing the purge parameter's behavior; it restates what the schema already says. Thus, 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.

Purpose5/5

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

The description clearly states the action ('Delete a Confluence attachment') and specifies the identifier ('by ID'). This resolves ambiguity with sibling tools like confluence_attachment_download or confluence_attachment_update, and the verb 'Delete' is unambiguous.

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

Usage Guidelines3/5

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

The description provides guidance on the purge behavior (e.g., 'permanently purge instead of moving to trash' and 'requires space admin'), which helps decide when to set purge. However, it does not explicitly mention alternatives or when-not-to-use, so the guidance is present but not comprehensive.

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

confluence_attachment_downloadA

Download a Confluence attachment by ID to disk. Returns YAML metadata (id, title, media_type, bytes, on-disk path). If output_path is omitted, the file is written to a fresh temp directory whose path is in the result; the assistant can then read it via the filesystem tool. Mirrors omni-dev atlassian confluence attachment download.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoDestination path on the MCP server's filesystem. If omitted, the file is written to a fresh temp directory whose path is returned in the result so the assistant can read it via the filesystem tool. If this names an existing directory, the file is written inside it under the attachment's filename.
attachment_idYesAttachment ID (from `confluence_attachment_list`).

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It discloses disk write behavior, temp directory fallback, and return metadata. However, it omits overwrite behavior for existing files, error handling, and permission requirements.

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

Conciseness5/5

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

Three sentences, front-loaded with the main action, no superfluous words. Every sentence adds essential information.

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

Completeness4/5

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

No output schema, but description explains return metadata (id, title, media_type, bytes, path). Covers temp directory behavior well. Minor gaps: no mention of error conditions or file overwrite policy.

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

Parameters3/5

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

Schema coverage is 100%, baseline is 3. The description adds value for output_path by explaining temp directory behavior, but attachment_id is simply restated from schema. Overall marginal addition.

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

Purpose5/5

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

The description clearly states 'Download a Confluence attachment by ID to disk' with a specific verb and resource. It distinguishes from sibling tools like confluence_attachment_list and confluence_attachment_delete by focusing on the download action.

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

Usage Guidelines4/5

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

The description provides context on when to omit output_path (file goes to temp dir) and suggests reading the file via the filesystem tool. It references a CLI mirror for familiarity, but lacks explicit when-not-to-use or alternatives.

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

confluence_attachment_listA

List attachments on a Confluence page (one page per call). Pass the returned next_cursor back as cursor to fetch the next page. limit defaults to 25. Mirrors omni-dev atlassian confluence attachment list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of attachments per page. Defaults to 25.
cursorNoPagination cursor (use `next_cursor` from a previous call).
page_idYesConfluence page ID.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry full transparency burden. It explains pagination behavior but does not explicitly state that this tool is read-only or has no side effects. The default limit and cursor usage are disclosed, but additional behavioral traits (e.g., authentication needs, rate limits) 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.

Conciseness5/5

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

Three sentences, each with a distinct purpose: purpose, pagination usage, default and mirror. No wasted words, front-loaded with core functionality.

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

Completeness3/5

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

The description covers pagination and defaults but lacks details on return format (e.g., what fields are in each attachment). Given no output schema, mentioning that it returns attachment metadata would improve completeness. For a simple list tool, it is adequate but has a gap.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description reinforces parameter usage (limit defaults to 25, cursor pagination) but does not add new meaning beyond the schema. The mirroring note is not param-related.

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

Purpose5/5

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

The description clearly states it lists attachments on a Confluence page, with the specificity 'one page per call'. The verb 'List' and resource 'attachments on a Confluence page' are precise. Among siblings, there is no other attachment listing tool, so it is well-differentiated.

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

Usage Guidelines4/5

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

The description explicitly explains how to use pagination ('Pass the returned next_cursor back as cursor') and notes the default limit. However, it does not specify when to use this tool versus alternatives (e.g., for non-attachment content, use other reading tools). The guidance for pagination is clear.

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

confluence_attachment_updateA

Upload a new binary version of an EXISTING Confluence attachment (by page_id + attachment_id from confluence_attachment_list), bumping its version instead of creating a second attachment. file_path is a path on the MCP server's filesystem (streamed from disk). Optional filename / comment / minor_edit as with upload. Returns YAML describing the updated attachment. Mirrors omni-dev atlassian confluence attachment update.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional version comment recorded with the new version.
page_idYesConfluence page ID the attachment lives on.
filenameNoOverride the filename used in Confluence (defaults to the local basename).
file_pathYesLocal filesystem path whose contents become the new version. Streamed from disk (never fully buffered in memory).
minor_editNoMarks the new version as a minor edit. Defaults to false.
attachment_idYesAttachment ID to update (from `confluence_attachment_list`).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it bumps the version rather than creating a duplicate, file_path is streamed from disk (never fully buffered), and it returns YAML describing the updated attachment. It references optional parameters 'as with upload' to inherit behavior. It does not cover permissions or error cases, but the available information is meaningful and non-obvious.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose. It covers the key differentiator (update vs create), input requirements, file handling, optional params, return format, and a reference to the CLI mirror. No wasteful words.

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

Completeness4/5

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

Given the tool has 6 parameters, no output schema, and no annotations, the description is reasonably complete. It explains the main behavior, how to identify the attachment, the file path semantics, return type, and optional params. It omits error handling, authentication prerequisites, and whether previous versions are preserved, but those are secondary for successful invocation. The sibling tool references fill additional context.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds useful context beyond the schema: it explains that page_id and attachment_id come from confluence_attachment_list, that file_path is a server-side path, and that optional params behave 'as with upload'. However, it does not add deep semantic detail for each parameter beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool updates an existing Confluence attachment by uploading a new binary version, with the specific behavior of 'bumping its version instead of creating a second attachment.' It distinguishes itself from the sibling confluence_attachment_upload by explicitly focusing on EXISTING attachments and referencing the source of IDs.

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

Usage Guidelines4/5

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

The description gives clear usage context: use this tool when you need to update an existing attachment identified by page_id and attachment_id from confluence_attachment_list, contrasting it with 'creating a second attachment' (implying the alternative of upload). It does not provide an explicit 'when not to use' but the contrast with upload is sufficiently clear. The 'as with upload' reference also guides on optional parameters.

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

confluence_attachment_uploadA

Upload a local file as an attachment to a Confluence page. file_path is a path on the MCP server's filesystem (the file is streamed from disk, never fully buffered). Optional filename overrides the stored name; comment is recorded as a version note; minor_edit (default false) marks the upload as minor. Returns YAML describing the new attachment. Mirrors omni-dev atlassian confluence attachment upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional version comment recorded with the upload.
page_idYesConfluence page ID to attach the file to.
filenameNoOverride the filename used in Confluence (defaults to the local basename).
file_pathYesLocal filesystem path to the file to upload. Streamed from disk (never fully buffered in memory).
minor_editNoMarks the upload as a minor edit. Defaults to false.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly notes that file_path is on the MCP server's filesystem and streamed from disk (never fully buffered), which is critical technical context. It also explains the effect of comment, filename, and minor_edit parameters and states the return format (YAML). This is rich, transparent behavior disclosure.

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

Conciseness5/5

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

The description is three sentences, front-loads the primary purpose, and every sentence adds value. It efficiently covers the main action, file handling behavior, optional parameters, and return format with no fluff or redundancy.

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

Completeness5/5

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

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is remarkably complete. It explains all optional parameters, the return format, and the streaming behavior. The only minor gap is no mention of error conditions (e.g., missing file), but this is not essential for a task-completion-focused agent, and the schema covers required parameters. The description fully equips an agent to use the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds significant meaning beyond the schema. It clarifies that file_path is server-side and streamed, explains filename overrides the stored name, comment becomes a version note, and minor_edit defaults to false. This adds value beyond the schema's descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Upload a local file as an attachment to a Confluence page.' This clearly distinguishes it from sibling tools like confluence_attachment_download, confluence_attachment_delete, and confluence_attachment_list. The scope is precise and immediately understandable.

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

Usage Guidelines4/5

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

The description clearly implies use for uploading files as page attachments, and the verb 'Upload' differentiates it from alternative operations. However, it lacks explicit guidance on when not to use this tool or mention of alternatives like confluence_attachment_update, so it earns a 4 rather than a 5.

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

confluence_childrenA

List children of a Confluence page (pass id, e.g. "12345678"), or top-level pages in a space (pass space, e.g. "ENG") — id and space are mutually exclusive. Supports optional recursion with a max depth, so this is the tool for walking a page hierarchy. To enumerate EVERY page in a space (flat, with status/sort filters and cursor pagination) use confluence_space_pages instead. Mirrors omni-dev atlassian confluence children.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoPage ID whose children should be listed. Omit when using `space`.
spaceNoSpace key (mutually exclusive with `id`): list top-level pages in the space.
max_depthNoMaximum tree depth when `recursive` is set (0 = unlimited).
recursiveNoRecursively fetch descendants.

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses mutual exclusivity of id and space, optional recursion, and max depth semantics, but does not mention pagination, sort order, or error behavior. These are relevant for a listing tool, so the transparency is decent but not rich.

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

Conciseness5/5

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

The description is three sentences, each with a distinct purpose: core usage, ideal use case, and alternative. Examples are inline and the text is front-loaded with the main action. There is no fluff.

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

Completeness4/5

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

The tool has no output schema and no annotations, so the description is critical. It covers both input modes, recursion, and sibling differentiation. The only gap is the absence of return shape or pagination details, but a simple list tool can be considered adequately specified.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by providing example values for id and space and explicitly linking max_depth to recursion ('Maximum tree depth when recursive is set'). This adds meaningful usage context.

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

Purpose5/5

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

The description clearly states the action ('List children') and the two invocation modes (page ID or space key), with concrete examples. It also distinguishes itself from confluence_space_pages, making its role as a hierarchical traversal tool unambiguous.

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

Usage Guidelines5/5

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

Explicit guidance is given: 'so this is the tool for walking a page hierarchy' and a direct alternative is named: 'To enumerate EVERY page in a space (flat, with status/sort filters and cursor pagination) use confluence_space_pages instead.' This fully satisfies when-to-use vs alternatives.

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

confluence_comment_addA

Post a markdown comment to a Confluence page as a page-level footer comment. The content is converted to ADF before posting. Supply the body as content (inline) OR content_path (a filesystem path the server reads) — not both. For inline (anchored) comments, use confluence_comment_add_inline. Mirrors omni-dev atlassian confluence comment add.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
contentNoMarkdown content of the comment body. Converted to ADF before posting. Mutually exclusive with `content_path`; exactly one is required.
content_pathNoFilesystem path the server reads the comment body from, instead of `content`. Prefer this when the body is already on disk. Mutually exclusive with `content`.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses that content is converted to ADF before posting, which is a key transformation. In absence of annotations, the description adds this behavioral detail. Does not cover error handling or return values, but sufficiently describes core behavior.

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

Conciseness5/5

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

Three sentences, each essential: defines action, clarifies input options, and directs to alternative tool. No redundancy or unnecessary words.

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

Completeness3/5

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

The description is adequate for the tool's simplicity but lacks information on return values (e.g., comment ID) since no output schema exists. Also omits prerequisites like page existence. Given the absence of annotations, this is a noticeable gap.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds meaning beyond schema by explaining the mutual exclusivity of 'content' and 'content_path' and that 'content_path' is a filesystem path the server reads. This clarifies usage beyond the schema's property descriptions.

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

Purpose5/5

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

The description clearly states the tool 'Post a markdown comment to a Confluence page as a page-level footer comment.' It differentiates from the sibling 'confluence_comment_add_inline' by specifying 'page-level footer comment' versus inline, and mentions the conversion to ADF.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'For inline (anchored) comments, use confluence_comment_add_inline' gives a clear alternative. Also explains the mutually exclusive parameters 'content' and 'content_path' with 'not both'. References the CLI mirror for cross-tool consistency.

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

confluence_comment_add_inlineA

Post a markdown comment anchored to a text selection on a Confluence page (an inline comment). For a page-level comment not tied to any text, use confluence_comment_add instead. Supply the body as content (inline) OR content_path (a filesystem path the server reads) — not both. anchor_text must match the on-page text exactly; if it appears multiple times, pass match_index (1-based) to pick which occurrence. Errors if the anchor does not match or match_index is out of range. Mirrors omni-dev atlassian confluence comment add-inline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
contentNoMarkdown content of the comment body. Converted to ADF before posting. Mutually exclusive with `content_path`; exactly one is required.
anchor_textYesExact text on the page that the comment should anchor to.
match_indexNo1-based occurrence to anchor to when `anchor_text` appears more than once on the page. Required for ambiguous anchors; rejected if out of range.
content_pathNoFilesystem path the server reads the comment body from, instead of `content`. Prefer this when the body is already on disk. Mutually exclusive with `content`.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses error conditions ('Errors if the anchor does not match or `match_index` is out of range'), exact-match requirement for `anchor_text`, and mutual exclusivity of `content`/`content_path`. This goes beyond the bare operation, though it does not describe return values or permissions.

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

Conciseness5/5

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

Four sentences with no filler. First sentence defines purpose, second gives sibling differentiation, third covers parameter constraints, fourth states error behavior. Each sentence earns its place.

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

Completeness5/5

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

For a tool with 5 params, no output schema, and no annotations, the description covers purpose, when-to-use, parameter relationships, and error behavior. It is sufficiently complete for an agent to select and invoke correctly, though it omits explicit return-value details.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by explaining the `content` vs `content_path` mutual exclusion and the 1-based `match_index` disambiguation rule, which are not fully captured in the schema's property descriptions.

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

Purpose5/5

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

The description clearly states 'Post a markdown comment anchored to a text selection on a Confluence page' — a specific verb and resource. It explicitly contrasts with sibling `confluence_comment_add` for page-level comments, making differentiation unambiguous.

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

Usage Guidelines5/5

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

Explicitly directs when to choose the alternative: 'For a page-level comment not tied to any text, use `confluence_comment_add` instead.' It also explains parameter selection trade-offs between `content` and `content_path`, and when `match_index` is needed.

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

confluence_comment_auditA

Audit every inline comment on a Confluence page for anchor drift. Inline-comment anchors do NOT follow text edits: when the annotated text is rewritten, Confluence leaves the mark on whatever original characters survive, so comments end up torn across fragments, slid onto unrelated text, or dropped. This compares each comment's currently-anchored text against the reviewer's durable original highlight and returns YAML with a per-comment status (ok/torn/mark_lost/drifted), the original vs. current anchored text, and a suggested_new_anchor for drifted comments. Read-only — fix drift with confluence_comment_reanchor. Mirrors omni-dev atlassian confluence comment audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it explains that anchors do NOT follow text edits, describes failure modes (torn, drifted, mark_lost), confirms the tool is read-only, and details the YAML output including statuses and suggested_new_anchor. This goes beyond simple operation to explain the underlying mechanism.

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

Conciseness5/5

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

The description is moderately long but every sentence is information-dense: problem statement, mechanism, output format, status values, and alternative tool. It is front-loaded with the main purpose and ends with a mirror reference, with no filler.

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

Completeness5/5

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

Given no output schema, the description compensates by explicitly listing the YAML contents (status, original/current anchored text, suggested_new_anchor). It also covers the conceptual context (why drift happens) and references a sibling tool, making it complete for a single-parameter audit tool.

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

Parameters3/5

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

The only parameter 'id' is described in the schema as 'Confluence page ID.' The description adds no new parameter-specific details beyond already using 'page' in the text, so it does not exceed the schema's coverage. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Audit every inline comment on a Confluence page for anchor drift.' It clearly distinguishes this tool from siblings by describing its diagnostic role and explicitly naming the pairing tool 'confluence_comment_reanchor' for fixes.

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

Usage Guidelines5/5

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

The description provides explicit usage context: it diagnoses anchor drift issues. It also states 'Read-only — fix drift with `confluence_comment_reanchor`,' directly telling the agent when to use this tool versus the alternative.

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

confluence_comment_deleteA

Delete a Confluence comment (by comment_id from confluence_comment_list). kind must be "footer" or "inline". Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Returns YAML. Mirrors omni-dev atlassian confluence comment delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes`"footer"` or `"inline"` — the v2 API uses separate endpoints.
confirmYesMust be `true` — destructive guard.
comment_idYesComment ID to delete (from `confluence_comment_list`).

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description transparently states irreversibility, destructive guard (confirm: true), return format (YAML), and prevents accidental API calls. Lacks rate limit or auth details.

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

Conciseness5/5

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

Three sentences, front-loaded with the action, no fluff. Every sentence adds critical information: action, constraints, behavior, return format, and CLI mirror.

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

Completeness5/5

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

For a simple deletion tool with 3 parameters, no output schema, and no annotations, the description covers purpose, usage constraints, behavioral implications, and return type completely.

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

Parameters4/5

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

Schema covers 100% of parameters; description adds value by linking comment_id to the list tool and emphasizing the confirm parameter as a destructive guard, providing context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool deletes a Confluence comment, specifies the required comment_id from the list tool, and distinguishes between footer and inline kinds, differentiating 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.

Usage Guidelines4/5

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

The description provides context on when to use (after listing comments) and constraints (kind values, confirm guard), but does not explicitly contrast with alternatives like editing or resolving comments.

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

confluence_comment_editA

Edit an existing Confluence comment's body (by comment_id from confluence_comment_list). kind must be "footer" or "inline". The new body replaces the current text; supply it as content (inline) OR content_path (a filesystem path the server reads) — not both. Returns YAML. Mirrors omni-dev atlassian confluence comment edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes`"footer"` or `"inline"` — the v2 API uses separate endpoints.
contentNoNew markdown body. Converted to ADF. Mutually exclusive with `content_path`; exactly one is required.
comment_idYesComment ID to edit (from `confluence_comment_list`).
content_pathNoFilesystem path the server reads the new body from, instead of `content`.

TDQS

A4.2/5.0
Behavior3/5

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

Describes that the new body replaces current text, returns YAML, and mentions API endpoint differences for kind. No annotations exist, so description carries the burden; it would benefit from disclosing side effects (e.g., irreversible replacement) or auth needs. Adequate but not exhaustive.

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

Conciseness5/5

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

Concise at 5 sentences, each providing essential information without redundancy. Information is front-loaded with action and key constraints.

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

Completeness4/5

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

Covers key operational aspects: required parameters, constraint on kind, mutual exclusivity, return format (YAML). Missing details on return value structure and error scenarios, but given simplicity of tool, it is mostly complete.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds valuable context: origin of comment_id, enumeration of kind values, mutual exclusivity detail, and markdown-to-ADF conversion. This extra semantics justifies a 4.

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

Purpose5/5

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

The description clearly states the action (edit), resource (existing Confluence comment body), and identifier (by comment_id from confluence_comment_list). It distinguishes from siblings by specifying it edits rather than adds, deletes, or lists.

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

Usage Guidelines4/5

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

Provides clear guidance on parameter constraints (kind must be footer or inline, mutual exclusivity of content and content_path). Mentions CLI mirror for familiarity. However, does not include prerequisites like edit permissions or conditions for use vs alternatives.

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

confluence_comment_listA

List comments on a Confluence page (auto-paginated). kind selects "footer", "inline", or "all" (default — both kinds merged and sorted by creation time). limit of 0 returns every comment. Inline comments include their inline_marker_ref and durable inline_original_selection (the reviewer's original highlight); note that inline-comment anchors do NOT follow text edits — use confluence_comment_audit to detect drift and confluence_comment_reanchor to fix it. Comment authors are returned as Atlassian account IDs (e.g. 557058:...) — resolve them to display names with confluence_user_get (pass every distinct author ID in one call). Mirrors omni-dev atlassian confluence comment list.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
kindNoWhich kind of comments to include: `"footer"`, `"inline"`, or `"all"` (the default — both, merged and sorted by creation time).
limitNoMaximum number of comments to return (0 = unlimited).

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: auto-pagination, `kind` parameter options and default behavior, `limit=0` returns all, inline comment fields and the caveat that anchors do not follow text edits, and author IDs format. This is comprehensive and transparent.

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

Conciseness5/5

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

The description is a concise paragraph, front-loaded with primary purpose, followed by parameter behavior, inline specifics, and author ID resolution. Every sentence adds value; no redundancy or fluff.

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

Completeness4/5

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

Given no output schema, the description covers key aspects: auto-pagination, inline comment details, author IDs. However, it does not specify the complete structure of a comment object (e.g., fields like body, created date) or pagination mechanics, leaving some gaps for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds some detail about inline comment fields (inline_marker_ref, durable inline_original_selection) which relates to the output rather than input parameters. For `kind` and `limit`, the description largely repeats schema descriptions.

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

Purpose5/5

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

The description clearly states 'List comments on a Confluence page (auto-paginated)', specifying verb and resource. It distinguishes from sibling tools like `confluence_comment_add` and `confluence_comment_audit` by focusing on listing, and mentions auto-pagination as a feature.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool vs alternatives. It provides tips on using `confluence_user_get` for author IDs and `confluence_comment_audit` for drift, but lacks a clear 'when to use this' statement. The sibling list is given, but the description itself offers no direct guidance on selection.

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

confluence_comment_reanchorA

Move an inline comment's anchor to a new run of text in a Confluence page's current ADF, then write the page back in one update — the fix for a comment flagged as drifted/mark_lost by confluence_comment_audit. Pass the inline comment_id and the exact anchor_text to move it to; match_index (1-based) disambiguates when the text occurs more than once. The anchor may span multiple runs (e.g. a phrase split by bold) but not a block boundary. Operates entirely on ADF — it never round-trips through JFM, which would discard the annotation marks. Set dry_run: true to validate and preview the move without writing. Mirrors omni-dev atlassian confluence comment reanchor.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
dry_runNoWhen true, validate and return what would change without writing the page. Defaults to `false`.
comment_idYesThe inline comment ID to re-anchor.
anchor_textYesExact text on the current page to move the comment's anchor to.
match_indexNo1-based occurrence to anchor to when `anchor_text` appears more than once on the page. Required for ambiguous anchors; rejected if out of range.

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It mentions key behavioral traits: operates entirely on ADF without round-tripping through JFM (preserving marks), and supports dry_run for validation. But does not disclose if the operation is reversible, what happens to the old anchor, or required permissions.

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

Conciseness4/5

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

Single paragraph, front-loaded with purpose. Sentences are informative but not excessively verbose. Some technical details (JFM, ADF) could be in a separate note, but overall concise and well-structured.

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

Completeness3/5

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

Given no output schema, the description does not explain return format or error handling. It covers usage context, parameter details, and dry_run behavior. Lacks information on what is returned on success/failure, making it slightly incomplete for an agent to fully assess the tool's output.

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

Parameters4/5

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

Schema has 100% coverage, so baseline is 3. Description adds value by explaining that match_index disambiguates occurrences, anchor_text must be exact and can span multiple runs but not block boundaries, and dry_run is for validation. This nuance goes beyond the schema descriptions.

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

Purpose5/5

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

Clearly states the action: 'Move an inline comment's anchor to a new run of text'. Identifies the specific resource (Confluence page ADF) and distinguishes from sibling tools by mentioning it is the fix for 'drifted'/'mark_lost' comments flagged by confluence_comment_audit.

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

Usage Guidelines4/5

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

Explicitly states the precise scenario for use: fixing comments flagged by confluence_comment_audit. Implicitly implies not to use for other comment operations. Does not explicitly list when not to use or alternative tools, but the context is clear.

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

confluence_comment_reopenA

Reopen a resolved inline Confluence comment (by comment_id from confluence_comment_list). Inline comments only. Returns YAML. Mirrors omni-dev atlassian confluence comment reopen.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesInline comment ID (from `confluence_comment_list`).

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. Description discloses return format (YAML) and that it mirrors a CLI command, but lacks details on side effects, permissions, or idempotency. Adequate for a simple reopen action.

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

Conciseness5/5

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

Three sentences, each earning its place: action, scope, return format, and reference. Front-loaded with verb and resource. No unnecessary words.

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

Completeness4/5

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

Given the simple tool (single param, no output schema), the description is largely complete. It mentions return format, source of ID, and inline-only constraint. Could mention error cases or required permissions for full completeness, but not critically missing.

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

Parameters4/5

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

Schema description covers 100% of the one parameter. Description adds value by noting comment_id comes from confluence_comment_list and that the tool is for inline comments only, providing context beyond the schema.

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

Purpose5/5

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

Clearly states the verb 'reopen', resource 'resolved inline Confluence comment', and specifies it's for inline comments only using comment_id from confluence_comment_list. Distinguishes from sibling tools like confluence_comment_resolve.

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

Usage Guidelines4/5

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

Explicitly says 'Reopen a resolved inline Confluence comment' and 'Inline comments only', giving clear context for when to use. Does not explicitly list alternatives or when not to use, but purpose is sufficiently specific.

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

confluence_comment_repliesA

List the replies (child comments) of a Confluence comment. kind must be "footer" or "inline" — Confluence stores reply chains on kind-specific endpoints, so the caller must commit to one. limit of 0 returns every reply. Mirrors omni-dev atlassian confluence comment replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes`"footer"` or `"inline"` — Confluence stores reply chains on a kind-specific endpoint, so the caller must commit to one.
limitNoMaximum number of replies to return (0 = unlimited).
comment_idYesParent comment ID.

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries full behavioral disclosure. It correctly notes that Confluence requires committing to a kind-specific endpoint, a key behavioral trait. It does not mention pagination beyond limit=0, but is otherwise transparent.

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

Conciseness4/5

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

The description is two sentences with clear front-loading and no fluff. The mention of mirroring a command adds minor redundancy but does not harm conciseness.

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

Completeness2/5

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

There is no output schema, and the description does not explain what fields or structure the reply list returns. It also lacks details on pagination behavior beyond limit=0. This leaves a significant gap in understanding the tool's output.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds context for kind (reason for requirement) and provides a concise note on limit=0 meaning unlimited. This adds slight value beyond the schema but does not substantially deepen understanding.

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

Purpose5/5

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

The description clearly states it lists replies (child comments) of a Confluence comment, using specific verb and resource. It distinguishes from siblings like confluence_comment_list by specifying that it targets replies to a specific comment and requires a kind parameter.

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

Usage Guidelines3/5

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

The description explains that kind must be 'footer' or 'inline' due to API constraints and that limit=0 returns all replies. However, it does not explicitly contrast with sibling tools or provide when-not to use, leaving usage guidance implied.

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

confluence_comment_resolveA

Resolve an inline Confluence comment (by comment_id from confluence_comment_list). Inline comments only. Returns YAML. Mirrors omni-dev atlassian confluence comment resolve.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesInline comment ID (from `confluence_comment_list`).

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided. Description mentions 'Returns YAML' but does not disclose destructive nature, permissions, rate limits, or other behavioral traits. Missing important context for a mutation tool.

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

Conciseness5/5

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

Two sentences: first defines purpose and parameter source, second adds return format and CLI reference. No fluff, front-loaded with key info.

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

Completeness3/5

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

Given single param and no output schema, description covers purpose, parameter origin, and return format. Lacks behavioral completeness (permissions, side effects) but adequate for a simple tool.

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

Parameters3/5

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

Only one parameter with schema coverage 100%. Description adds context that comment_id comes from `confluence_comment_list`, which is helpful but baseline is met. No additional semantic detail beyond schema.

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

Purpose5/5

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

Clearly states the action (resolve) and resource (inline Confluence comment). Distinguishes from siblings like edit, delete, reopen. Specific about inline only.

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

Usage Guidelines4/5

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

Specifies 'Inline comments only' and references the list tool for obtaining comment_id, implying use after listing. Mentions CLI mirror for familiarity. No explicit when-not-to-use, but context is clear.

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

confluence_compareA

Compare two versions of a Confluence page. Returns a structurally-aware diff: walks the ADF tree, splits the document into heading-delimited sections, and reports per-block changes rather than character-level deltas over a serialization.

Version refs accept "latest", "previous", "v-N" (e.g. "v-2"), a numeric version, or an ISO 8601 date. previous is relative to to.

Detail levels: summary (counts only), outline (default — per-section change kind + drill-in cursors), full (embeds per-section deltas, budget-truncated).

Mirrors omni-dev atlassian confluence compare run.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
toNo`to` version reference. Same accepted forms as `from`. Defaults to `"latest"`.
fromNo`from` version reference. Accepts `"latest"`, `"previous"`, `"v-N"` (e.g. `"v-2"`), a numeric version, or an ISO 8601 date. Defaults to `"previous"`.
budgetNoOutput budget in bytes. Defaults to ~16 KiB (≈4000 tokens).
detailNoDetail level: `"summary"`, `"outline"` (default), or `"full"`.
includeNoTop-level fields to include. Comma-separated. Accepted values: `"body"`, `"title"`, `"labels"`, `"metadata"`. Defaults to `"body,title,metadata"`.
filter_sectionsNoRestrict to sections whose path matches one of the given strings.
min_change_charsNoDrop section deltas with fewer than this many characters of total changed text. `0` (default) disables the filter.
ignore_whitespaceNoCollapse runs of whitespace before diffing. Defaults to `true`.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It details the diff approach, version reference formats, detail levels, and budget truncation. Some behavioral aspects like error handling are missing, but overall transparency is good.

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

Conciseness4/5

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

The description is well-structured with key points front-loaded. It is slightly verbose but every sentence adds value. Could be more concise without losing meaning.

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

Completeness4/5

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

Given no output schema, the description covers return types and detail levels appropriately. It explains version references and budget truncation. Missing some edge cases, but overall complete enough for a complex tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptive parameter descriptions. The description adds context on version refs and detail levels, but does not significantly enhance understanding beyond the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool compares two versions of a Confluence page using a structurally-aware diff. It distinguishes from character-level diffs and mentions a sibling command, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description explains what the tool does but does not explicitly state when to use it over alternatives like confluence_compare_section or confluence_read. The context is clear but lacks exclusion criteria.

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

confluence_compare_sectionA

Drill into a section diff using a cursor returned by confluence_compare (outline mode). Stateless: the cursor encodes the page ID and version pair. Output formats: "unified" (default), "side_by_side", "markdown_inline". Mirrors omni-dev atlassian confluence compare section.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorYesCursor returned by an outline-mode `confluence_compare` call. The cursor encodes the page ID and version pair, so this tool is stateless across calls.
formatNoOutput text format: `"unified"` (default), `"side_by_side"`, or `"markdown_inline"`.

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It mentions statelessness and output formats, implying a read-only inspection, but does not explicitly declare safety profile, rate limits, or permissions.

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

Conciseness5/5

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

The description is concise (3 sentences) and front-loaded with the core purpose. Every sentence adds value, with no extraneous information.

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

Completeness4/5

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

For a simple follow-up tool with 2 parameters fully described, the description is largely complete. It explains the cursor source and output formats, but omits details on error handling or return value structure.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description repeats parameter info from the schema and adds context about the cursor's role, but does not significantly enhance parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool drills into a section diff using a cursor from confluence_compare, lists output formats, and distinguishes itself from the parent comparison tool by specifying the cursor source and outline mode.

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

Usage Guidelines4/5

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

The description indicates when to use this tool (after a cursor from confluence_compare outline mode) but does not explicitly state when not to use it or provide alternatives beyond the single parent tool.

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

confluence_copyA

Copy a single Confluence page under a destination parent page (parent_id), giving the copy title. Carries the source page's attachments, labels, and properties (not its restrictions). Single-page copy only. Returns YAML with the new page id. Mirrors omni-dev atlassian confluence copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle for the new copied page.
page_idYesSource page ID to copy.
parent_idYesDestination parent page ID the copy is placed under.

TDQS

A4.5/5.0
Behavior5/5

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

Despite no annotations, description fully discloses behavior: carries attachments/labels/properties, excludes restrictions, returns YAML with new page id, and is single-page only. No contradictions.

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

Conciseness5/5

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

Four concise sentences with no wasted words. Front-loaded with main action, efficiently covers key points.

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

Completeness5/5

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

Even without output schema, description explains return value (YAML with id). Covers all relevant behavioral aspects for a copy tool, making it self-contained.

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

Parameters3/5

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

Schema already covers all three parameters with clear descriptions (100% coverage). Description adds minimal extra context beyond schema; mentions return format but that is not parameter-related.

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

Purpose5/5

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

Clearly states the tool copies a single Confluence page under a destination parent page, with explicit mention of what is carried (attachments, labels, properties) and what is not (restrictions). Distinguishes from siblings like 'confluence_move' and 'confluence_create'.

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

Usage Guidelines4/5

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

Specifies single-page copy only and mentions what content is carried, helping decide appropriateness. Lacks explicit when-not-to-use or alternative tools but provides sufficient context.

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

confluence_createA

Create a NEW Confluence page (use confluence_write to overwrite an existing page identified by its ID). Builds from explicit fields or from a full JFM document (frontmatter + body, e.g. the output of confluence_read). With a document, space_key/title/parent_id come from the frontmatter and the body becomes the page body — enabling the read → edit → create round-trip. Explicit space_key/title/parent_id override frontmatter and a warning is returned when they do. JFM is GitHub-style markdown, NOT Confluence wiki markup — see resource omni-dev://specs/jfm. The document/content bodies each also accept a filesystem-path form (document_path/content_path) the server reads from disk — prefer it when the body is already on disk, to avoid emitting a large body inline. Set dry_run: true first when uncertain about required fields or formatting — validates the input and returns the request that would be sent (method, path, body) without creating the page. Returns the new page's ID. Mirrors omni-dev atlassian confluence create (and its --dry-run).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoPage title. Required unless `document` carries one. Overrides frontmatter.
formatNoFormat of `content`: `"jfm"` (default markdown) or `"adf"` (raw ADF JSON). Ignored for the `document` path (a document is always JFM).
contentNoPage body. Parsed according to `format`. Required unless `document` is provided (and rejected when it is — the document body is the page body). For `format = "jfm"` (the default), this is GitHub-style markdown, NOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`. Full reference: MCP resource `omni-dev://specs/jfm`.
dry_runNoWhen true, validate and return the would-be request (method, path, body) without creating the page. Defaults to `false`.
documentNoFull JFM document (YAML frontmatter + markdown body), e.g. the output of `confluence_read` with the frontmatter edited. When provided, `space_key`, `title` and `parent_id` are taken from the frontmatter and the body becomes the page body — so the read → edit → create round-trip works. The `space_key`/`title`/`parent_id` parameters below still override their frontmatter counterparts (a warning is returned when they do); passing `content` together with `document` is an error. See resource `omni-dev://specs/jfm`.
parent_idNoOptional parent page ID for nesting under an existing page. Overrides frontmatter `parent_id:`.
space_keyNoTarget Confluence space key (e.g., `"ENG"`). Required unless `document` carries a `space_key:`. Overrides frontmatter.
content_pathNoFilesystem path the server reads the page body from, instead of `content`. Prefer this when the body is already on disk — it avoids re-emitting the whole body inline. Mutually exclusive with `content` (and, like `content`, rejected when `document`/`document_path` is given).
document_pathNoFilesystem path the server reads the JFM `document` from, instead of `document`. Prefer this when the document is already on disk — it avoids re-emitting the whole document inline. Mutually exclusive with `document`.

TDQS

A5/5.0
Behavior5/5

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

No annotations provided, but description fully covers behavioral aspects: creates a page (write operation), returns new page ID, explains override warnings, describes dry_run validation, and notes JFM format constraints.

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

Conciseness5/5

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

Well-structured with purpose first, then input modes, format details, file paths, dry_run, return value. Every sentence adds value; no repetition.

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

Completeness5/5

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

Covers all necessary aspects: purpose, inputs, format, behavior, return value. References external resource for JFM specs. Mirrors CLI command. Complete for a create tool.

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

Parameters5/5

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

Schema description coverage is 100%, but description adds significant meaning: explains parameter dependencies (title required unless document provides), mutual exclusivity (document vs content), and recommends file path parameters over inline.

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

Purpose5/5

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

The description explicitly states 'Create a NEW Confluence page' and distinguishes from 'confluence_write' which overwrites existing pages. It clearly identifies the tool's purpose and scope.

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

Usage Guidelines5/5

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

Provides explicit guidance: use for new pages vs write for updates, explains two input modes (fields vs document), recommends dry_run for validation, advises using file paths when content is on disk, and warns about JFM format.

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

confluence_deleteA

Delete a Confluence page. IRREVERSIBLE. Requires the caller to pass confirm: true to prevent accidental deletions. Set purge: true to permanently purge instead of moving to trash (requires space admin). Mirrors omni-dev atlassian confluence delete --force.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
purgeNoPermanently purges the page instead of moving to trash. Requires space admin permission.
confirmYesMust be `true` to confirm this destructive, irreversible operation.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses that the operation is irreversible, requires confirmation, and offers optional permanent purge. All critical behavioral traits are communicated clearly.

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

Conciseness5/5

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

Two sentences plus a note, highly concise. Front-loaded with purpose and key details. No unnecessary words.

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

Completeness4/5

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

Covers purpose, usage, parameter behavior, and output effect (trash vs purge). Lacks explicit mention of return value or side effects, but the tool is a delete operation and no output schema exists, so this is a minor gap.

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

Parameters5/5

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

Schema description coverage is 100% for all three parameters. The description adds context: `confirm` must be true to prevent accidents, `purge` requires space admin, and the overall destructive nature. Enriches the schema descriptions.

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

Purpose5/5

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

Clearly states 'Delete a Confluence page', which is a specific verb and resource. Distinguishes from sibling tools like `confluence_attachment_delete` and `confluence_create` by focusing on page deletion and emphasizing irreversibility.

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

Usage Guidelines4/5

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

Provides explicit guidance on using `confirm` to prevent accidental deletions and `purge` for permanent deletion with space admin requirement. Mentions CLI mirror for familiarity, but does not explicitly state when not to use the tool.

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

confluence_downloadA

Recursively download a Confluence page or an entire space into a directory. Either id (root page) or space (space key) must be provided. Set include_attachments: true to also fetch each page's attachment binaries into an attachments/ subdirectory beside its content file. Returns a YAML manifest summary of downloaded pages. To read a single page's body instead (no files written), use confluence_read. Mirrors omni-dev atlassian confluence download.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRoot page ID to download from. Either this or `space` must be set.
spaceNoSpace key to download from — every top-level page becomes a root.
formatNoOutput format: `"jfm"` (default) or `"adf"`.
max_depthNoMaximum tree depth. 0 = unlimited (default).
output_dirNoTarget directory for downloaded files. Defaults to a fresh tempdir when omitted; the manifest summary reports the path used.
concurrencyNoMaximum number of concurrent fetches. Defaults to 8.
title_filterNoOnly download pages whose title contains this substring (case-insensitive).
include_attachmentsNoAlso download each page's attachment binaries into an `attachments/` subdirectory beside its content file. Defaults to false.

TDQS

A3.9/5.0
Behavior3/5

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

Discloses the core behavior (recursive download, YAML manifest, attachment handling) but lacks deeper context such as side effects (filesystem writes), error handling, or rate limits. Since no annotations are provided, the description carries full burden, and it covers only the basic behavioral traits.

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

Conciseness4/5

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

The description is a concise paragraph of five sentences, each adding new information. It is front-loaded with the primary purpose and efficiently conveys key usage details without redundancy.

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

Completeness4/5

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

Given the tool's complexity (8 parameters, no output schema, no annotations), the description adequately covers the main use case, alternative tool, and key parameters. It mentions the return format (YAML manifest) and attachment subdirectory, providing sufficient context for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds value by clarifying the id/space mutual exclusivity and the `include_attachments` behavior, but does not significantly extend parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Recursively download a Confluence page or an entire space into a directory' using specific verbs and distinct resources. It differentiates from the sibling tool `confluence_read` by noting that tool reads a single page's body without file writes.

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

Usage Guidelines4/5

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

Explicitly states the alternative `confluence_read` for single-page reading, and outlines key usage requirements like providing either `id` or `space`. However, it does not explicitly mention when not to use this tool beyond the alternative.

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

confluence_historyA

List version history (metadata only) for a Confluence page. Returns version number, timestamp, author account ID, edit message, and minor-edit flag for each version, newest-first. Resolve those author account IDs to display names with confluence_user_get. Does NOT fetch version bodies — use confluence_read for content. since filters to versions at or after a numeric version ("5") or ISO 8601 date ("2026-01-01T00:00:00Z"). limit defaults to 20; 0 means unlimited. Mirrors omni-dev atlassian confluence history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
limitNoMaximum number of versions to return. `0` means unlimited. Defaults to 20.
sinceNoFilter to versions at or after this point. Accepts a numeric version number (e.g. `"5"`) or an ISO 8601 date (e.g. `"2026-01-01T00:00:00Z"`).

TDQS

A5/5.0
Behavior5/5

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

Description fully discloses behavior: metadata-only, newest-first ordering, filtering capability for since parameter (numeric version or ISO date), limit defaults (20, with 0 meaning unlimited). It also references a known command for consistency. No annotations are provided, so the description carries full burden and does so completely.

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

Conciseness5/5

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

Description is compact and efficient. Every sentence adds value, no wasted words. It is front-loaded with the purpose and then details parameters and behavioral notes. The structure is logical and easy to parse.

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

Completeness5/5

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

For a tool with no output schema, the description adequately describes the returned fields (version number, timestamp, author account ID, edit message, minor-edit flag). It also references necessary sibling tools for post-processing. The tool is straightforward, and the description covers all necessary context.

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

Parameters5/5

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

Schema description coverage is 100%, so baseline is 3. But the description adds significant value: explains the since parameter accepts two formats with examples, clarifies limit default and that 0 means unlimited, and explains the id parameter. This goes beyond the schema's short descriptions.

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

Purpose5/5

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

Description clearly states the tool lists version history metadata for a Confluence page. It specifies the returned fields (version number, timestamp, author account ID, etc.) and distinguishes itself from siblings like confluence_read and confluence_user_get.

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

Usage Guidelines5/5

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

Description provides explicit when-to-use guidance: it notes that content bodies are not fetched and directs to confluence_read for that. It also suggests using confluence_user_get for resolving author IDs. The since and limit parameters are explained with usage details.

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

confluence_label_addB

Add one or more labels to a Confluence page. Mirrors omni-dev atlassian confluence label add.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
labelsYesLabels to add to the page.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states the action without mentioning behavioral aspects such as idempotency, authorization needs, or effects (e.g., whether labels are appended or replaced). 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.

Conciseness5/5

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

The description is extremely concise and front-loaded: two sentences with no extraneous information. Every word is necessary.

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

Completeness3/5

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

For a simple tool with two fully described parameters, the description covers the basic purpose. However, it lacks important context such as whether labels are appended or overwritten, and error scenarios. It is minimally adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter descriptions for 'id' and 'labels'. The tool description does not add 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.

Purpose4/5

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

The description clearly states the action (add) and resource (labels to a Confluence page). It distinguishes from sibling tools like confluence_label_list and confluence_label_remove by specifying addition. However, it does not explicitly differentiate from them, missing a chance to clarify when to use each.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like confluence_label_list or confluence_label_remove. No prerequisites or context provided.

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

confluence_label_listA

List labels on a Confluence page (auto-paginated). limit of 0 returns every label. Mirrors omni-dev atlassian confluence label list.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
limitNoMaximum number of labels to return (0 = unlimited).

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It mentions auto-pagination and the limit behavior but does not explicitly state that it is a read-only operation or disclose any other behavioral traits.

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

Conciseness5/5

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

Two sentences with no redundancy. The first sentence gives the core purpose and auto-pagination, the second adds a key detail and a reference command. Every word earns its place.

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

Completeness3/5

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

With no output schema, the description does not explain what the tool returns (e.g., label names, IDs) or error conditions. However, for a simple list tool with two parameters, the information is mostly adequate but leaves some gaps.

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

Parameters4/5

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

Schema coverage is 100%, describing both parameters. The description adds context beyond the schema by explaining auto-pagination and that limit=0 returns all labels, which enhances understanding.

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

Purpose5/5

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

The description clearly states 'List labels on a Confluence page' with a specific verb and resource. It includes auto-pagination and the notable limit=0 behavior, and distinguishes from sibling tools like add/remove.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or provide comparisons to other listing tools, leaving the agent without decision support.

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

confluence_label_removeA

Remove one or more labels from a Confluence page. Destructive operation: callers must explicitly pass confirm: true for the removal to proceed; otherwise the tool refuses with an error. Mirrors omni-dev atlassian confluence label remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
labelsYesLabels to remove from the page.
confirmYesMust be set to `true` — destructive guard.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description bears full burden for behavioral disclosure. It marks the operation as destructive and explains the confirm guard, but does not mention other behaviors such as idempotency, error handling, or what happens if labels do not exist.

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

Conciseness5/5

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

Two sentences convey purpose, destruction, the critical confirm requirement, and a reference to the CLI command. No wasted words; efficiently front-loaded.

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

Completeness4/5

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

For a simple 3-parameter tool with no output schema, the description covers the core purpose and the essential guardrail. It is mostly complete, though it could mention return values or behavior on missing labels.

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

Parameters4/5

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

The input schema already describes all three parameters with 100% coverage. The description adds value by explicitly noting that 'confirm' must be 'true' and acts as a destructive guard, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Remove one or more labels from a Confluence page' with a specific verb and resource. It distinguishes from sibling tools like confluence_label_add and confluence_label_list.

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

Usage Guidelines4/5

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

The description explicitly requires 'confirm: true' for the operation to proceed, serving as a usage guideline. However, it does not elaborate on when to use this tool versus alternatives like confluence_label_add.

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

confluence_moveA

Move or reparent a Confluence page within its current space. position is "append" (default — target becomes new parent), "before", or "after" (sibling reorder relative to target). Same-space only — cross-space moves are not supported. Returns the moved page's metadata as YAML (id, title, parent_id, ancestors). Mirrors omni-dev atlassian confluence move.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesID of the Confluence page to move.
positionNoPosition relative to the target. Defaults to `"append"`. Accepted values: `"append"` (target becomes new parent), `"before"`, `"after"`. Same-space only — cross-space moves are not supported.
target_idYesTarget page ID — new parent for `position: "append"`, or sibling reference for `"before"`/`"after"`.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the returned YAML metadata (id, title, parent_id, ancestors), the three position behaviors, and the same-space limitation. Does not mention permission requirements or side effects on page content/attachments, but covers key behavioral aspects.

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

Conciseness5/5

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

Three sentences, no wasted words. Front-loaded with action, followed by position semantics, constraint, and return format. Every sentence earns its place.

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

Completeness5/5

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

Given no output schema, description adequately specifies return format. Parameters are fully described with added context. Constraints are clear. The tool is well-situated among sibling tools with a distinct identity.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by clarifying position defaults ('append'), explaining each position meaning in context, and elaborating target_id's role relative to position. This exceeds schema descriptions.

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

Purpose5/5

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

Clearly states 'Move or reparent a Confluence page within its current space.' Uses specific verb and resource. Distinguishes from sibling tools like confluence_create, confluence_delete, etc., by focusing solely on moving/reparenting.

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

Usage Guidelines4/5

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

Provides explicit constraint 'Same-space only — cross-space moves are not supported,' helping the agent avoid misuse. Explains position options. Lacks explicit comparison to alternative tools for cross-space scenarios, but the constraint effectively guides 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.

confluence_readA

Fetch a Confluence page by numeric ID (e.g. "12345678"). Returns JFM markdown by default — AI-friendly GitHub-style markdown, the form to read/edit then feed back to confluence_write/confluence_create. That output carries localId attributes (and inline-comment anchor spans) that anchor inline comments and other stateful nodes — preserve them verbatim when editing so a later confluence_write does not drop those comments. Pass format="adf" for the raw ADF JSON (the on-the-wire document model) only when you need exact node structure. Pass version to read a specific historical version (an immutable snapshot) instead of the current head — useful for seeing what a reviewer was reading when they commented. When output_file is set, the content is written to that path and the tool returns a short YAML summary (path/bytes/format) — useful for large pages. This reads a single page; to fetch a whole page tree or an entire space to disk, use confluence_download instead. NOTE: inline-comment anchors do NOT follow text edits — to detect/repair drifted comments use confluence_comment_audit / confluence_comment_reanchor. Any author/version metadata is returned as Atlassian account IDs — resolve them to display names with confluence_user_get. Mirrors omni-dev atlassian confluence read.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID (e.g., "12345678").
formatNoOutput format: `"jfm"` (default, AI-friendly markdown) or `"adf"` (raw ADF JSON).
versionNoRead a specific historical version instead of the current head (e.g. `3`). Confluence stores each version as an immutable snapshot; omit for the latest. Useful for seeing what a reviewer was reading when they posted a comment.
output_fileNoWhen set, writes the rendered content to this path and returns a short YAML summary (path/bytes/format) instead of the inline body. Useful for large pages that would otherwise blow past the context window — the assistant can then read the file with offset/limit.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: default output is JFM markdown, `output_file` returns YAML summary, `version` reads immutable snapshots, inline-comment anchors do not follow edits, author IDs are returned as Atlassian account IDs. No contradictions.

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

Conciseness4/5

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

The description is thorough but slightly verbose; however, every sentence adds value and the structure is logical. It could be trimmed marginally without losing content.

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

Completeness5/5

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

Covers all 4 parameters, return formats, common pitfalls, and links to related tools. Without an output schema, the description adequately explains what the tool returns in different scenarios.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds significant context: explains default format, version as immutable snapshot, output_file behavior (YAML summary, useful for large pages), and gives examples for `id`.

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

Purpose5/5

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

The description explicitly states 'Fetch a Confluence page by numeric ID' and distinguishes itself from sibling tools like `confluence_download` for page trees. It clearly identifies the resource and action.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use different formats (`jfm` vs `adf`), when to use `version`, when to use `output_file`, and when to use alternative tools (`confluence_download`, `confluence_comment_audit`, `confluence_user_get`). Also warns about preserving `localId` attributes for editing.

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

confluence_restriction_getA

Show the read/update restrictions on a Confluence page. Returns the raw restriction JSON as YAML (the model is deeply nested — user/group arrays per operation). Mirrors omni-dev atlassian confluence restriction get.

ParametersJSON Schema
NameRequiredDescriptionDefault
content_idYesConfluence page (content) ID.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses the output format (YAML), notes the nested structure, and implies read-only behavior via 'Show'. It does not discuss auth or rate limits but is transparent about output complexity.

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

Conciseness5/5

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

Two sentences: first states purpose and output, second adds CLI mirroring. No wasted words, front-loaded with key information.

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

Completeness4/5

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

For a simple read tool with one parameter and no output schema, the description covers purpose and output format. It mentions per-operation arrays. It could elaborate on potential errors or empty results, but overall adequate.

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

Parameters3/5

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

The single parameter content_id is described in the schema as 'Confluence page (content) ID.' The description adds no further meaning beyond the schema, and schema coverage is 100%, so baseline score 3 applies.

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

Purpose5/5

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

The description clearly states the tool shows read/update restrictions on a Confluence page, and specifies the output format (raw JSON as YAML). It distinguishes from sibling tools like grant/revoke by focusing on viewing.

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

Usage Guidelines3/5

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

The description implies usage for viewing restrictions but does not explicitly state when to use this tool versus alternatives like grant/revoke. No when-not guidance is provided.

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

confluence_restriction_grantA

Grant a user or group a read/update restriction on a Confluence page. operation is "read" or "update"; supply exactly one of account_id or group. Returns YAML {status: ok}. Mirrors omni-dev atlassian confluence restriction grant.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoGroup name. Exactly one of `account_id` / `group` must be set.
operationYesOperation the restriction applies to — `"read"` or `"update"`.
account_idNoAtlassian `accountId` of the user. Exactly one of `account_id` / `group` must be set.
content_idYesConfluence page (content) ID.

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions that the tool grants restrictions and returns a YAML status, but does not address side effects (e.g., overwriting existing restrictions), authentication requirements, rate limits, or error states. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

Three short, front-loaded sentences: purpose, parameter guidance, and return format/CLI mirror. No wasted words.

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

Completeness4/5

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

With full schema coverage and no output schema, the description provides the return format and a key constraint (mutual exclusivity). It could mention error handling or idempotency, but is largely adequate for a simple grant tool.

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

Parameters4/5

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

Schema description coverage is 100%, but the description adds value by explaining the operation values and the mutual exclusivity of account_id/group. This goes beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the verb 'grant' and the resource 'restriction on a Confluence page', specifies operations 'read'/'update', and distinguishes from sibling tools like get/revoke. It is specific and unambiguous.

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

Usage Guidelines4/5

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

The description explains that exactly one of account_id or group must be supplied, providing guidance for parameter selection. However, it does not explicitly state when to use this tool versus alternatives like get or revoke, though the name and context imply grant-only usage.

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

confluence_restriction_revokeA

Revoke a user's or group's read/update restriction on a Confluence page. operation is "read" or "update"; supply exactly one of account_id or group. Returns YAML {status: ok}. Mirrors omni-dev atlassian confluence restriction revoke.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoGroup name. Exactly one of `account_id` / `group` must be set.
operationYesOperation the restriction applies to — `"read"` or `"update"`.
account_idNoAtlassian `accountId` of the user. Exactly one of `account_id` / `group` must be set.
content_idYesConfluence page (content) ID.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It discloses the return format (YAML with 'status: ok') and parameter constraints. However, it does not mention potential side effects, permissions required, or behavior when no restriction exists for the given user/group. This leaves gaps for an agent.

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

Conciseness5/5

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

The description is three sentences: first states purpose, second gives parameter constraints, third provides return format and CLI reference. It is front-loaded, concise, and contains no filler. Every sentence adds value.

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

Completeness4/5

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

Given the tool's moderate complexity (4 parameters, 2 required, no output schema), the description covers purpose, parameter constraints, and return format. It lacks details on error handling or prerequisites (e.g., page existence), but for a simple revocation tool, it is largely sufficient. Minor gap in not addressing edge cases.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by reinforcing the mutual exclusivity of account_id/group and clarifying the operation values. It also introduces the return format, which is not in the schema. This enhances understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states the action ('revoke'), resource ('restriction on a Confluence page'), and target ('user or group'). It specifies the operation parameter as 'read' or 'update' and the mutual exclusivity of account_id and group. This distinguishes it from sibling tools like 'confluence_restriction_grant' and 'confluence_restriction_get'.

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

Usage Guidelines4/5

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

The description provides clear constraints (operation values, mutual exclusivity) and implies usage for revocation. It mentions mirroring a CLI command, giving additional context. However, it doesn't explicitly state when not to use this tool or list alternatives, though sibling names strongly indicate complementary tools.

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

confluence_space_listA

List Confluence spaces (one page per call). Optional filters: keys (Vec), type (common values: global, personal, collaboration, knowledge_base, onboarding — passed through to the API verbatim, so other template-derived types Atlassian returns are also accepted), status (common values: current, archived). Filters combine as AND. Pass the returned next_cursor back as cursor to fetch the next page. limit defaults to 25. Mirrors omni-dev atlassian confluence space list.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNoFilter to specific space keys. Combined with `type`/`status` as AND.
typeNoFilter by space type. Common values: `global`, `personal`, `collaboration`, `knowledge_base`, `onboarding`. Passed through to the Confluence v2 API verbatim.
limitNoMaximum number of spaces per page. Defaults to 25.
cursorNoPagination cursor (use `next_cursor` from a previous call).
statusNoFilter by space status. Common values: `current`, `archived`. Passed through to the Confluence v2 API verbatim.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description fully covers pagination (one page per call, cursor flow), default limit of 25, filter combination (AND), and verbatim pass-through of type/status. It does not mention permissions or side effects, but as a list operation, these are minimal and behavior is well-documented.

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

Conciseness5/5

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

The description is highly concise with two sentences, front-loading the main purpose. Each sentence serves a clear function (action statement then filter/pagination details), with no wasted words.

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

Completeness3/5

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

The tool has no output schema, and the description does not detail the structure of returned items (e.g., space keys, names). It adequately covers pagination and filter semantics, but missing return format details make it slightly incomplete for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents parameters. The description adds value by listing common values for type/status, explaining AND combination, default limit, and cursor usage, providing operational context beyond the schema.

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

Purpose4/5

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

The description clearly states 'List Confluence spaces (one page per call)' with a specific verb and resource. It distinguishes from sibling tools like confluence_space_pages by focusing on spaces themselves, but does not explicitly differentiate from all siblings.

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

Usage Guidelines3/5

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

The description lists optional filters (keys, type, status) and explains pagination (cursor usage) and filter combination (AND). It provides implicit usage context but does not explicitly guide when to use this tool versus alternatives like confluence_search or confluence_space_pages.

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

confluence_space_pagesA

Enumerate ALL pages within a Confluence space (flat list, one response page per call), e.g. space "ENG". To walk a page hierarchy parent-by-parent instead, use confluence_children. Returns summary records: id, title, status, parentId, authorId, createdAt — no page bodies. Optional filters: status (common values: current, archived, draft, trashed) and sort (common values: id, -id, title, -title, created-date, -created-date, modified-date, -modified-date) — both passed through to the Confluence v2 API verbatim. Pass the returned next_cursor back as cursor to fetch the next page. limit defaults to 25. Mirrors omni-dev atlassian confluence space pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order. Common values: `id`, `-id`, `title`, `-title`, `created-date`, `-created-date`, `modified-date`, `-modified-date`. Passed through to the Confluence v2 API verbatim.
limitNoMaximum number of pages per response. Defaults to 25.
spaceYesSpace key whose pages to enumerate (e.g. `ENG`).
cursorNoPagination cursor (use `next_cursor` from a previous call).
statusNoFilter by page status. Common values: `current`, `archived`, `draft`, `trashed`. Passed through to the Confluence v2 API verbatim.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It accurately describes return fields (no page bodies), filter behavior (passed through verbatim), pagination mechanism, and default limit. No contradictions.

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

Conciseness4/5

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

The description is well-structured and informative, but slightly verbose with the mirror command at the end. Still, every sentence contributes value.

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

Completeness5/5

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

Given no output schema, the description fully explains return fields, pagination, filters, defaults, and sibling alternative. No gaps for this complexity level.

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

Parameters5/5

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

Input schema has 100% description coverage, but the description adds significant value by listing common sort and status values, explaining they are passed verbatim, detailing cursor for pagination, and stating default limit.

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

Purpose5/5

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

The description clearly states the tool enumerates all pages in a Confluence space as a flat list, with an example space key. It explicitly differentiates from sibling `confluence_children` for hierarchical navigation.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool vs the alternative `confluence_children`. Also explains pagination with cursor and default limit, guiding iterative calls.

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

confluence_user_getA

Resolve one or more Atlassian account_ids (as emitted by author fields in confluence_comment_list, confluence_history, confluence_read, etc.) to user records — the reverse of confluence_user_search. Returns YAML with one entry per requested ID: account_id, display_name, email (when accessible), and account_type. Pass every distinct author ID from a batch in one call. Unknown, anonymised, or permission-denied IDs come back as a stub record with an error field (the batch never fails). Mirrors omni-dev atlassian confluence user get.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idsYesOne or more Atlassian account IDs to resolve (e.g. `557058:00ce7e71-9edc-47da-a0c6-f796533ae2cd`).

TDQS

A4.3/5.0
Behavior5/5

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

No annotations provided, so the description carries full burden. It discloses error handling (stub record with error field, batch never fails), permission sensitivity (email when accessible), and output format. No contradictions.

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

Conciseness5/5

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

Concise yet comprehensive: each sentence adds value, purpose is front-loaded, and structure is clear. No redundant information.

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

Completeness5/5

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

With a single simple parameter and no output schema, the description fully covers input, output, error behavior, and relationship to other tools. No gaps identified.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, and the description adds a usage optimization (batch all IDs) but does not provide additional semantic detail beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the tool resolves account IDs to user records, specifies the return fields (account_id, display_name, email, account_type), and distinguishes it from the sibling tool confluence_user_search by calling itself the reverse.

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

Usage Guidelines3/5

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

Implies usage via reverse relationship with confluence_user_search and suggests batching IDs in one call, but does not explicitly state when to use versus alternatives or provide exclusion criteria.

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

confluence_watcher_addA

Add a watcher to a Confluence page (account_id defaults to the authenticated user). Returns YAML {watching: true}. Mirrors omni-dev atlassian confluence watcher add.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAtlassian `accountId` of the user. Defaults to the authenticated user.
content_idYesConfluence page (content) ID.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose the return format ('Returns YAML {watching: true}') and the default behavior for account_id. However, it omits any mention of side effects (e.g., idempotency, permission requirements, or potential errors) that could be relevant for a mutation operation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action. It includes the key usage detail (default account), the return value, and a CLI equivalence. Every sentence adds value without waste.

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

Completeness4/5

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

For a simple 2-parameter tool with full schema coverage, the description is largely complete. It states the purpose, default behavior, and return format. It lacks edge-case behavior (e.g., error handling, idempotency) but these are not critical for the core use case, and the CLI mirror provides a reference point.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal new parameter meaning beyond the schema: it reiterates the account_id default (already in schema) and refers to content_id as a page ID (already in schema). No additional syntax or format details are provided.

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

Purpose5/5

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

The description clearly states the action: 'Add a watcher to a Confluence page'. This is a specific verb+resource, and the mention of 'Confluence page' distinguishes it from Jira watcher tools like jira_watcher_add. The scope is unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you need to add a watcher to a Confluence page) but does not explicitly discuss alternatives or exclusions. Sibling tools like confluence_watcher_remove and confluence_watcher_status are not referenced, so the agent must infer usage from the name and context.

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

confluence_watcher_removeA

Remove a watcher from a Confluence page (account_id defaults to the authenticated user). Returns YAML {watching: false}. Mirrors omni-dev atlassian confluence watcher remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAtlassian `accountId` of the user. Defaults to the authenticated user.
content_idYesConfluence page (content) ID.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description must disclose behavior. Mentions return value and default but does not elaborate on permissions, irreversibility, or side effects of removal beyond being a mutation.

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

Conciseness5/5

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

Extremely concise: two sentences with no fluff. Front-loaded with action and resource. Every sentence adds necessary information.

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

Completeness4/5

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

Given no annotations or output schema, description covers purpose, default, and return. Could be enhanced with permission requirements or confirmation of action, but adequate for a simple removal tool.

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

Parameters4/5

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

Schema covers 100% of parameters. Description adds value by stating default for account_id and the return format, which clarifies the effect.

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

Purpose5/5

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

States 'Remove a watcher from a Confluence page' clearly. Specifies default for account_id and return value. Distinguishes from sibling tools 'confluence_watcher_add' and 'confluence_watcher_status' by naming the action.

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

Usage Guidelines4/5

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

Indicates default behavior for account_id (authenticated user). Mentions CLI mirror for familiarity. Lacks explicit when-to-use vs alternatives or when-not-to-use guidance.

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

confluence_watcher_statusA

Report whether a user watches a Confluence page (account_id defaults to the authenticated user). Returns YAML {watching: bool}. Mirrors omni-dev atlassian confluence watcher status.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAtlassian `accountId` of the user. Defaults to the authenticated user.
content_idYesConfluence page (content) ID.

TDQS

A4.1/5.0
Behavior4/5

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

Discloses return format YAML {watching: bool} and default behavior for account_id. No annotations, but description is transparent for a simple read check.

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

Conciseness5/5

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

Two concise sentences with no unnecessary words. Front-loaded with purpose.

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

Completeness5/5

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

Complete for a simple status check: covers purpose, output format, default parameter value. No output schema needed.

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

Parameters3/5

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

Schema has 100% coverage for both parameters. Description adds only default info already in schema; no extra semantic value.

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

Purpose5/5

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

Clear verb 'report' and specific resource 'whether a user watches a Confluence page'. Distinguishes from sibling watcher add/remove tools.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. Implicit from name and siblings, but not stated.

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

confluence_writeA

Overwrite an EXISTING Confluence page's body (identified by id) from JFM markdown (default) or raw ADF JSON. This fully replaces the body — to create a brand-new page instead, use confluence_create. DATA LOSS: inline comments (and task-item state) are anchored to the page through the localId attributes that confluence_read emits; if the body you send omits them, Confluence drops the inline comments tied to those anchors. Edit the JFM returned by confluence_read and keep its localIds intact — do not hand-author a fresh body or send content produced with local IDs stripped (atlassian_convert with strip_local_ids). JFM is GitHub-style markdown, NOT Confluence wiki markup — see resource omni-dev://specs/jfm for syntax. Provide the body as content (inline) OR content_path (a filesystem path the server reads) — not both. Prefer content_path when the body is already on disk: emitting a large body inline is slow, and pages routinely exceed that threshold; the inline form is fine for short bodies. Set dry_run: true first when uncertain about required fields or formatting — validates the input and returns the request that would be sent (method, path, body) without updating the page. Mirrors omni-dev atlassian confluence write --force (and --dry-run).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConfluence page ID.
formatNoFormat of `content`: `"jfm"` (default markdown) or `"adf"` (raw ADF JSON).
contentNoNew page body, supplied inline. Mutually exclusive with `content_path`; exactly one of the two is required. For `format = "jfm"` (the default), this is GitHub-style markdown, NOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`. Full reference: MCP resource `omni-dev://specs/jfm`. Preserve the `localId` attributes (and inline-comment anchor spans) from the original `confluence_read` output: they anchor inline comments and stateful nodes, and dropping them makes Confluence lose those comments.
dry_runNoWhen true, validate and return the would-be request (method, path, body) without updating the page. Defaults to `false`.
content_pathNoFilesystem path the server reads the body from, instead of `content`. Prefer this when the body is already on disk (e.g. edited via `confluence_read`'s `output_file`): the assistant avoids re-emitting the whole page inline, which for large pages is slow. Mutually exclusive with `content`.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral aspects: it warns about data loss of inline comments if 'localId's are omitted, clarifies that JFM is markdown (not wiki markup), and explains the dry_run behavior. These are critical details beyond the basic 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.

Conciseness4/5

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

The description is relatively long but well-structured, starting with the main action and then adding important caveats. Each sentence provides useful information, though some redundancy could be trimmed. Overall, it is front-loaded and clear.

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

Completeness4/5

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

Given the absence of an output schema, the description does not detail the normal return value (e.g., updated page details). However, it covers dry_run output, the data loss warning, and usage scenarios. For a complex tool with 5 parameters and 1 required, it is largely complete but misses the standard response format.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds significant meaning beyond the basic parameter descriptions: it explains the mutual exclusivity of 'content' and 'content_path', the default for 'format', the importance of preserving 'localId's, and the preference for 'content_path' for large bodies. This enhances the agent's understanding of how to use parameters correctly.

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

Purpose5/5

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

The description clearly states that the tool overwrites an existing Confluence page's body, identified by 'id', and distinguishes itself from the sibling 'confluence_create' for creating new pages. This provides a specific verb+resource combination with clear differentiation.

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

Usage Guidelines5/5

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

Explicit guidance is given: when to use this tool vs 'confluence_create', when to prefer 'content_path' over inline 'content' (large bodies), and the recommendation to set 'dry_run: true' first for validation. This covers when, when-not, and alternatives.

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

coverage_diffA

Analyze diff/patch coverage from a per-line coverage report plus the git diff, and return the rendered report with the patch-coverage percentage and gate result as YAML. Read-only. Mirrors omni-dev coverage diff. report is a required filesystem path to the head coverage report (lcov / llvm-cov-json / cobertura, auto-detected). format renders the report as markdown (default), yaml, or json. Unlike the CLI this tool never fails the call on a low fail_under_patch; it reports below_gate: true instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoRendered output format. Defaults to `markdown`.
reportYesHead coverage report path (lcov / llvm-cov-json / cobertura). Required.
run_urlNoLink to the CI run (markdown footer).
base_refNoBase revision to diff against (default: merge-base of `origin/main` and `HEAD`).
base_shaNoBase (merge-base) commit SHA shown in the markdown `Comparing` line.
head_refNoHead revision the report was measured at (default: `HEAD`).
head_shaNoHead commit SHA shown in the markdown `Comparing` line.
all_filesNoReport per-file deltas and indirect changes for ALL files, not just the ones the diff touches.
repo_pathNoPath to the git repository. Defaults to the current working directory.
commit_urlNoCommit-URL prefix for linking SHAs.
artifact_urlNoLink to the full coverage-summary artifact (markdown footer).
strip_prefixNoOverride the path prefix stripped from report paths to make them repo-relative (default: the repository working directory).
report_formatNoFormat of `report` (auto-detected by default).
baseline_reportNoOptional baseline coverage report path; enables project deltas and indirect-change detection.
collapse_rangesNoCollapse consecutive uncovered new lines into ranges (e.g. `9-11`).
fail_under_patchNoReport a below-gate result when patch coverage is below this percentage (the tool never fails the call; it reports `below_gate` instead).
ignore_filename_regexNoExclude files whose repo-relative path matches any of these regexes from both the head and baseline reports before computing the diff. Matching is unanchored, applied after `strip_prefix` (same semantics as `cargo llvm-cov --ignore-filename-regex`).
baseline_report_formatNoFormat of `baseline_report` (auto-detected by default).

TDQS

A4.3/5.0
Behavior4/5

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

The description declares the tool as 'Read-only' and notes that it never fails on low fail_under_patch but reports `below_gate: true`. This adds behavioral context beyond the input schema. For a read-only analysis tool, this is adequate, though error handling (e.g., invalid report path) is not disclosed.

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

Conciseness5/5

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

The description is two sentences: the first states the purpose, the second covers key parameters and behavioral differences. It is front-loaded, efficient, and contains no filler.

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

Completeness3/5

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

While the description covers the main purpose and key parameters, there is a minor inconsistency: it first says return the report 'as YAML', but later states `format` defaults to markdown. This may confuse agents. Additionally, no output schema is provided, and the description does not detail the return structure beyond mentioning 'patch-coverage percentage and gate result'.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the required `report` parameter (filesystem path, auto-detected formats), the `format` parameter defaults, and the behavioral nuance of `fail_under_patch`. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool analyzes diff/patch coverage from a coverage report and git diff, returning a rendered report with patch-coverage percentage and gate result. It specifies the key input (report path) and behavior (read-only, mirrors CLI). This is a specific verb+resource with clear scope.

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

Usage Guidelines4/5

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

The description mentions the tool mirrors a CLI command (`omni-dev coverage diff`) and highlights a key behavioral difference (no call failure on low fail_under_patch). It explains important parameters (report, format). However, it does not explicitly state when to avoid this tool or provide alternatives, though no direct siblings exist.

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

datadog_auth_statusA

Report which Datadog credential scopes have credentials configured. Returns boolean presence flags only — NEVER includes the API key, application key, or any other secret. The site (non-secret) is returned verbatim. Read-only; takes no parameters. Unlike the CLI omni-dev datadog auth status, this tool only inspects local config presence and does NOT call Datadog's /api/v1/validate endpoint, so it cannot confirm the keys are actually accepted. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses that it returns only boolean presence flags, never secrets, and returns the site verbatim. Also states it does not call the validate endpoint, which is critical behavioral context. No annotations exist, so the description fully conveys safety and limitations.

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

Conciseness5/5

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

Every sentence adds unique value. The description is front-loaded with the primary purpose, then adds security guarantees, behavior comparison, and output format. No wasteful wording.

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

Completeness5/5

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

Covers all relevant aspects: purpose, security, comparison to alternative, and output format (YAML). No output schema exists, but the description adequately explains the return structure. Context is complete for a simple status-check tool.

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

Parameters4/5

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

No parameters exist; the schema confirms this. The description contributes no parameter info because none is needed. Baseline for 0-param tools is 4, and this is met.

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

Purpose5/5

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

Clearly states the tool reports which Datadog credential scopes have credentials configured. Distinguishes from a sibling CLI tool by noting it does not call the validate endpoint, and specifies it only inspects local config.

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

Usage Guidelines5/5

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

Explicitly states the tool is read-only and takes no parameters. Provides clear contrast with the CLI tool, indicating when to use this tool (for local config check) vs the CLI (for validation).

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

datadog_dashboard_getA

Fetch a single Datadog dashboard by id (string, e.g. abc-def-ghi). Returns the full definition including widgets. Use datadog_dashboard_list to discover ids first. Read-only. Mirrors omni-dev datadog dashboard get. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboard_idYesDatadog dashboard identifier (e.g. `abc-def-ghi`).

TDQS

A4.3/5.0
Behavior4/5

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

Describes output format as YAML and mentions it returns full definition including widgets. Labels as read-only, which implies no destructive effects. No annotations provided, but description covers key behavioral aspects adequately.

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

Conciseness5/5

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

Three sentences, all essential, front-loaded with action. No redundancy or fluff.

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

Completeness5/5

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

For a simple get tool with one parameter and no output schema, the description covers input format, output format, and prerequisite. Sufficient 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.

Parameters3/5

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

Schema has 100% description coverage for the single parameter, so baseline is 3. Description adds example id format ('abc-def-ghi') but no additional semantics beyond the schema.

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

Purpose5/5

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

Clearly states it fetches a single Datadog dashboard by id, with example format. Distinguishes itself from `datadog_dashboard_list` for discovering ids first.

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

Usage Guidelines4/5

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

Explicitly advises using `datadog_dashboard_list` to discover ids first. Declares read-only nature, but no explicit when-not-to-use guidance provided.

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

datadog_dashboard_listA

List Datadog dashboards (id, title, author). filter_shared (boolean, optional) restricts to shared (true) or non-shared (false) dashboards; omit it for all. Use datadog_dashboard_get to fetch one dashboard's full widget definition by id. Read-only. Mirrors omni-dev datadog dashboard list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_sharedNo`true` returns only shared dashboards; `false` returns only non-shared ones; omit (the default) to return all. Optional.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided. Description adds 'Read-only', 'Mirrors omni-dev datadog dashboard list', and 'Output is YAML', which are helpful behavioral details beyond the schema.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose. Every sentence adds value; no fluff.

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

Completeness5/5

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

For a simple tool with one optional parameter and no output schema, the description covers purpose, parameter behavior, output format, read-only nature, and sibling tool. Complete.

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

Parameters4/5

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

Schema has 100% coverage but description adds meaning: explains filter_shared restricts to shared/non-shared or omit for all. This clarifies the optional parameter's effect.

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

Purpose5/5

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

The description clearly states it lists Datadog dashboards with id, title, author. It distinguishes from sibling tool datadog_dashboard_get which fetches full widget definition.

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

Usage Guidelines4/5

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

Explicitly mentions when to use the sibling tool and explains the optional filter_shared parameter. Does not include explicit when-not-to-use but provides good context.

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

datadog_downtime_listA

List Datadog scheduled downtimes (monitor muting windows). active_only (boolean, optional, default false) restricts to currently-active downtimes; omit or set false to include past and future ones. Read-only. Mirrors omni-dev datadog downtime list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNoWhen `true`, restricts results to currently-active downtimes. Defaults to `false` (include past and future downtimes too). Optional.

TDQS

A3.7/5.0
Behavior3/5

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

The description declares the tool is read-only and mentions output format (YAML). With no annotations, this provides basic behavioral insight but lacks detail on pagination, rate limits, or side effects.

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

Conciseness5/5

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

The description is two sentences, highly concise, front-loaded with purpose, and contains no extraneous information.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers purpose, parameter behavior, read-only nature, and output format. It is complete for its complexity level.

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

Parameters4/5

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

The sole parameter 'active_only' is thoroughly described in both the description and schema. The description explains its effect and default value, adding value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool lists scheduled downtimes (monitor muting windows) and specifies the key parameter. While it does not explicitly differentiate from sibling tools, the name and description make its purpose clear.

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

Usage Guidelines3/5

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

The description mentions the active_only parameter and its default behavior but does not provide guidance on when to use this tool over alternatives. No exclusions or when-not-to-use advice is given.

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

datadog_events_listA

List Datadog events from the event/alert stream (e.g. deploys, monitor alerts), optionally filtered (e.g. service:api) over a time range (default last 1h). For application log lines use datadog_logs_search instead. limit of 0 (or omitted) auto-paginates across cursor pages up to 10000; any non-zero value caps the total at that count (default 100). from / to accept relative shorthand (15m, 1h), now, RFC 3339, or Unix epoch seconds. Read-only. Mirrors omni-dev datadog events list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of the time range, same formats as `from`. Defaults to `now`.
fromNoStart of the time range. Accepts relative shorthand (`15m`, `1h`), `now`, RFC 3339, or Unix epoch seconds. Defaults to `1h`.
tagsNoComma-separated list of `key:value` tags, e.g. `env:prod,team:sre`. Optional.
limitNoMaximum events to return. `0` means "fetch every match across pages (capped at 10000)"; any non-zero value caps the total at that count, paginating underneath as needed. Defaults to 100.
filterNoDatadog events query (e.g. `service:api`). Optional; omit to match all events in the window.
sourcesNoComma-separated list of source names, e.g. `github,nagios`. Optional.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses read-only nature, pagination behavior (limit=0 auto-paginates up to 10000), time range formats, and output format (YAML). Mirrors CLI command. Comprehensive given no annotations.

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

Conciseness5/5

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

Four sentences, front-loaded with main purpose, no extraneous information. Efficiently communicates key details.

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

Completeness5/5

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

Covers all necessary aspects: purpose, filtering, time range, pagination, output, read-only, and sibling distinction. Complete for a list tool with no output schema.

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

Parameters4/5

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

Schema already describes all 6 parameters, but the description adds valuable context like limit=0 auto-paginates, from/to format examples, and tags as comma-separated. Exceeds schema coverage.

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

Purpose5/5

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

Clearly states it lists Datadog events from the event/alert stream, with examples like deploys and monitor alerts. Distinguishes from sibling tool datadog_logs_search by specifying it is for log lines.

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

Usage Guidelines4/5

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

Explicitly directs to use datadog_logs_search for application log lines instead. Explains pagination behavior and defaults. Could be improved by listing more specific use cases, but sufficient.

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

datadog_hosts_listA

List Datadog reporting hosts, optionally narrowed by a hosts filter (e.g. env:prod) and a from cutoff (Unix epoch seconds). limit of 0 (or omitted) auto-paginates up to 10000. Read-only. Mirrors omni-dev datadog hosts list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoCutoff in Unix epoch seconds (e.g. `1700000000`); hosts last reporting before this are excluded. Optional.
limitNoMaximum hosts to return. `0` (or omitted) auto-paginates up to 10000.
filterNoDatadog hosts filter (e.g. `env:prod`). Optional; omit for all hosts.

TDQS

A4/5.0
Behavior4/5

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

With zero annotations, the description carries full responsibility for behavioral disclosure. It explicitly states the tool is read-only, details auto-pagination behavior (limit 0 wraps to 10000), and specifies output format (YAML). This adds significant value beyond the schema, though it could mention potential error handling or rate limits.

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

Conciseness5/5

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

The description is extremely concise—two sentences with no wasted words. The first sentence covers purpose and parameters, the second adds safety (read-only), CLI reference, and output format. Every sentence earns its place, and information is front-loaded.

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

Completeness4/5

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

Given no output schema, the description compensates by declaring the output is YAML. It covers key behavioral aspects (read-only, pagination, filter format) for a simple list tool. However, it does not describe the exact fields in the YAML output (e.g., host name, tags), which could be helpful for parsing.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds examples for `filter` and `from`, and clarifies the auto-pagination behavior for `limit`. These augment the schema descriptions but are not strictly necessary, keeping the score at the baseline.

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

Purpose5/5

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

The description clearly states the action ('List') and resource ('Datadog reporting hosts'), and specifies optional narrowing by filter and cutoff. This effectively distinguishes it from sibling Datadog tools like `datadog_dashboard_list` or `datadog_events_list`, which operate on different resources.

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

Usage Guidelines3/5

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

The description provides context on when to use the tool (listing hosts with optional filters), but lacks explicit guidance on when not to use it or how it compares to alternatives. While it mentions being read-only and mirrors a CLI command, it does not directly address exclusion scenarios or sibling tool differentiation.

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

datadog_metrics_catalog_listA

List metrics in the Datadog catalog (/api/v1/metrics). Distinct from datadog_metrics_query: returns metric names (e.g. system.cpu.user) ingested since from, optionally filtered by host — use this to discover what to query, then datadog_metrics_query to fetch the actual timeseries. Read-only. Mirrors omni-dev datadog metrics catalog list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoCutoff in Unix epoch seconds (e.g. `1700000000`); only metrics ingested since this timestamp are returned. Optional.
hostNoFilter by host (e.g. `web-01`). Optional; omit for all hosts.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full transparency burden. It declares the tool is read-only, specifies the output format (YAML), and notes it mirrors a specific command. This adds behavioral context beyond the schema, though it doesn't mention potential pagination or rate limits.

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

Conciseness5/5

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

The description is compact, using only three sentences to convey purpose, usage, filtering, read-only nature, output format, and sibling distinction. No extraneous information; every sentence serves a clear function.

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

Completeness5/5

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

Given the tool's simplicity (2 optional params, no output schema, no nested objects), the description fully covers what an agent needs: what it returns (metric names), the output format (YAML), the filtering options, and how it relates to a sibling tool. No gaps are apparent.

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

Parameters4/5

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

Schema description coverage is 100% for both parameters (from and host), but the description adds extra value by providing concrete examples (e.g., epoch timestamp 1700000000, host web-01) and clarifying semantics like 'ingested since this timestamp' and 'omit for all hosts.' This reinforces and expands the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool lists metrics in the Datadog catalog, specifying the API endpoint (/api/v1/metrics). It explicitly distinguishes from the sibling tool datadog_metrics_query by noting it returns metric names (e.g., system.cpu.user) rather than timeseries, allowing an agent to differentiate usage.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'use this to discover what to query, then datadog_metrics_query to fetch the actual timeseries.' It explains the optional parameters (from, host) and clarifies that omitting host returns all hosts. This tells the agent exactly when to choose this tool over alternatives.

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

datadog_metrics_queryA

Execute a point-in-time Datadog metrics timeseries query (e.g. avg:system.cpu.user{*} over the last 1h). Returns the actual data points; use datadog_metrics_catalog_list instead when you only need to discover metric names. Read-only. Mirrors omni-dev datadog metrics query. Returns YAML matching the CLI -o yaml output (status, from_date, to_date, series).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of the query window. Defaults to `now` when omitted.
fromYesStart of the query window. Accepts relative shorthand (`15m`, `1h`, `7d`), the literal `now`, an RFC 3339 timestamp with timezone, or Unix epoch seconds.
queryYesDatadog metrics query string, e.g. `avg:system.cpu.user{*}` or `sum:trace.http.request.hits{service:api}.as_rate()`. Required.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, but the description fully discloses behavioral traits: it is read-only, mirrors a CLI command, and returns YAML with specific fields (status, from_date, to_date, series). No contradictions.

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

Conciseness5/5

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

The description is concise (four sentences) and front-loaded with the primary purpose. Every sentence adds value, with no redundant or missing information.

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

Completeness4/5

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

Given the moderate complexity (3 parameters, no output schema), the description covers purpose, usage, return format, and behavioral traits. It lacks mention of error handling or rate limits, but these are not critical for basic use.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds extra context beyond the schema, such as example values, default behavior for `to`, and accepted formats for `from`. This enhances usability without being strictly necessary.

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

Purpose5/5

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

The description clearly states the tool executes a point-in-time Datadog metrics timeseries query, provides an example query, and distinguishes itself from the sibling tool `datadog_metrics_catalog_list` for metric name discovery.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (to get actual data points) and when to use an alternative (`datadog_metrics_catalog_list` for metric names), giving clear usage guidance.

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

datadog_monitor_getA

Fetch a single Datadog monitor by numeric id (e.g. 12345). Use datadog_monitor_list / datadog_monitor_search to discover ids first. Read-only. Mirrors omni-dev datadog monitor get. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
monitor_idYesDatadog monitor identifier (numeric, e.g. `12345`). Required.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses read-only nature and output format (YAML). No annotations provided, so description fully covers behavioral traits without contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with action, each sentence adds value—no wasted words.

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

Completeness5/5

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

Given the simple tool (one parameter, no output schema), description covers purpose, usage, behavior, and format completely.

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

Parameters3/5

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

Only one parameter with 100% schema coverage. Description adds minimal extra (example format) beyond schema; baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states 'Fetch a single Datadog monitor by numeric id', specifying exact action and resource. Differentiates from siblings by focusing on single monitor retrieval as opposed to listing/searching.

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

Usage Guidelines5/5

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

Explicitly directs agent to use datadog_monitor_list/datadog_monitor_search first to discover IDs, providing clear prerequisite and when-to-use guidance.

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

datadog_monitor_listA

List Datadog monitors with optional name / tags filters (e.g. name = "cpu", tags = "team:sre"). Returns full monitor objects. Use datadog_monitor_search for free-text / faceted queries like status:alert; use datadog_monitor_get when you already know the numeric monitor id. limit of 0 (or omitted) auto-paginates up to 10000. Read-only. Mirrors omni-dev datadog monitor list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubstring match on the monitor name, e.g. `cpu`. Optional; omit to match all names.
tagsNoComma-separated `key:value` tags on the monitored *scope* (the `tags` API filter), e.g. `env:prod,team:sre`. Optional.
limitNoMaximum monitors to return. `0` (or omitted) means "fetch every match", capped at 10000.
monitor_tagsNoComma-separated `key:value` tags on the *monitor object itself* (the `monitor_tags` API filter), e.g. `service:api`. Distinct from `tags` above. Optional.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses read-only nature, output format (YAML), auto-pagination behavior (limit 0 or omitted fetches up to 10000), and distinguishes between tags and monitor_tags filters. No annotations, but description fully covers behavior.

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

Conciseness5/5

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

Extremely concise with no wasted words. Front-loaded with key action and resource, then necessary details in a clear progression.

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

Completeness5/5

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

Complete for a list tool with 4 parameters and no output schema. Addresses all parameter meanings, alternative tools, output format, and pagination. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. Description adds value with examples for name and tags, explains the difference between tags and monitor_tags, and clarifies limit behavior, exceeding minimal requirements.

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

Purpose5/5

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

Clearly states the tool lists Datadog monitors with optional name/tags filters, distinguishing it from siblings like datadog_monitor_search and datadog_monitor_get.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool vs alternatives: use datadog_monitor_search for free-text/faceted queries, datadog_monitor_get for known numeric IDs. Provides clear context.

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

datadog_slo_getA

Fetch a single Datadog SLO by id (string, e.g. abc123def456). Use datadog_slo_list to discover ids first. Read-only. Mirrors omni-dev datadog slo get. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
slo_idYesDatadog SLO identifier (string, e.g. `abc123def456`). Required.

TDQS

A4.5/5.0
Behavior4/5

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

Declares 'Read-only' and specifies output format as YAML, adding behavioral context beyond annotations (none provided). Minor omission: no mention of error handling or limitations, but sufficient for a simple fetch.

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

Conciseness5/5

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

Three concise sentences with no fluff, front-loading the core action and important usage note.

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

Completeness5/5

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

For a single-parameter, no-output-schema tool, description provides purpose, usage order, read-only nature, and output format, achieving full completeness.

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

Parameters3/5

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

Schema coverage is 100%, and description repeats the parameter's purpose with an example. Adds minimal new meaning beyond the schema, meeting the baseline.

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

Purpose5/5

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

Description clearly states 'Fetch a single Datadog SLO by id' with example format, and distinguishes from sibling tool datadog_slo_list for discovering IDs.

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

Usage Guidelines5/5

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

Provides explicit guidance to use datadog_slo_list to discover IDs first, giving clear context for when to invoke this tool.

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

datadog_slo_listA

List Datadog Service Level Objectives, optionally filtered by tags, free-text query, explicit ids, or referenced metrics_query. Use datadog_slo_get to fetch one SLO's full definition by id. limit of 0 (or omitted) auto-paginates up to 10000. Read-only. Mirrors omni-dev datadog slo list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoComma-separated list of SLO ids, e.g. `abc123,def456`. Optional.
tagsNoComma-separated `key:value` tags applied to the SLO, e.g. `team:sre,env:prod`. Optional.
limitNoMaximum SLOs to return. `0` (or omitted) means "fetch every match", capped at 10000.
queryNoFree-text query matched against SLO name/description, e.g. `checkout latency`. Optional.
metrics_queryNoComma-separated list of metric names referenced by the SLO, e.g. `aws.elb.healthy_host_count`. Optional.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. States it is read-only, describes limit auto-pagination behavior, and mentions output format (YAML). Lacks mention of potential errors or rate limits, but sufficient for a read-only list operation.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose. No wasted words. Efficient and clear.

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

Completeness3/5

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

No output schema; description only says 'Output is YAML' without detailing fields. Given the absence of annotations and output schema, more context on return structure would be beneficial. However, the filtering and pagination details are well covered.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions. Description adds value by grouping parameters as filters (tags, query, ids, metrics_query) and clarifying limit's special behavior (0 or omitted auto-paginates). This goes beyond the schema's individual descriptions.

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

Purpose5/5

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

The description clearly states 'List Datadog Service Level Objectives' and specifies optional filters (tags, query, ids, metrics_query). It distinguishes from sibling tool datadog_slo_get by noting that the latter fetches one SLO's full definition by id.

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

Usage Guidelines4/5

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

Explicitly mentions alternative tool datadog_slo_get for fetching a single SLO. Provides context on limit behavior (auto-paginate up to 10000). Could be more explicit about when not to use, but adequate for a list tool.

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

drive_account_listA

List Drive accounts configured in ~/.omni-dev/settings.json — name, cached email address (if known), granted scope, and which one is the default. Call this first to discover valid account values before passing one to drive_search/drive_file_read/drive_auth_status. Never returns a secret. Read-only, no parameters. Mirrors omni-dev drive account list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It states 'Read-only, no parameters' and 'Never returns a secret', clearly indicating safe behavior. It also lists the output fields. It doesn't mention edge cases like missing files, but for a simple list command this is adequate.

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

Conciseness4/5

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

The description is a single well-structured sentence that front-loads the purpose, then adds output details, usage guidance, safety, and a CLI mirror. Every clause adds value, though it is slightly verbose; still efficient.

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

Completeness5/5

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

For a zero-parameter tool with no output schema, this description is remarkably complete: it details the source file, exact fields returned, usage order, safety guarantee, and CLI equivalent. An agent can invoke it correctly without additional context.

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

Parameters4/5

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

The tool has zero parameters and an empty schema. The description explicitly confirms 'no parameters' and mentions the configuration file as the implicit source, which is a baseline of 4 for parameterless tools. No further semantic detail needed.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'Drive accounts', and the specific location (settings.json). It enumerates the exact fields returned and distinguishes itself from siblings by noting it is the first step to discover valid account values before using drive_search/drive_file_read/drive_auth_status.

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

Usage Guidelines5/5

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

Explicitly instructs when to use: 'Call this first to discover valid account values before passing one to drive_search/drive_file_read/drive_auth_status.' It also notes the tool is read-only and never returns secrets, providing safety context for decision-making.

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

drive_auth_statusA

Report whether Drive OAuth2 credentials are configured (DRIVE_CLIENT_ID/DRIVE_CLIENT_SECRET/refresh token present) and which scope was granted at login. Returns presence flags and the granted scope only — NEVER the client secret, refresh token, or access token. Unlike the CLI omni-dev drive auth status, this tool does not call the Drive API and cannot confirm the refresh token is still accepted — use the CLI status command to actually verify. Read-only. Mirrors omni-dev drive auth status.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoSelects a named Drive account instead of the ambient `--account`/`OMNI_DEV_DRIVE_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `drive_account_list` to discover configured names.

TDQS

A4.6/5.0
Behavior5/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses read-only behavior, no API call, no token refresh check, and the commitment to never return secrets or access tokens. This goes well beyond a simple verb+resource sentence and prevents misuse.

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

Conciseness4/5

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

The description is generally tight and front-loaded: purpose first, then return guarantees and limitations. Slight redundancy remains in closing 'Mirrors `omni-dev drive auth status`' right after 'Unlike the CLI ...', which could confuse an agent briefly.

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

Completeness5/5

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

For a read-only status tool with one optional parameter and no output schema, this description is complete: it says what the tool checks, what it returns, what it refuses to return, and what it cannot verify. The optional parameter is fully documented in the input schema.

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

Parameters3/5

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

Schema description coverage is 100%: the `account` parameter already fully explains named-account selection, default resolution, legacy credentials, and points to `drive_account_list`. The tool description adds no parameter detail, but the structured schema covers it completely.

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

Purpose5/5

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

The description uses a specific verb ('Report') and names the exact resource: Drive OAuth2 credential configuration. It states what is returned (presence flags, granted scope) and explicitly what is never returned, so the tool's job is unambiguous and distinct from generic auth/status tools.

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

Usage Guidelines5/5

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

The description explicitly distinguishes this MCP tool from the CLI equivalent, states that it does not call the Drive API, and tells the agent when to use the CLI instead for real verification. This gives clear when-to-use and when-not-to-use guidance, plus a concrete alternative.

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

drive_dedupeA

Find Drive files sharing the same content hash, within the results of a Drive query (same syntax as drive_search's query, e.g. '<folder-id>' in parents to dedupe within one folder). Reuses the same bulk-search path as drive_search — no per-file follow-up call. Groups by md5Checksum (the broadest-coverage checksum field); files with no checksum (folders, Google-native documents) are skipped, and groups of one are omitted. limit defaults to 50 when omitted; pass 0 explicitly to scan up to a hard cap (10000). Read-only. Mirrors omni-dev drive dedupe. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to scan. Defaults to 50 when omitted; `0` explicitly means scan every match up to the hard cap (10000).
queryYesDrive query, same syntax as `drive search`'s query argument (e.g. `'<folder-id>' in parents` to dedupe within one folder). Required.
accountNoSelects a named Drive account instead of the ambient `--account`/`OMNI_DEV_DRIVE_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `drive_account_list` to discover configured names.

TDQS

A4.7/5.0
Behavior5/5

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

Despite no annotations being provided, the description thoroughly discloses behavioral traits: it's read-only, reuses a bulk-search path (no per-file follow-up), groups by md5Checksum (broadest coverage), skips files without checksums (folders, Google-native docs), omits groups of one, describes default limit and hard cap behavior, and explicitly states 'Read-only.' This is comprehensive behavioral disclosure for a tool with no annotations.

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

Conciseness5/5

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

The description is dense but not bloated; it packs key information into a few sentences. It front-loads the core purpose first, then covers scope, behavior, defaults, safety, and output format in order. Every sentence adds value: the syntax reference, the grouping logic, the limit behavior, the read-only note, the CLI mirror, and the output format. No filler or repetition.

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

Completeness5/5

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

For a tool with no annotations and no output schema, the description is remarkably complete. It tells the agent what the tool does, how to scope it, what files are skipped, what the default and maximum limits are, that it's read-only, and what the output format is (YAML). An agent has everything needed to call it correctly without opening the schema or guessing.

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

Parameters3/5

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

The schema has 100% description coverage, so the schema already documents the parameters well. The description adds some value by explaining the query syntax reference to drive_search and the default limit behavior, but these are already present in the schema's parameter descriptions ('same syntax as `drive search`'s query argument', 'Defaults to 50 when omitted'). The description reinforces what's in the schema rather than adding new meaning, 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.

Purpose5/5

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

The description clearly states the tool's purpose: 'Find Drive files sharing the same content hash, within the results of a Drive query.' It specifies the resource (Drive files), the action (dedupe by content hash), and the scope (within query results). It also distinguishes itself from siblings by referencing drive_search's query syntax and noting it groups by md5Checksum, which is a distinct operating mode from the general search sibling.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool vs alternatives: it points to drive_search's query syntax for the query parameter, and implicitly differentiates from regular search by focusing on deduplication. It also provides a concrete example ('<folder-id>' in parents to dedupe within one folder) and explains the trade-off of using this path over a per-file follow-up call. This is clear usage guidance for an agent.

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

drive_file_readA

Read a single Drive file by id. format: "metadata" (default) returns only metadata (including md5Checksum/sha1Checksum/sha256Checksum when available); format: "content" additionally fetches the file's actual content — exported for Google-native files (Docs/Sheets/Slides/...; see export_mime_type), downloaded as-is otherwise. Folders and shortcuts are rejected with an actionable error in content mode. Text content is returned inline; binary content is refused inline and requires output_file. When output_file is set, writes the content to that path and returns a short YAML summary instead of the inline body. Set verify: true (only with format: "content", only for non-Google-native files) to locally recompute the SHA-256 checksum of the fetched bytes and check it against Drive's reported sha256Checksum, failing clearly on a mismatch. Read-only. Mirrors omni-dev drive read. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo`metadata` (default) returns only the file's metadata; `content` additionally fetches its actual content — exported for Google-native files (Docs/Sheets/Slides/...), downloaded as-is otherwise.
verifyNoOnly valid with `format: "content"`. When true, locally recomputes the SHA-256 checksum of the fetched bytes and checks it against Drive's reported `sha256Checksum`. Only supported for non-Google- native files — Drive never returns a checksum for exported content, so this errors immediately on a Google-native file. Fails clearly on a mismatch or a missing checksum.
accountNoSelects a named Drive account instead of the ambient `--account`/`OMNI_DEV_DRIVE_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `drive_account_list` to discover configured names.
file_idYesDrive file id (from `drive_search`, or the `id` segment of a Drive URL). Required.
output_fileNoOnly valid with `format: "content"`. When set, writes the fetched content to this path and returns a short YAML summary instead of the inline body — required for binary content (this tool refuses to return it inline), and recommended for large files that would exceed the response size limit.
export_mime_typeNoExport MIME type for a Google-native file's content — only relevant with `format: "content"`, ignored otherwise. Defaults: Google Docs -> text/markdown, Sheets -> text/csv (first sheet only), Slides -> text/plain. Required for every other Google-native type (Forms, Drawings, Apps Script, Sites, ...); the error names the file's actually supported export MIME types.

TDQS

A4.6/5.0
Behavior5/5

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

No annotations exist, so the description carries the full load — and it excels. It discloses read-only semantics, exact behavior differences between metadata/content modes, binary content refusal and the workaround, export default for Docs/Sheets/Slides, error naming behavior for unsupported export types, and the verify flow including how it fails on Google-native files. This is unusually complete behavioral disclosure.

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

Conciseness4/5

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

Dense but disciplined. It opens with the primary action and default mode, then elaborates in a logical cascade: mode → content fetch behavior → binary handling → output_file → verify. Each sentence carries distinct information with no repetition of schema text. Slightly dense (long sentences), but front-loaded and efficiently organized for a 6-parameter tool.

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

Completeness5/5

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

For a tool with 6 parameters and no output schema, this description is exceptionally complete. It covers input modes, content-type handling, output formats, all parameter interactions, failure semantics on checksum mismatch, and even the mirror command. An agent has everything needed to invoke this tool correctly across all supported scenarios, including edge cases like binary or oversized content.

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

Parameters4/5

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

Schema coverage is 100%, but the description meaningfully augments it beyond the JSON — e.g., that 'format: metadata' returns checksums when available, that content is exported for Google-native files, that binary content is refused inline, and that output_file yields a YAML summary. The verify description in the prose adds behavioral constraints not obvious from the bare property docs. This exceeds the schema's literal text by clarifying mode interactions.

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

Purpose5/5

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

The description leads with a crystal-clear statement — 'Read a file by id' — and immediately disambiguates its two modes ('metadata' vs 'content'). It precisely explains what each mode returns, how Google-native files are handled, and what 'content' mode does beyond metadata. There is no ambiguity about the tool's core purpose or its primary input.

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

Usage Guidelines4/5

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

The description gives strong operational guidance: when to use content mode, when binary requires output_file, when verify is valid, and how export_mime_type affects native files. It implicitly signals usage ('Set verify: true for integrity checking'). It does not explicitly compare to drive_search/drive_list siblings, but for a read operation the mode-selection guidance is more pertinent and well covered.

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

git_amend_commitsA

Apply commit message amendments deterministically from an inline YAML document (no AI). This is the apply-messages-from-YAML counterpart to git_twiddle_commits: use git_twiddle_commits with dry_run = true to generate the amendments YAML, then pass it here to apply. Mutating: rewrites commit messages via git commit --amend / interactive rebase. Mirrors omni-dev git commit message amend. Commits already contained in a remote main branch are refused unless allow_pushed = true (rewriting published history).

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathNoPath to the git repository. Defaults to the current working directory.
allow_pushedNoWhen true, permits amending commits that already exist in a remote main branch (rewrites published history). Defaults to `false`, which refuses such commits — mirrors the CLI `--allow-pushed` flag.
amendments_yamlYesAmendments to apply, as an inline YAML document with an `amendments` list. Each entry needs `commit` (full 40-char SHA), `message` (the new message), and `summary` (may be empty), matching the YAML produced by `git_twiddle_commits` in `dry_run` mode. Applied deterministically — no AI is involved.

TDQS

A4.4/5.0
Behavior4/5

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

Despite no annotations, the description discloses it is mutating, rewrites commit messages via git commands, and refuses remote main branch commits unless allowed. This covers key behavioral traits, though it could mention side effects like hash changes.

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

Conciseness4/5

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

The description is concise with about 4 sentences, each adding information. It is front-loaded with the core purpose, though the phrase 'Mirrors omni-dev...' is slightly extraneous.

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

Completeness3/5

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

Covers most aspects but omits the return value of the tool. With no output schema, the user/agent does not know what the tool returns after applying amendments, leaving a completeness gap.

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

Parameters4/5

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

Schema has 100% coverage. Description adds value by specifying the required YAML structure (amendments list with commit, message, summary) and that the output matches `git_twiddle_commits` dry_run output.

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

Purpose5/5

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

The description clearly states the tool applies commit message amendments from a YAML document deterministically, specifying the verb 'apply' and the resource 'commit messages.' It distinguishes itself from the sibling `git_twiddle_commits` by positioning as the apply counterpart.

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

Usage Guidelines5/5

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

Explicitly instructs to use `git_twiddle_commits` with `dry_run = true` to generate the YAML, then pass it here. Also mentions that commits on remote main branch are refused unless `allow_pushed=true`, providing clear when-to-use and when-not-to-use guidance.

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

git_branch_infoA

Analyze the current branch's commits against a base branch and return repository information as YAML. Use this when you want the diff against main/master (or another base) without computing an explicit range; use git_view_commits instead when you already have a range. Mirrors omni-dev git branch info.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoBase branch to compare against, e.g. `main` or `develop`. When omitted, resolved remote-first: `origin/main`, `origin/master`, local `main`, then local `master`.
repo_pathNoPath to the git repository. Defaults to the current working directory.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It mentions returning YAML and analyzing commits, implying read-only. However, it does not explicitly state non-destructive behavior or permissions. Still, the behavioral traits are reasonably inferred.

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

Conciseness5/5

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

Two sentences plus a note, front-loaded with purpose, no redundant information. Every sentence adds value.

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

Completeness5/5

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

Covers purpose, return format (YAML), use cases, and when to use alternatives. No output schema, but return type is described. Complete for a tool with two optional parameters.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The description adds some context (e.g., branch resolution order) 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.

Purpose5/5

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

The description clearly states the tool's purpose: analyzing the current branch's commits against a base branch and returning YAML. It distinguishes from sibling git_view_commits by specifying when to use each, providing specific verb and resource.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (diff against main/master without explicit range) and when to use git_view_commits (already have a range). Also references CLI command for familiarity. Clear guidance.

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

git_check_commitsA

Validate commit messages in a range against commit guidelines (read-only — never modifies commits). Use this to report problems; use git_twiddle_commits instead to rewrite the messages. range is required (e.g. HEAD~3..HEAD). Mirrors omni-dev git commit message check. Returns a YAML payload with the full CheckReport, a pass/fail summary, and the exit code the CLI would use (honouring strict).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoClaude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted.
rangeYesCommit range to check (e.g., `HEAD~3..HEAD`, `abc123..def456`). Required — unlike the CLI, this tool does not default to "commits ahead of the base branch".
strictNoWhen true, warnings are treated as non-zero exit conditions. Defaults to `false` (only errors fail).
repo_pathNoPath to the git repository. Defaults to the current working directory.
guidelines_pathNoOptional explicit path to the guidelines file. When omitted the tool falls back to `.omni-dev/commit-guidelines.md` via the standard resolution chain.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It declares read-only behavior, describes the return payload (YAML with CheckReport, pass/fail summary, exit code), and explains defaults for parameters. It could mention potential side effects (none), but overall it is transparent for a read-only tool.

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

Conciseness5/5

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

The description is concise (four sentences) with no wasted words. It front-loads purpose, then usage, then parameter notes, then return format. Every sentence adds value.

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

Completeness4/5

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

Given the tool has 5 parameters and no output schema, the description covers essential context: read-only nature, alternative tool, required range format, default behaviors (model, repo_path, guidelines_path), and return payload structure. It could elaborate on the CheckReport contents, but the existing description is sufficient for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters well. The description adds minor context for `range` (required, example) and mentions CLI mirroring, but does not significantly enhance the parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Validate' and the resource 'commit messages in a range against commit guidelines'. It explicitly notes the tool is read-only ('never modifies commits') and distinguishes itself from the sibling tool `git_twiddle_commits` which rewrites messages.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Use this to report problems; use `git_twiddle_commits` instead to rewrite the messages.' It also clarifies that `range` is required (unlike the CLI default), giving a concrete example.

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

git_create_prA

Generate an AI-drafted pull request title and description for the current branch. Mirrors omni-dev git branch create pr in its content-generation phase — this tool returns the proposed PR content as YAML and does NOT push the branch or invoke gh pr create.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoClaude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted.
repo_pathNoPath to the git repository. Defaults to the current working directory.
base_branchNoBase branch the PR would merge into, e.g. `main` or `develop`. Defaults to the primary remote's main branch when omitted.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly discloses that the tool does NOT push the branch or invoke gh pr create, and returns YAML. It mentions using an AI model (Claude) and parameter defaults. However, it does not mention potential network requirements or any side effects besides generation, which is sufficient given the read-only nature.

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

Conciseness5/5

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

The description is two sentences: the first clearly states purpose, the second clarifies behavior and distinguishes from related tools. No redundant information; every sentence earns its place.

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

Completeness4/5

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

Given no output schema, the description usefully states the return format (YAML). It covers what the tool does and does not do, and the schema handles parameter details. The description could be more explicit about the YAML structure (e.g., includes title and description), but it is sufficiently complete for decision-making.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the three parameters. The description adds minor context about model overrides and default behavior, but does not provide significant new information beyond the schema descriptions. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Generate' and identifies the resource 'AI-drafted pull request title and description for the current branch'. It clearly distinguishes from sibling git tools by noting it does NOT push or invoke gh pr create, differentiating it from tools like git_staged_commit or manual PR creation workflows.

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

Usage Guidelines4/5

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

The description states the tool mirrors omni-dev git branch create pr in its content-generation phase and returns YAML without creating the PR, giving clear context for when to use it (to get a draft). It implicitly suggests alternatives (e.g., use gh pr create to actually create the PR), but does not explicitly list alternatives or exclusions.

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

git_lint_commitsA

Deterministically validate commit messages against guidelines — no AI, no network, no credentials required (unlike git_check_commits, which calls an AI model). Checks: type/scope format, scope membership in scopes.yaml, subject length, lowercase/no-trailing-period style, blank line after the subject when a body is present, and forbidden footers. Does NOT check type-matches-diff, scope-file-correspondence, or description truthfulness — those need a model and stay in git_check_commits. Set message to lint a single literal message directly (bypassing git entirely), or range to lint every non-merge commit in a range (defaults to commits ahead of the base branch). Set suggest = true to also populate a deterministic corrected-scope suggestion (no AI) for each unknown-scope/missing-scope issue — report-only; apply one via git_amend_commits, or use the CLI's lint --fix to apply directly. Mirrors omni-dev git commit message lint --suggest. Returns a YAML payload with the full CheckReport, a pass/fail summary, and the exit code the CLI would use (honouring strict).

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoCommit range to lint (e.g., `HEAD~3..HEAD`, `abc123..def456`). Defaults to commits ahead of the default base branch when omitted (unlike `git_check_commits`, which requires `range`).
strictNoWhen true, warnings are treated as non-zero exit conditions. Defaults to `false` (only errors fail).
messageNoLint this literal message directly instead of a commit range (the `--stdin` equivalent) — no git repository is touched. Exactly one of `range`/`message` should be set; `message` takes precedence if both are.
suggestNoWhen true, populates a deterministic corrected-scope suggestion (no AI, no network) for each commit with an `unknown-scope`/`missing-scope` issue, resolved from its changed files against `scopes.yaml` + ecosystem defaults. Report-only — mutation stays exclusive to `git_amend_commits`. Errors if combined with `message` (a literal message has no changed-files list). Defaults to `false`.
repo_pathNoPath to the git repository. Defaults to the current working directory. Ignored when `message` is set.
context_dirNoOptional explicit context directory (overrides the standard `.omni-dev/` resolution chain for both `scopes.yaml` and `commit-rules.yaml`).

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It clearly states that the tool is deterministic, requires no AI, no network, and no credentials. It explains that the suggest parameter is report-only and that mutation is exclusive to git_amend_commits. It also discloses error conditions (suggest with message) and the return format (YAML payload with exit code). This is exceptionally transparent.

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

Conciseness4/5

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

The description is long (over 200 words) but every sentence contributes essential information. It is well-structured with paragraphs and bullet-like lists, front-loading the main purpose and contrasts with alternatives. While slightly verbose, it avoids redundancy and remains focused. The length is justified by the complexity of the tool's parameters and behavior.

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

Completeness4/5

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

Given the tool's complexity, the description covers all critical aspects: what it does, what it doesn't do, how parameters interact, return format, and contrast with sibling tools. It mentions the one important error case (suggest+message). It doesn't explicitly state that the tool is read-only, but it implies this by noting that mutation is exclusive to git_amend_commits. Overall, it is sufficiently complete 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.

Parameters5/5

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

Although the schema already covers 100% of parameters, the description adds substantial semantic value. It explains the default behavior of range (commits ahead of base branch), the precedence rule when both range and message are set, the error condition when suggest is combined with message, and the role of context_dir in overriding default resolution. These clarifications go well beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: deterministically validate commit messages against guidelines. It specifies the verb (validate), the resource (commit messages), and distinguishes itself from git_check_commits by emphasizing the deterministic, no-AI approach. It also lists exactly what checks are performed and what is not checked, leaving no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly contrasts with git_check_commits, explaining that this tool is used when deterministic validation is desired instead of AI-based checking. It also provides concrete usage scenarios (linting a literal message vs. a range) and explains the default behavior for range, as well as the precedence of message over range. This gives clear guidance on when to use this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_staged_commitA

Generate a Conventional Commits message from the currently staged diff and (by default) commit it via git commit -m. Mirrors omni-dev git commit message staged. Set print_only = true to return the generated message without committing, or no_ai = true to skip the AI backend entirely and return a deterministic type(scope): skeleton instead (no AI, no network, no credentials required; never commits).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoClaude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted. Ignored when `no_ai` is set.
no_aiNoWhen true, skips the AI backend entirely and returns a deterministic `type(scope): ` skeleton derived from the staged diff's changed files — no AI, no network, no credentials required. Never commits. Defaults to `false`.
repo_pathNoPath to the git repository. Defaults to the current working directory.
print_onlyNoWhen true, the generated commit message is returned without being committed to the repository. Defaults to `false` (commit applied). Ignored (always treated as effectively true) when `no_ai` is set.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden. It clearly discloses that the tool commits by default, that print_only suppresses the commit, and that no_ai skips the AI backend and always returns a skeleton without committing. This covers the main side effects an agent needs to know before invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by the two behavioral flags. It is efficient, though the no_ai behavior is described twice ('skip the AI backend' and 'no AI'), creating slight redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All four parameters are covered and their interactions explained. The description is largely sufficient for correct invocation, given the 100% schema coverage and the clear flag semantics. Minor gaps include not detailing the output format of the message or error behavior when no changes are staged, but this is secondary for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters' individual meanings are already documented. The description adds marginal value by clarifying the interaction effects between flags (e.g., no_ai overrides print_only) and the deterministic nature of no_ai output, but this mostly repeats schema content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: generate a Conventional Commits message from the currently staged diff and optionally commit it. It is the only sibling tool that creates a commit directly from staged changes, distinguishing it from git_view_commits, git_lint_commits, and git_amend_commits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the default behavior (commit applied) and how the print_only and no_ai flags modify it, including the critical note that no_ai never commits. However, it does not explicitly discuss when to choose this tool over siblings like git_amend_commits or how prerequisite conditions (e.g., having staged changes) should be met.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_twiddle_commitsA

Generate improved commit messages for a range (e.g. HEAD~3..HEAD) and (by default) apply them. Mutating: rewrites commit messages unless dry_run = true. Use this to fix messages; use git_check_commits instead to only report problems without modifying anything. Mirrors omni-dev git commit message twiddle --auto-apply. Set dry_run = true to return the proposed amendments as YAML without applying them. The editor is never started from this tool. Commits already contained in a remote main branch are refused (rewriting published history); overriding requires a human running omni-dev git commit message amend --allow-pushed from the CLI.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoClaude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted.
rangeNoCommit range to twiddle (e.g., `HEAD~3..HEAD`, `abc123..def456`). Defaults to `HEAD~5..HEAD` when omitted.
dry_runNoWhen true, proposed amendments are returned without being applied. When false (or omitted), amendments are applied automatically — the MCP boundary is non-interactive and therefore forces `--auto-apply` semantics; no editor is started.
repo_pathNoPath to the git repository. Defaults to the current working directory.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It fully discloses that the tool rewrites commit messages (mutation), that it's non-interactive (no editor started), that it forces auto-apply unless dry_run=true, and that it refuses rewriting published history. This is comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet thorough. The first sentence states the core action and default behavior. Subsequent sentences add critical context (sibling alternative, command mirror, dry_run effects, editor behavior, refusal conditions). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, but the description explains the two outcomes (commit messages rewritten or YAML returned when dry_run=true). It covers all relevant behavioral aspects: mutation, default range, refusal of published commits, and underlying command. The agent has enough to decide correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds significant value beyond schema: default range (HEAD~5..HEAD), auto-apply semantics, and the refusal of published commits. It also explains model override defaults. Thus a 4 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates improved commit messages for a range and applies them by default. It distinguishes from the sibling git_check_commits by noting that this tool fixes messages while the other only reports problems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool (to fix messages) and when to use the alternative git_check_commits (to only report problems). Also explains dry_run behavior and the refusal of commits on remote main branches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_view_commitsA

Analyze commits in a range and return repository information as YAML. Use this when you have an explicit commit range (e.g. HEAD~3..HEAD); use git_branch_info instead to analyze the current branch against a base branch without computing the range yourself. Mirrors omni-dev git commit message view.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoCommit range to analyze (e.g., `HEAD~3..HEAD`, `abc123..def456`). Defaults to `HEAD` when omitted.
repo_pathNoPath to the git repository. Must be absolute when provided. Defaults to the current working directory.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions the output is YAML but does not state that the tool is read-only, whether it has side effects, or any required permissions. The description is minimal beyond purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences: purpose, usage guidance, and a reference. It is front-loaded with the main action, though the mirroring note is mildly extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description only vaguely says 'return repository information as YAML'. It does not detail what fields are included or the structure, leaving the agent with incomplete information about the return value. For a simple tool this may suffice, but more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond what the schema already provides for the range and repo_path parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool analyzes commits in a range and returns repository information as YAML. It distinguishes itself from the sibling tool git_branch_info by specifying when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: use this when you have an explicit commit range, and use git_branch_info instead for analyzing a branch against a base branch without computing the range yourself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_account_listA

List Gmail accounts configured in ~/.omni-dev/settings.json — name, cached email address (if known), granted scope, and which one is the default. Call this first to discover valid account values before passing one to gmail_search/gmail_message_read/gmail_thread_read/gmail_label_list/gmail_auth_status. Never returns a secret. Read-only, no parameters. Mirrors omni-dev gmail account list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description takes full responsibility for surfacing behaviors. It discloses that the email may be 'cached,' notes it never returns secrets, and states it is read-only. It also names the configuration file and explains what data is exposed (including which account is default), which sets clear expectations for a low-risk, non-destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each with a distinct job: what it lists, how to use it, and safety/equivalence. The most important usage instruction is front-loaded in the second sentence, and the mirror command adds confidence for power users. No verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, zero-output-schema tool, the description covers all the angles: what is listed (fields and file), how to use the output (pass to other tools), safety (no secrets), and behavior (cached email possible). Nothing an agent needs to call this correctly is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool takes zero parameters, so per the rubric the baseline is 4. The description reinforces the 'no parameters' expectation, which adds no new info but is consistent. There is no schema to augment, so the score remains at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific action ('List Gmail accounts configured in ~/.omni-dev/settings.json') and names the exact fields returned (name, cached email, granted scope, default flag). It differentiates itself from sibling tools by framing itself as a discovery/predecessor for gmail_search, gmail_message_read, etc., which is explicitly stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use instruction: 'Call this first to discover valid `account` values before passing one to [specific tools].' It also provides an exclusion note ('Never returns a secret') and states it is read-only with no parameters. While it doesn't name direct alternatives, its role as the initial discovery step is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_auth_statusA

Report whether Gmail OAuth2 credentials are configured (GMAIL_CLIENT_ID/GMAIL_CLIENT_SECRET/refresh token present) and which scope was granted at login (readonly vs. modify). Returns presence flags and the granted scope only — NEVER the client secret, refresh token, or access token. Unlike the CLI omni-dev gmail auth status, this tool does not call the Gmail API and cannot confirm the refresh token is still accepted (a testing-mode Google Cloud project's refresh tokens expire after 7 days — use the CLI status command to actually verify). Read-only. Mirrors omni-dev gmail auth status.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoSelects a named Gmail account instead of the ambient `--account`/`OMNI_DEV_GMAIL_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `gmail_account_list` to discover configured names.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is highly transparent about both what the tool does and what it does not do. It explicitly states that it does not call the Gmail API, does not return sensitive tokens (client secret, refresh token, access token), and cannot confirm refresh token acceptance. Since there are no annotations, the description fully carries the burden of behavioral disclosure, and it does so thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but well organized. Every sentence serves a purpose: the first states the core functionality and return values, the second explicitly lists exclusions (tokens not returned), and the third clarifies limitations and read-only nature. It avoids fluff and uses a logical flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is complete. It explains what the tool returns (presence flags and granted scope) and what it does not return (tokens), which is sufficient for an agent to understand the tool's output shape. It also addresses edge cases like refresh token expiration, making the description robust for real-world usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'account' is fully described in the schema, and the description adds valuable context: it explains the default resolution behavior, mentions the ambient CLI flag, and suggests using gmail_account_list to discover valid names. This goes beyond the schema and gives the agent clear guidance on how to use the parameter correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: reporting whether Gmail OAuth2 credentials are configured and which scope was granted. It explicitly names the resource (Gmail) and the action (report status), leaving no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance by contrasting this tool with the CLI version, explaining that it does not call the Gmail API and cannot verify refresh token validity. It also implies when to use this tool (for a quick local check) versus the CLI (for actual verification). However, it does not explicitly compare with other Gmail sibling tools, though that is less critical given the tool's specific diagnostic focus.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_label_listA

List every label on the Gmail mailbox (system labels like INBOX/TRASH and user-created ones), with unread/total message counts. Adding or removing labels on messages is CLI-only in this release (omni-dev gmail label add/remove) — no MCP tool mutates labels yet. Read-only. Mirrors omni-dev gmail label list. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoSelects a named Gmail account instead of the ambient `--account`/`OMNI_DEV_GMAIL_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `gmail_account_list` to discover configured names.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even without any annotations, the description carries the full behavioral burden and does it well: it flags the operation as read-only, states the output format (YAML), lists the returned data fields, and notes the CLI equivalent. The one-sentence zhurnada about the mutation boundary is a useful context signal for an agent reasoning about the tool family's capabilities. It could go further by describing the exact YAML shape or auth-side effects, but for a small read-only listing tool, this is thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence carries weight: the scope, the data returned, the mutation boundary, the CLI mirror, the output format, and read-only status are each covered without repetition. The mutation-boundary sentence, though about the broader family, earns its place by setting agent expectations. A very brief output-format sentence feels slightly terse but is perfectly functional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with this complexity (1 optional arg, no required parameters, shallow return data), the description is nearly complete. It covers output format, data included, and even names the sibling for account discovery. Minor omissions like the exact YAML shape or behavior on an empty label list are forgivable at this low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the optional `account` parameter is already well-documented with defaults, resolution semantics, and a pointer to gmail_account_list. The description doesn't add explicit param-level info, but at this schema coverage level the burden is already met. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('List every label on the Gmail mailbox'), enumerates what counts as a label (system + user-created), and specifies exactly what the output contains (unread/total counts). Across the Gmail sibling family (gmail_search, gmail_message_read, gmail_account_list), this tool is unambiguous in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool covers and explicitly draws the line at mutation ('Adding or removing labels on messages is CLI-only in this release'), so an agent won't expect mutation ability here. The schema goes further by naming gmail_account_list for discovering account names, and the description offers the CLI mirror as a reference. It never explicitly says 'use X instead of this' for the core listing behavior, so it stops just short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_message_readA

Read a single Gmail message by id. format is minimal (ids/labels only), metadata (headers + snippet only), full (default; parsed MIME structure), or raw (base64url-encoded RFC 2822 source) — Gmail's own wire values verbatim. When output_file is set, writes the rendered message to that path and returns a short YAML summary instead of the inline body — use it for large messages or ones with attachments that would exceed the response size limit. Read-only. Mirrors omni-dev gmail read. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo`minimal` (ids/labels only), `metadata` (headers + snippet), `full` (default; parsed MIME structure), or `raw` (base64url RFC 2822 source). Matches Gmail's own wire values verbatim.
accountNoSelects a named Gmail account instead of the ambient `--account`/`OMNI_DEV_GMAIL_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `gmail_account_list` to discover configured names.
message_idYesGmail message id. Required.
output_fileNoWhen set, writes the rendered message to this path and returns a short YAML summary (path/bytes/format) instead of the inline body — use for large messages/attachments that would blow past the context window.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full behavioral disclosure responsibility. It discloses read-only nature, the side effect of writing to a file when output_file is set, and default format behavior. However, it doesn't mention authentication requirements or error handling (e.g., nonexistent ID). The statement 'Mirrors `omni-dev gmail read`' adds little to agent understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise paragraph that front-loads the tool's core function and then details format options. It includes a redundant 'Mirrors `omni-dev gmail read`' stating the obvious and the phrase 'Gmail's own wire values' adds little. Slightly verbose but mostly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential behaviors: format options with defaults, output_file side effect (writing to disk and changing return), and account selection. It lacks details on error handling, authentication, or the exact return structure when no output_file is used, but the schema and tool name cover most expectations. For a read tool, this is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents all four parameters (100% coverage), so the baseline is 3. The description adds value by elaborating on format defaults and the purpose of output_file for large messages, but most semantic detail is already in the schema. It adds marginal but non-essential guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read a single Gmail message by id', specifying the verb (read), resource (Gmail message), and the identifier ('by id'). It distinguishes itself from search/thread tools by focusing on a single message. However, it doesn't explicitly differentiate from sibling tools like gmail_thread_read beyond the singular nature, which is implicit but sufficient.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context, such as when to use 'output_file' (to avoid exceeding context window with attachments) and how the 'account' parameter selects via 'gmail_account_list'. However, it lacks explicit guidance on when to choose this tool over alternatives like gmail_search or gmail_thread_read, and doesn't mention prerequisites like authentication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_thread_readA

Read a full Gmail thread (conversation) by id, including every message in it. A thread is N messages, each potentially carrying attachments — the single highest-risk payload on the whole Gmail surface for exceeding the response size limit, so large threads are automatically truncated with a marker. Read-only. Mirrors omni-dev gmail thread. Output is YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoSelects a named Gmail account instead of the ambient `--account`/`OMNI_DEV_GMAIL_ACCOUNT` resolution — e.g. `work`. Omit to use the resolved default account (or the legacy single-account credentials, if no named accounts are configured). Call `gmail_account_list` to discover configured names.
thread_idYesGmail thread id. Required.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly mentions read-onlyness, automatic truncation for large threads with a marker, the risk of attachments exceeding response size limits, and YAML output. This is exemplary transparency beyond what annotations would provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core action and then covering critical caveats. The 'Mirrors omni-dev gmail thread' statement is tangential and the risk phrasing is somewhat elaborate, but every sentence contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, safety (read-only), truncation behavior, risk warning, and output format. With no output schema, a bit more detail on the YAML structure might be helpful, but the core usage context is complete and sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description adds no additional parameter semantics beyond what the schema already documents; both 'account' and 'thread_id' are fully described in the schema, so the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Read'), the resource ('full Gmail thread'), and the scope ('including every message in it'). This differentiates it from single-message reads (like gmail_message_read) by emphasizing 'full thread' and 'every message', making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when the entire conversation is needed) but does not explicitly contrast it with alternatives like gmail_message_read or gmail_search, nor mention when not to use it. The reference to 'omni-dev gmail thread' is a CLI mirror, not a tool-selection guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_attachment_deleteA

Delete a JIRA attachment by ID. DESTRUCTIVE AND IRREVERSIBLE (JIRA has no trash). You must explicitly pass confirm: true for the deletion to proceed; otherwise the tool returns an error without contacting the API. Returns YAML {status: ok} on success. Mirrors omni-dev atlassian jira attachment delete --force.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be set to `true` — destructive guard.
attachment_idYesAttachment ID to delete.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's destructive nature with 'DESTRUCTIVE AND IRREVERSIBLE (JIRA has no trash)'. It also explains the confirm guard and the tool's behavior when confirm is not provided, as well as the return format. With no annotations, the description carries the full burden and does so thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, each serving a distinct purpose: stating the action, emphasizing destructiveness, and explaining the confirm guard and return format. It is front-loaded with the most critical information and contains no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 required params, no output schema, no annotations), the description covers the essential aspects: purpose, destructive nature, confirm requirement, and return format. It could optionally mention error cases or side effects, but overall it is complete enough for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters. The description adds value by explaining that confirm must be set to true to proceed, and that without it the tool returns an error without contacting the API. This goes beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Delete a JIRA attachment by ID', which is a clear verb+resource. It distinguishes from sibling tools like jira_attachment_download and jira_attachment_upload by focusing on deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance: it warns that the deletion is destructive and irreversible, and mandates the confirm: true parameter. However, it does not explicitly state when to use this tool versus alternatives (e.g., when deletion is appropriate).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_attachment_downloadA

Download attachments on a JIRA issue to disk. Returns YAML metadata (id, filename, mime_type, size, on-disk path) for each downloaded file. If output_dir is omitted, files are written to a fresh temp directory whose path is in the result; the assistant can then read them via the filesystem tool. Mirrors omni-dev atlassian jira attachment download.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
filterNoCase-insensitive filename substring filter.
output_dirNoOutput directory. Defaults to a fresh temp directory whose path is returned in the result so the assistant can read the files via its filesystem tool.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description shoulders the burden of behavioral disclosure. It discloses that files are written to disk, the YAML metadata return format, and the temp-directory fallback when output_dir is omitted. It does not mention auth requirements or error behavior, but for a download tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. It front-loads the purpose, then efficiently covers return metadata and the key temp-dir behavior, earning its place with each sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema and no annotations, the description compensates by explaining the return value (YAML metadata fields) and the on-disk destination behavior. Combined with full schema coverage for parameters, the description supplies enough context for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all three parameters are documented). The description only repeats the output_dir behavior already present in the schema and adds no new parameter-level details, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Download attachments on a JIRA issue to disk.' This clearly distinguishes it from sibling tools like jira_attachment_upload, jira_attachment_delete, and confluence_attachment_download, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by explaining the optional output_dir behavior and the resulting temp directory path for reading files. However, it does not explicitly name alternative tools or provide when-to-use/when-not-to-use guidance, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_attachment_imagesA

Download image attachments (PNG, JPEG, GIF, SVG, WebP) on a JIRA issue to disk. Returns YAML metadata for each downloaded image. If output_dir is omitted, files are written to a fresh temp directory. Mirrors omni-dev atlassian jira attachment images.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
output_dirNoOutput directory. Defaults to a fresh temp directory.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses that files are written to disk, that YAML metadata is returned per image, and that a fresh temp directory is used when output_dir is omitted. While it doesn't discuss file overwrite behavior or authentication, it covers the primary side effects and return behavior adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four short sentences, each with a clear purpose: action, return format, optional parameter behavior, and a command reference. The main content is front-loaded in the first sentence, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with two well-documented parameters and no output schema, the description covers the action, file types, return type, and default directory behavior. It omits minor details like file naming or YAML metadata structure, but these are not essential for correct invocation. It is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage with descriptions for `key` and `output_dir`, including default behavior. The description reiterates the `output_dir` default but adds no new parameter-level semantics beyond what the schema documents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Download image attachments on a JIRA issue to disk.' It lists exact formats (PNG, JPEG, GIF, SVG, WebP) and the destination (disk), making the tool's scope unambiguous and differentiating it from generic attachment tools. The 'Mirrors' reference further anchors the tool's identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by restricting to image attachments, which contrasts with the sibling `jira_attachment_download`, but it never explicitly states when to use this tool versus that alternative. No exclusions or explicit when-to-use guidance are provided. The 'Mirrors' command mapping is not a usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_attachment_uploadA

Upload one or more local files as attachments to a JIRA issue. Provide file_paths as absolute paths on the MCP server's filesystem; each is streamed from disk and rides a single multipart request. Returns YAML metadata (id, filename, mime_type, size, content_url) for each created attachment. Mirrors omni-dev atlassian jira attachment upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
file_pathsYesLocal filesystem path(s) to the file(s) to upload. Each is streamed from disk (never fully buffered in memory) and rides a single multipart request.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that files are streamed from disk (never fully buffered), sent in a single multipart request, and that a YAML metadata structure is returned. This goes beyond the schema, though it does not mention auth or side effects like overwriting existing attachments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three dense sentences, front-loaded with the core purpose, and includes a useful CLI mirror reference. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters, full schema coverage, and no output schema, the description sufficiently explains input requirements, behavior (streaming, single request), and return format (YAML metadata fields). It lacks error conditions but is otherwise complete for an upload tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both `key` and `file_paths` are well-documented. The description repeats some file_paths details already in the schema (streaming, multipart) but adds nothing new about `key` or beyond what the schema provides. Baseline 3 applies when the schema handles parameter semantics fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Upload one or more local files as attachments to a JIRA issue,' using a specific verb and resource. It distinguishes itself from sibling tools like jira_attachment_download and jira_attachment_delete, and adds context about local files on the MCP server's filesystem.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when you need to attach files from the server's filesystem) but does not explicitly contrast with alternative tools or state when not to use. The note about absolute paths on the server's filesystem provides some context, but no exclusions or alternative recommendations are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_board_issuesA

List issues on a JIRA agile board (every issue on the board, across its backlog and all its sprints). Accepts an optional JQL filter. Returns YAML. To scope to a single sprint's issues instead, use jira_sprint_issues. Mirrors omni-dev atlassian jira board issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlNoOptional JQL to further filter issues.
limitNoMaximum number of issues to return. `0` means unlimited (default 50).
board_idYesBoard ID.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description takes on the full burden of behavioral disclosure. It discloses the output format ('Returns YAML') and the board-wide scope, which are both useful. However, it does not mention pagination, limit behavior, or permission requirements, though the schema covers limit semantics. This is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at three sentences. The first sentence front-loads the core purpose and scope, the second conveys JQL acceptance and output format, and the third provides the alternative tool and mirror command. No filler or redundancy exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with three well-documented parameters and no output schema, the description covers the essential context: purpose, scope, output format, and an alternative. It could have mentioned limit behavior or edge cases, but the schema already handles limit semantics, and the YAML output note compensates for the missing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage across all three parameters, so the baseline is 3. The description simply restates that a JQL filter is optional and clarifies the board-wide scope in relation to the board_id, but it does not add deeper parameter-level nuance beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('JIRA agile board') with explicit scope ('every issue on the board, across its backlog and all its sprints'). It also differentiates from the sibling tool by naming 'jira_sprint_issues' for the alternate use case, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use an alternative: 'To scope to a single sprint's issues instead, use jira_sprint_issues.' This gives clear usage direction. The reference to the mirrored CLI command ('Mirrors omni-dev atlassian jira board issues') also helps users familiar with that interface understand expectations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_board_listA

List JIRA agile boards, optionally filtered by project key and/or board type (scrum/kanban). Returns YAML. Mirrors omni-dev atlassian jira board list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of boards to return. `0` means unlimited (default 50).
projectNoFilter by project key.
board_typeNoFilter by board type (e.g., `scrum`, `kanban`).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the responsibility for behavioral disclosure. It does add value by stating 'Returns YAML' and referencing the CLI mirror. However, it does not explicitly state that the operation is read-only, nor does it mention ordering, errors, or permission requirements. The verb 'List' implies a safe read, but that is not made explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the core action. The filter mention and YAML return type are both essential; the CLI mirror reference is a compact, useful pointer. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with an exhaustive schema and no output schema, the description is mostly complete. It covers the core purpose, filters, and output format. It lacks an explicit read-only statement, but the verb 'List' suffices. The missing guidance on when to choose this over sibling tools is a minor gap, already partially addressed by purpose clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage with rich descriptions for all three parameters, including the limit semantics ('0 means unlimited'). The description's mention of 'optionally filtered by project key and/or board type' adds no meaning beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List JIRA agile boards' – a specific verb + resource – and further clarifies optional filters by project key and board type. This distinguishes it from sibling tools like jira_board_issues (lists issues on a board) and jira_project_list (lists projects).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it lists boards with optional filters. It does not explicitly name alternatives or when-not-to-use, but the action is self-evident. The presence of sibling tools like jira_board_issues implies the contrast, yet the description does not spell it out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_bulk_createA

Bulk-create JIRA issues and (optionally) wire dependency links between them in one call — built for epic decomposition. issues are created in order and each may carry a local alias. links are created afterward; each inward/outward is resolved alias-first (to the freshly-minted key) else treated as an existing issue key, so you can link issues this same call just created. Default is continue-on-error: every record is attempted and a YAML report lists per-issue {alias, ok, key, self_url | error}, per-link {ok | error}, and a summary. Set fail_fast to stop at the first failure. NOTE: JIRA has no transaction — nothing is rolled back; the report always shows exactly what succeeded so you can retry only the remainder. To link existing issues only, pass an empty issues array and reference real keys in links.

ParametersJSON Schema
NameRequiredDescriptionDefault
linksNoDependency links to create after the issues. Each endpoint is resolved alias-first (to the freshly-minted key), else treated as an existing issue key.
issuesYesIssues to create, in order. May be empty to only create `links` between existing issues.
fail_fastNoWhen true, stop at the first failed create or link instead of continuing. The partial report is still returned. Defaults to false (continue-on-error).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so excellently: it discloses the creation order, alias-first link resolution, continue-on-error default, YAML report contents, fail_fast behavior, and the critical 'no transaction / no rollback' caveat. This more than satisfies transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that front-loads the purpose, then efficiently explains alias resolution, error handling, report format, and transactionality. Every sentence contributes necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description fully specifies the YAML report structure (per-issue fields, per-link status, summary) and covers edge cases (empty issues array, failure continuation, partial failures). The tool's complexity is matched by a complete and self-contained description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds cross-parameter semantics: how aliases bridge issues and links, the ordering of operations, and the interaction of fail_fast with the report. This adds value beyond the isolated parameter descriptions in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool bulk-creates JIRA issues and optionally wires dependency links between them, explicitly positioning it for epic decomposition. This distinguishes it from single-issue creation (jira_create) and single-link creation (jira_link_create) via the bulk + link combination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: built for epic decomposition, and it even covers a specific scenario (linking existing issues only via an empty issues array). It does not explicitly name alternative tools or state when not to use it, but the context is unambiguous enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_changelogA

Get the change history for a JIRA issue. Returns YAML with one entry per change (author, timestamp, items). The author is an Atlassian account ID — resolve it to a display name with jira_user_get. Mirrors omni-dev atlassian jira changelog.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
limitNoMaximum number of entries to return. `0` means unlimited (default 50).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose useful behavior: it returns YAML with one entry per change (author, timestamp, items) and notes that the author is an Atlassian account ID needing resolution via jira_user_get. This goes beyond a generic 'get history' and helps the agent understand the output shape and a follow-up step, though it doesn't discuss pagination or potential errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and contains no filler. Each sentence adds value: the purpose, the output format, the author ID caveat, and the mirroring to a known CLI command. It is compact and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple two-parameter schema, the description adequately covers what the tool returns and highlights an important nuance (author IDs). Since there is no output schema, the explicit mention of 'author, timestamp, items' is valuable. It could be slightly more complete by explaining the 'items' structure, but it is sufficient for a straightforward changelog fetcher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — both `key` and `limit` are described with examples and defaults. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get the change history for a JIRA issue.' This is a specific verb+resource combination and distinguishes it from sibling tools like jira_read or jira_search by focusing on history/changelog. It also mentions the YAML return format, further clarifying its unique output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention any exclusions or prerequisites, and the only related tool reference (jira_user_get) is for post-processing author IDs, not for choosing between history and other query methods. The 'Mirrors omni-dev...' line is provenance, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_commentA

Manage JIRA issue comments on key (e.g. PROJ-123). action = "list" returns comments as YAML; action = "add" posts the given body (JFM markdown — GitHub-style, see resource omni-dev://specs/jfm). Supply the body as body (inline) OR body_path (a filesystem path the server reads) — not both. Listed comment authors are Atlassian account IDs — resolve them to display names with jira_user_get. To change the text of an existing comment use jira_comment_edit (it needs the comment id from the list output).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
bodyNoComment body (JFM markdown — see resource `omni-dev://specs/jfm`). Required for `action = "add"`. Mutually exclusive with `body_path`.
limitNoMaximum number of comments to return. `0` means unlimited.
actionYes`list` to fetch comments; `add` to post a new one.
body_pathNoFilesystem path the server reads the comment body from, instead of `body`. Prefer this when the body is already on disk. Mutually exclusive with `body`.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that list returns YAML, that authors are Atlassian account IDs (requiring resolution), and that body input has a mutual exclusion constraint. However, it does not describe the return format for `add`, potential side effects, or error conditions, which would be valuable 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence adds value: purpose, actions, input methods, author resolution, and pointer to edit tool. It is slightly long but well-organized, front-loading the core purpose. No superfluous content, but the density could be improved by splitting into fewer clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return values. It states that list returns comments as YAML but does not detail the structure of each comment or what `add` returns. It also omits the behavior of the `limit` parameter (though the schema covers it). Given the tool's complexity and lack of output schema, the description provides a solid foundation but leaves return format and edge cases unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters with 100% description coverage, giving a baseline of 3. The description adds significant meaning by explaining the interplay between `body` and `body_path`, the JFM markdown format, and the semantics of `action` values. It also provides a concrete example and cross-references to other tools, going well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool manages JIRA issue comments on a specific key, and immediately enumerates the two actions (`list` and `add`). It distinguishes itself from sibling tools by explicitly naming `jira_comment_edit` for editing and `jira_user_get` for resolving author IDs, making its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: it explains when to use `list` vs `add`, when to use `body` vs `body_path`, and directs users to `jira_comment_edit` for updating existing comments. This effectively differentiates from alternatives and prevents misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_comment_deleteA

Delete a JIRA comment (identified by key + comment_id; get the id from jira_comment with action = "list"). Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. To change a comment's text instead of removing it use jira_comment_edit. Mirrors omni-dev atlassian jira comment delete. Returns a short status line.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
confirmNoMust be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`.
comment_idYesComment ID to delete (from `jira_comment` with `action = "list"`).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses irreversibility, the confirm safeguard (refuses without API call if false), and the CLI mirror. It also states the return type (short status line), covering all key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: three sentences each serving a distinct purpose (purpose, usage, alternative/behavior). No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (3 params, no output schema) and no annotations, the description covers all necessary aspects: purpose, identification, prerequisite, irreversibility, alternative, and return value. It is complete for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds value beyond schema by explaining how to obtain comment_id and emphasizing the confirm requirement, but does not significantly extend parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (delete), resource (JIRA comment), and identification method (key + comment_id). It also distinguishes from the sibling tool jira_comment_edit by explicitly noting the alternative for editing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance (delete a comment), how to obtain the comment_id (from jira_comment list), prerequisite (confirm: true), and a clear alternative (jira_comment_edit for editing).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_comment_editA

Edit an existing JIRA comment (identified by key + comment_id; get the id from jira_comment with action = "list"). To add a new comment or list comments use jira_comment instead. body is JFM markdown (see resource omni-dev://specs/jfm) and replaces the current comment text; supply it as body (inline) OR body_path (a filesystem path the server reads) — not both. Optional visibility = {type: "group"|"role", value: <name>} updates the restriction. JIRA enforces stricter permissions on edit than on add (often only the original author can edit) — when JIRA refuses, its error message is surfaced verbatim. Returns the updated comment metadata as YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
bodyNoNew comment body (JFM markdown — see resource `omni-dev://specs/jfm`). Mutually exclusive with `body_path`; exactly one is required.
body_pathNoFilesystem path the server reads the comment body from, instead of `body`. Prefer this when the body is already on disk. Mutually exclusive with `body`.
comment_idYesComment ID to update.
visibilityNoOptional visibility restriction. Many JIRA configurations only allow the comment author to change visibility — JIRA's response is surfaced as-is when permission is denied.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully bears the burden. Discloses mutation, required identification, parameter constraints, permission strictness, and return format. Missing idempotency note, but overall high transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences efficiently cover all key aspects: purpose, sibling contrast, body options, visibility, permissions, and return. No fluff, well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given full schema coverage, no output schema, and no annotations, the description covers identification, body options, visibility, permissions, and return format. No critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value by explaining JFM markdown, mutual exclusivity of body/body_path, source of comment_id, and visibility usage. Enhances semantic understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Edit an existing JIRA comment' and identifies the unique identification method (key+comment_id). It contrasts with jira_comment for add/list, providing clear sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-not and alternatives: 'To add a new comment or list comments use jira_comment instead.' Also clarifies parameter exclusivity (body vs body_path), visibility usage, and permission expectations with error handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_component_createA

Create a JIRA project component (project, name, optional description). Returns YAML for the created component. Mirrors omni-dev atlassian jira component create.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesComponent name.
projectYesProject key (e.g., `PROJ`).
descriptionNoComponent description.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return format (YAML) but does not mention side effects (creating a component), permission requirements, error behavior, or that it is a mutation. This is minimal transparency 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using two sentences to state the purpose, list parameters, and mention the return format. The 'Mirrors omni-dev...' phrase adds context without clutter, making it efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create tool with a complete schema and no output schema, the description adequately covers purpose, parameters, and return format. It lacks safety annotations, but for a create operation, the intent is clear. The description is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes all three parameters with full coverage (100%). The description only lists parameter names without adding extra meaning, so it does not compensate beyond the schema. Baseline 3 is appropriate since the schema alone provides sufficient semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a JIRA project component and lists the required parameters (project, name, optional description). It also mentions the return format (YAML), distinguishing it from sibling CRUD tools by explicitly being a create operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the verb 'create' and the resource, but provides no explicit guidance on when to use this tool versus alternatives like jira_component_update. It does not mention prerequisites, exclusions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_component_deleteA

Delete a JIRA component (by component_id from jira_component_list). Optionally reassign referencing issues via move_issues_to. Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira component delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`.
component_idYesComponent ID (from `jira_component_list`).
move_issues_toNoReassign issues referencing this component to this component id before deleting (otherwise the references are dropped).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the deletion is irreversible, requires confirmation to proceed, and provides the return format (`YAML {status: ok}`). This adequately covers behavioral traits, though minor details like rate limits or auth are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus a one-line mirror reference. It front-loads the action and key constraints (irreversible, confirmation), with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three parameters, one required, and no output schema, the description provides essential context: deletion scope, confirmation necessity, optional reassignment, and return format. It is almost complete, though a note about references being dropped if `move_issues_to` is unset is only in schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by tying `component_id` to `jira_component_list` and explaining the effect of `move_issues_to`. It reinforces the schema descriptions with practical context, earning above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a JIRA component, identifies the source of the component ID (`jira_component_list`), and distinguishes from similar tools via the mention of optional reassignment and confirmation. It is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use the tool (requires `confirm: true` for irreversible deletion) and mentions optional reassignment. It does not explicitly list alternatives or when not to use, but the context of irreversibility and confirmation provides sufficient clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_component_listA

List a JIRA project's components. Returns YAML. Mirrors omni-dev atlassian jira component list.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject key (e.g., `PROJ`).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool returns YAML, which is useful, but it does not state that the operation is read-only (though 'List' implies it), nor does it describe pagination, output structure, or any side effects. The mention of a mirrored CLI command is obscure and not helpful without additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the key purpose, followed by output format and a reference. It uses three short sentences with no redundant information, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple tool with one parameter, but there is no output schema. The description states that the output is YAML but does not explain what the YAML contains, which could leave the agent uncertain about the response structure. It also omits error cases or prerequisites, but for a basic listing operation, the description is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the one required parameter 'project' with a clear description ('Project key (e.g., `PROJ`)'). The tool description adds no extra meaning about the parameter beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List a JIRA project's components.' This is a specific verb+resource combination that distinguishes it from sibling tools like jira_component_create, jira_component_update, and jira_component_delete, which all suggest mutating operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for listing components in a JIRA project, but it does not explicitly mention when to use it over alternatives. It lacks any exclusions or comparisons with sibling list tools (e.g., jira_board_list, jira_version_list). The reference to mirroring a CLI command does not provide tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_component_updateA

Update a JIRA component's name and/or description (by component_id from jira_component_list; supply at least one field). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira component update.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name. Omit to leave unchanged.
descriptionNoNew description. Omit to leave unchanged.
component_idYesComponent ID (from `jira_component_list`).

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description lacks behavioral details: permissions, idempotency, error handling, rate limits, or side effects. Only mentions return format (YAML {status: ok}) and CLI mirror.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences covering action, fields, source of ID, requirement, return format, and CLI equivalence. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides return format and ID source. Lacks behavioral details but sufficient for a simple update tool with clear schema. Adequate given no output schema and few parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. Description adds value by explaining 'supply at least one field' and instructing to get component_id from jira_component_list, enhancing schema meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (update), resource (JIRA component), and specific fields (name, description). Distinguishes from siblings like jira_component_create by specifying update action and requiring component_id from list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies that component_id must come from jira_component_list and that at least one field (name/description) must be supplied. Does not explicitly state when to use vs alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_createA

Create a new JIRA issue, from explicit fields or from a full JFM document (frontmatter + body, e.g. the output of jira_read). With a document, project/summary/issue_type, labels and custom fields come from the frontmatter (project is derived from key: when no project: is set) and the body becomes the description — enabling the read → edit → create round-trip. Explicit project/summary/issue_type override frontmatter and a warning is returned when they do. Without a document, custom_fields is an optional map of field name or canonical id (e.g. {"Story Points": 8} or {"Planned / Unplanned Work": "Unplanned"}) to value, resolved against the create screen and shaped for the API — use it to satisfy fields a project requires at create time (otherwise JIRA returns HTTP 400). The document/description bodies each also accept a filesystem-path form (document_path/description_path) the server reads from disk — prefer it when the body is already on disk, to avoid emitting a large body inline. Set dry_run: true first when uncertain about required fields or formatting — validates and resolves the input and returns the request that would be sent (method, path, body) without creating the issue (mirrors the CLI's omni-dev atlassian jira create --dry-run). Returns the new issue key and self URL as YAML. Creates a single issue; to create several issues at once (and optionally link them, e.g. epic decomposition) use jira_bulk_create.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoWhen true, validate and return the would-be request (method, path, body) without creating the issue. Defaults to `false`.
projectNoProject key (e.g., `PROJ`). Required unless `document` carries a `project:` (or a `key:` it can be derived from). Overrides frontmatter.
summaryNoIssue summary / title. Required unless `document` carries one. Overrides frontmatter.
documentNoFull JFM document (YAML frontmatter + markdown body), e.g. the output of `jira_read` with the frontmatter edited. When provided, `project`, `summary`, `issue_type`, labels and custom fields are taken from the frontmatter (the project derives from `key:` when no `project:` is set) and the body becomes the description — so the read → edit → create round-trip works without re-specifying fields. The `project`/`summary`/ `issue_type` parameters below still override their frontmatter counterparts (a warning is returned when they do); passing `description` or `custom_fields` together with `document` is an error (put custom fields in the document's `custom_fields:` frontmatter). See resource `omni-dev://specs/jfm`.
issue_typeNoIssue type (defaults to `Task`). Overrides frontmatter.
descriptionNoOptional description in JFM markdown — see resource `omni-dev://specs/jfm` for syntax. JFM is GitHub-style markdown, NOT JIRA wiki markup (use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`). Rejected when `document` is provided (the document body is the description).
custom_fieldsNoCustom fields to set at create time, as a map of field name *or* canonical id (e.g. `"Story Points"` or `"customfield_10016"`) to its value. Names are resolved against the project/issue-type create screen (`createmeta`), so pass the name back from a `400` "`<Field> is required`" error directly. Values are natural JSON: a string or number for scalar/number/date fields, a string for select/option fields (sent as `{"value": ...}`), an array of strings for multi-selects and labels, an issue key string for issue-link fields such as `Parent` (sent as `{"key": ...}`). Use this for fields a project requires at create time — without them JIRA rejects the create with HTTP 400. To change fields after creation use `jira_edit`.
document_pathNoFilesystem path the server reads the JFM `document` from, instead of `document`. Prefer this when the document is already on disk — it avoids re-emitting the whole document inline. Mutually exclusive with `document`.
description_pathNoFilesystem path the server reads the description from, instead of `description`. Prefer this when the description is already on disk — it avoids re-emitting a large body inline. Mutually exclusive with `description` (and, like `description`, rejected when `document`/`document_path` is given).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses override behavior with warnings, error cases (mutual exclusivity, HTTP 400 for missing required fields), the dry-run behavior ("validates and resolves the input and returns the request that would be sent"), and the return format ("Returns the new issue key and self URL as YAML").

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but densely packed with useful information. Every sentence earns its place: primary purpose first, then document workflow, explicit-field fallback, path variants, dry-run guidance, return value, and sibling pointer. No filler or redundant repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, no output schema, no annotations), the description is remarkably complete. It covers input modes, precedence rules, error conditions, required-field handling, dry-run validation, return value, and when to use alternative tools. Nothing essential is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial meaning beyond field names: it explains how `document` frontmatter maps to parameters, how `project` is derived from `key:`, the exact JSON shaping of `custom_fields` values (e.g., "a string for select/option fields (sent as `{"value": ...}`)"), and the purpose of `dry_run`. This is far above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Create a new JIRA issue, from explicit fields or from a full JFM `document`". It clearly distinguishes from siblings by stating "Creates a single issue; to create several issues at once... use `jira_bulk_create`" and notes post-create changes belong to `jira_edit`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Extensive when-to-use guidance: it explains when to use `document` vs explicit fields, when to use `document_path`/`description_path` ("prefer it when the body is already on disk"), recommends `dry_run: true` when uncertain about required fields, and names alternatives (`jira_bulk_create` for multiple issues, `jira_edit` for post-creation changes).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_deleteA

Delete a JIRA issue. DESTRUCTIVE AND IRREVERSIBLE. You must explicitly pass confirm: true for the deletion to proceed; otherwise the tool returns an error without contacting the API. Returns YAML {status: ok} on success. Mirrors omni-dev atlassian jira delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key to delete (e.g., `PROJ-123`).
confirmYesMust be set to `true` — destructive guard.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It prominently warns 'DESTRUCTIVE AND IRREVERSIBLE', explains the confirm guard behavior (returns error without API call), and specifies the success return format (YAML `{status: ok}`). This adds significant value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the critical destructiveness warning, then the confirm requirement, success payload, and CLI reference. Every sentence earns its place with zero fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter delete tool with no output schema, the description covers the essential context: destructive nature, confirmation guard, success response, and equivalent CLI command. It is complete for an agent to select and invoke safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with 100% coverage, setting a baseline of 3. The description adds behavioral meaning to the `confirm` parameter by explaining the error-if-not-true behavior, and also notes the CLI mirror. This extra context justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a JIRA issue' with a specific verb and resource, distinguishing it from sibling delete tools for comments, attachments, sprints, or versions. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear operational context by requiring an explicit `confirm: true` guard and noting that the tool will error without contacting the API. It does not explicitly name alternatives or when-not-to-use conditions, but the destructive warning plus confirmation requirement gives enough guidance for a delete operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_devA

Fetch development status for a JIRA issue by key (e.g. PROJ-123): linked pull requests, branches, and repositories as YAML. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only,' which is a crucial safety signal, and also reveals that the result is YAML-formatted and limited to linked PRs, branches, and repositories. While it omits details like error handling, this is adequate for a simple read-only fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that leads with the action and resource, then adds concrete details about content and format. It is appropriately sized, front-loaded, and every phrase contributes to understanding, with no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity—one parameter, read-only, no output schema—the description provides all essential information: what is fetched, how the issue is specified, and what format to expect. It is fully adequate for the tool's complexity and includes a safety disclosure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'key' parameter with the same example (`PROJ-123`). The description repeats this example but adds no additional meaning beyond the schema, so it remains at the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Fetch' and precisely names the resource: 'development status for a JIRA issue by key.' It further clarifies by listing the content (linked pull requests, branches, repositories) and the output format (YAML), which clearly distinguishes it from sibling tools like jira_read or jira_search that fetch general issue data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is clear from the description: call this when you need development-related information for a specific JIRA issue. It doesn't explicitly mention when not to use it, but the content itself (PRs, branches, repos) strongly implies its niche, providing clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_editA

Set arbitrary fields on an existing JIRA issue by field display name or canonical id — labels, selects, story points, dates, rich-text custom fields (e.g. Acceptance Criteria), parent, and other editable fields. Names are resolved against the issue's edit screen and values coerced to the API shape, so pass natural values: {"Labels": ["a", "b"], "Story Points": 8, "Acceptance Criteria": "- one\n- two"}. String values for rich-text fields are JFM markdown auto-converted to ADF ("" clears the field); pass a raw ADF object ({"type": "doc", ...}) to bypass conversion. Complements jira_write (description body, assignee/reporter, raw-id fields); to change workflow status use jira_transition; for hierarchy jira_link_parent remains the canonical surface. Set dry_run: true to preview the request (method, path, body) without updating. Returns {status: ok, key, updated_fields} as YAML. Mirrors the CLI's omni-dev atlassian jira write --set-field.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
fieldsYesMap of field display name or canonical id (e.g. `"Labels"`, `"labels"`, `"Story Points"`, `"customfield_10088"`) to its new value. Names are resolved against the issue's edit screen (editmeta) and values are coerced to the API shape: select/option fields take the option string (becomes `{"value": ...}`), multi-selects an array of option strings, labels a plain string array, number/date fields the bare scalar, issue-link fields (e.g. Parent) an issue key string (becomes `{"key": ...}`). Rich-text fields (e.g. Acceptance Criteria) take JFM markdown (auto-converted to ADF; the empty string `""` clears the field) or a raw ADF document object (`{"type": "doc", ...}`) which is validated and forwarded as-is.
dry_runNoWhen true, resolve and return the would-be request (method, path, body) without updating the issue. Defaults to `false`.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it explains field-name resolution against the edit screen, value coercion, JFM-to-ADF conversion, empty-string clearing, raw ADF passthrough, and the no-op dry_run behavior. It stops short of stating whether setting a field overwrites its previous value, but the overall behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: purpose, examples, coercion rules, rich-text handling, sibling differentiation, dry-run behavior, return format, and CLI mirror. It is front-loaded with the core purpose and organized so the most important facts appear first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mutation tool with no output schema, the description is remarkably complete: it states what the tool does, how values are transformed, what the response looks like, and which sibling tools to use instead. The only minor omission is explicit error-case behavior, but the provided detail is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents every parameter and coercion rule in detail. The description adds a helpful inline example and restates key resolution semantics, but it mostly duplicates what the input schema 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific, active statement: set arbitrary fields on an existing JIRA issue, and grounds it with concrete examples such as labels, story points, rich-text custom fields, and parent. It explicitly distinguishes itself from sibling tools like jira_write, jira_transition, and jira_link_parent, making selection unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description names the exact sibling alternatives and when each applies: jira_write for description/assignee/reporter/raw-id fields, jira_transition for workflow status, and jira_link_parent for hierarchy. It also documents dry_run as a preview mode, giving clear guidance on how to use the tool safely before updating.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_field_listA

List JIRA field definitions, optionally filtered by name substring. Returns YAML. Mirrors omni-dev atlassian jira field list. The schema_type is "richtext" for ADF-required custom fields (e.g. Acceptance Criteria); schema_custom, when present, holds the raw plugin URI (e.g. com.atlassian.jira.plugin.system.customfieldtypes:textarea).

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFilter to fields whose name contains this substring (case-insensitive).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses that the tool returns YAML and explains the meaning of schema_type and schema_custom fields, adding useful behavioral context. While it doesn't explicitly state read-only behavior or potential side effects, 'List' strongly implies a read-only operation, and the output format details are valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at three sentences, with the core function first. The CLI mirror reference adds context but is not strictly necessary; the schema_type explanation is valuable. Overall, it is well-structured and avoids redundancy, though the CLI mention could be considered a minor extra.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description is quite complete. It covers purpose, filtering, output format, and key field semantics. It does not mention potential pagination or large response sizes, but given the tool's simplicity, this is not a significant gap. The description is adequate for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single optional parameter 'search', including its case-insensitive substring filtering semantics. The description's mention of 'filtered by name substring' adds no new parameter information; it simply restates what the schema says. Thus, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List JIRA field definitions' with an optional name substring filter. It is specific and distinguishes from siblings like jira_field_options by focusing on field definitions rather than option values. The additional detail about returning YAML and explaining schema fields further clarifies the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on the tool's use (listing field definitions, optionally filtered by substring) and even mentions a CLI equivalent. However, it does not explicitly discuss exclusions or alternatives, such as when to use jira_field_options instead. The guidance is implied but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_field_optionsA

List allowed option values for a JIRA custom field. If context_id is omitted, the first context for the field is auto-discovered. Returns YAML. Mirrors omni-dev atlassian jira field options.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYesField ID (e.g., `customfield_10001`).
context_idNoOptional context ID. When omitted, the first context is auto-discovered.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosure. It mentions auto-discovery of the first context and that returns are in YAML format, which are useful behavioral details. However, it does not explicitly state that the operation is read-only or describe error scenarios, though 'List' implies non-mutating behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose, and includes essential behavior (auto-discovery, output format) without waffle. The CLI mirror reference adds a small amount of context without significantly bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers purpose, output format (YAML), and important context behavior. It lacks explicit permissions or error handling, but those are not essential for a straightforward read/list operation. Overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add significant meaning beyond the schema; the auto-discovery behavior is already stated in the schema for context_id. No further parameter guidance is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List allowed option values for a JIRA custom field', using a specific verb and resource. It distinguishes from sibling tools like jira_field_list (which lists fields) by focusing on option values of a single custom field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage when one needs to know the allowed values for a custom field, but does not explicitly mention alternatives or when not to use this tool. The behavior with omitted context_id is described, which aids usage, but no exclusions or alternative tool references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_label_addA

Add one or more labels to a JIRA issue incrementally (leaves the issue's other labels untouched, unlike jira_edit with a full labels array). JIRA labels cannot contain spaces. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira label add.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
labelsYesLabels to add or remove. JIRA labels cannot contain spaces.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burdens. It discloses key behaviors: it leaves other labels untouched, mentions JIRA's space constraint, and specifies the YAML return value. It doesn't cover edge cases like duplicates or error handling, but for this tool the core mutation behavior is well explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences covering purpose, key differentiation, constraints, and return value. Every word is informative, with no fluff. The structure is efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool with no output schema, the description is complete: it covers the behavior (incremental add), the constraint (no spaces), the return format, and mentions other relevant tools. The agent has enough information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both params and the 'no spaces' constraint. The description adds value by clarifying the incremental nature (leaves other labels untouched) which is not obvious from the schema alone, especially given 'Labels to add or remove' in the schema could imply either add or remove behavior. This is a beneficial addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is highly specific: it clearly states the tool adds labels incrementally to a JIRA issue, and explicitly differentiates itself from `jira_edit`, which replaces the label set. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance by contrasting with `jira_edit` (which sets the full `labels` array) and by noting it works incrementally. This tells the agent exactly when to choose this tool over alternatives, and implicitly when not to use it (when a full overwrite is intended).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_label_removeA

Remove one or more labels from a JIRA issue incrementally (leaves the issue's other labels untouched). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira label remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
labelsYesLabels to add or remove. JIRA labels cannot contain spaces.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description explains the incremental nature (leaves other labels untouched) and the return format `{status: ok}`, adding useful context beyond the action itself. However, it does not mention failure modes, permissions, or partial success behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and key invariant, and contains no unnecessary words. It also includes a helpful reference to the CLI equivalent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with two well-documented parameters and no output schema, the description provides the return format and a behavioral guarantee (other labels untouched), making it quite complete. It could mention error handling but is otherwise sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed descriptions for both key and labels. The description adds the 'one or more' clarification, but the schema already carries the full parameter semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Remove' and the resource 'labels from a JIRA issue', and specifies the incremental behavior that distinguishes it from other label operations. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for removing specific labels while preserving others is appropriate, but it does not explicitly contrast with alternative tools like jira_edit or jira_label_add. No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_project_create_metaA

Introspect which fields a JIRA issue type needs: for each field on the create screen, returns required, schema_type, allowed values (resolving option/select/cascading-select), and any default. Collapses the create→HTTP 400→jira_field_listjira_field_options recovery loop into a single pre-flight call. Returns YAML. Mirrors omni-dev atlassian jira project create-meta.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject key (e.g., `PROJ`).
issue_typeYesIssue type name (e.g., `Task`, `Bug`).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses return format (YAML) and that option/select/cascading-select values are resolved, which is useful. It does not mention error behavior, auth requirements, or that it likely makes multiple internal API calls, leaving some behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is packed into four concise sentences covering function, recovery-loop collapse, return format, and CLI parity. No fluff, but it could be more structured with bullet points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 2 parameters and no output schema, but the description explains the per-field data returned ('required, schema_type, allowed values... default'). However, it doesn't describe the overall YAML structure, error cases, or edge cases (e.g., invalid project key), making it slightly incomplete for a no-output-schema tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with clear descriptions ('Project key (e.g., PROJ)' and 'Issue type name (e.g., Task, Bug)'), and the description doesn't add extra parameter-level semantics beyond the output context. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool as introspecting JIRA issue type create-screen fields, listing specific attributes (required, schema_type, allowed values, default). This verb+resource structure distinguishes it from sibling tools like jira_field_list and jira_field_options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description positions the tool as a pre-flight call that 'collapses the create→HTTP 400→jira_field_list→jira_field_options recovery loop,' implying use before issue creation. However, it doesn't explicitly name alternatives or exclusion conditions, so guidance is implied rather than fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_project_listA

List JIRA projects. Returns YAML. Mirrors omni-dev atlassian jira project list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of projects to return. `0` means unlimited (default 50).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the output format ('Returns YAML') and gives a CLI equivalent ('Mirrors `omni-dev atlassian jira project list`'), which adds useful behavioral context beyond a bare list operation. It does not mention side effects, but for a list tool this is largely sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the core action. 'Returns YAML' and the CLI mirror reference are concise and informative, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional param, no output schema). The description states what it does and what it returns, which covers basic usage. The CLI mirror provides a reference for more detail. It could mention if archived projects are excluded or what YAML fields are included, but these are not critical for a basic list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for the sole 'limit' parameter, explaining its meaning and default. The description adds no additional parameter semantics, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List JIRA projects' with a specific verb and resource, making the tool's function immediately clear. It distinguishes itself from sibling tools like jira_board_list by explicitly naming 'projects'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's name and description—use it when you need a list of JIRA projects. However, it does not explicitly mention when to prefer this over other Jira list tools, nor does it provide alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_readA

Fetch a JIRA issue by key (e.g. PROJ-123). Returns JFM markdown (default, AI-friendly GitHub-style markdown — see resource omni-dev://specs/jfm) or the raw ADF description JSON when format = "adf". When output_file is set, the content is written to that path and the tool returns a short YAML summary (path/bytes/format) — useful for large issues. Assignee/reporter and other people fields are Atlassian account IDs — resolve them to display names with jira_user_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
formatNoOutput format — `jfm` (default) returns JFM markdown with YAML frontmatter; `adf` returns the raw ADF description payload as JSON.
output_fileNoWhen set, writes the rendered content to this path and returns a short YAML summary (path/bytes/format) instead of the inline body. Useful for large issues that would otherwise blow past the context window — the assistant can then read the file with offset/limit.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. Discloses return formats, output_file behavior, and notes that people fields are account IDs. Lacks mention of error conditions, but overall good for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with main purpose, no fluff. Each sentence adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main behavior, output_file edge case, and format explanation. Returns are described (JFM/ADF or YAML summary), but JFM details are deferred to an external spec. Missing inline structure could be a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers all parameters (100% coverage). Description adds significant context: default format, effect of output_file, and rationale for its use (avoid context blowup). Also explains ADF vs JFM.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Fetch' + resource 'JIRA issue' + identifier 'by key (e.g. PROJ-123)'. Distinguishes from sibling search and write tools. Also covers alternative output formats and file usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains when to use default JFM markdown vs ADF JSON, and when to use output_file for large issues. Provides sibling reference (jira_user_get) for resolving account IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_addB

Add one or more issues to a JIRA sprint by issue key. Returns YAML {status: ok} on success. Mirrors omni-dev atlassian jira sprint add.

ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYesSprint ID.
issue_keysYesIssue keys to add to the sprint.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear the full burden. It only states the action and return format, omitting error conditions, idempotency, permissions, or whether issues are appended or replaced. This is minimal 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loaded with the action. Every word earns its place, though it could be slightly more structured with bullet points for return behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of sibling tools like jira_sprint_update and jira_sprint_issues, the description partially covers what to expect, but lacks details such as whether issues can be added only to active sprints or the behavior with multiple issues. Without annotations, more context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already describes both parameters. The description adds no extra meaning beyond repeating 'by issue key'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add' and the resource 'issues to a JIRA sprint by issue key', which distinguishes it from sibling tools like jira_sprint_create (create sprint) and jira_sprint_issues (list issues).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the success return format and mirrors a CLI command, but does not explicitly indicate when to use this tool versus alternatives like jira_edit or jira_sprint_update. Implicit guidance is present but insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_createA

Create a new sprint on a JIRA agile board. Returns YAML for the created sprint. Mirrors omni-dev atlassian jira sprint create.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoSprint goal.
nameYesSprint name.
board_idYesOrigin board ID.
end_dateNoISO 8601 end date.
start_dateNoISO 8601 start date.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns YAML and is destructive (creates something). However, it does not detail permissions, side effects, or idempotency. With no annotations, the description carries the full burden but only partially fulfills it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences: one for purpose, one for return format and consistency with CLI. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (5 params, no output schema) and the presence of sibling sprint tools, the description covers the essential purpose and return. It could mention that jira_sprint_add is for adding issues, but is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a new sprint on a JIRA agile board' with a specific verb and resource. It also mentions the return format (YAML) and distinguishes itself from sibling tools like jira_sprint_update and jira_sprint_add.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for creating sprints but does not provide explicit guidance on when to use it versus alternatives (e.g., jira_sprint_add for adding issues). No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_deleteA

Delete a JIRA sprint (by sprint_id). Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira sprint delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`.
sprint_idYesSprint ID.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It transparently discloses that the operation is irreversible, that the tool refuses to make an API call without confirm:true, and that it returns YAML {status: ok}. This covers the most important behavioral traits, though it does not mention potential side effects on associated issues or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each contributing essential information: the action, the safety guardrail, and the return format. No redundant words or filler; it is front-loaded with the primary purpose and concise throughout.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter delete tool with full schema coverage, the description provides adequate context: what it does, how to authorize it, and what it returns. The only minor gap is not detailing the effect on issues in the deleted sprint, but this is not essential for basic invocation. Overall, the description is complete enough for an agent to select and use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for both parameters, including clear descriptions for sprint_id and confirm. The description reinforces the confirm parameter's role by explaining the refusal behavior, but it does not add semantic details beyond what the schema already contains. A baseline of 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Delete a JIRA sprint (by `sprint_id`)', which is a specific verb+resource statement that unambiguously identifies the tool's function. It also distinguishes itself from sibling tools like jira_sprint_create, jira_sprint_update, and jira_sprint_list by focusing solely on deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the confirmation requirement and irreversible nature, which is critical guidance for when and how to invoke the tool. It does not explicitly name alternative tools or provide when-not-to-use conditions, but the context around the destructive operation is strong and sufficient for most use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_issuesA

List issues in one JIRA sprint (get sprint IDs from jira_sprint_list). Accepts an optional JQL filter. Returns YAML. For every issue on a board regardless of sprint, use jira_board_issues instead. Mirrors omni-dev atlassian jira sprint issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlNoOptional JQL to further filter issues.
limitNoMaximum number of issues to return. `0` means unlimited (default 50).
sprint_idYesSprint ID.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. Discloses output format (YAML) and refers to a command-line mirror. Does not mention pagination, rate limits, or confirmation that it's read-only, but the return format is useful behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences covering purpose, usage, sibling distinction, and reference command. No fluff, front-loaded with key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description provides return format (YAML), links to related tools, explains limit behavior, and references parent command. Sufficient for agent to understand and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; all parameters have descriptions. The description repeats JQL as optional and 'limit' default, adding little beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states 'List issues in one JIRA sprint' (verb+resource+scope), mentions sprint ID source from sibling tool, and distinguishes from `jira_board_issues` for board-wide queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: get sprint IDs from `jira_sprint_list`, optional JQL filter, and alternative `jira_board_issues` for cross-sprint board queries. Lacks explicit when-not-to-use beyond that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_listA

List sprints on an agile board, optionally filtered by state (active/future/closed). Returns YAML. Mirrors omni-dev atlassian jira sprint list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sprints to return. `0` means unlimited (default 50).
stateNoFilter by state (`active`, `future`, `closed`).
board_idYesBoard ID.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool returns YAML and supports state filtering, which is useful. However, it does not mention pagination, error behavior, or authentication requirements, leaving gaps for a complete behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately states the action and key options, followed by a short reference to the mirrored CLI command. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description covers the core action, state filter, and output format. It lacks details about return structure or pagination, but given the simplicity and the absence of an output schema, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters (board_id, limit, state). The description's mention of 'optionally filtered by state' adds minimal value beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists sprints on an agile board, with an optional state filter. This specific verb+resource combination distinguishes it from sibling tools like 'jira_sprint_create' or 'jira_sprint_issues'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing sprints on a board, but does not explicitly contrast with alternatives such as 'jira_sprint_issues' or 'jira_board_list'. The mention of mirroring a CLI command provides a reference but not exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_sprint_updateA

Update sprint name, state (future/active/closed), dates, or goal. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira sprint update.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoNew goal.
nameNoNew sprint name.
stateNoNew sprint state (`future`, `active`, `closed`).
end_dateNoNew end date.
sprint_idYesSprint ID.
start_dateNoNew start date.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It discloses the return format (YAML `{status: ok}`) and mentions mirroring a CLI command, which adds context. However, it lacks details on side effects (e.g., state transitions, irreversibility), authorization needs, or error handling, which would be expected for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences covering purpose, parameters, return value, and a reference. No redundant information or filler. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description is minimal. It explains what the tool does and what it returns, but misses important context such as prerequisites (e.g., sprint must exist), potential errors, or guidance on when to use this tool over siblings. For a simple update tool, it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description lists the updatable fields (name, state, dates, goal) and gives example state values, but this largely repeats information already in the schema. It adds no deeper semantic meaning (e.g., date format, state transition constraints).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'sprint', and lists the specific fields (name, state, dates, goal) that can be updated. This distinguishes it from sibling tools like jira_sprint_create (create new) or jira_sprint_add (add issues to sprint).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for modifying existing sprints by listing updatable attributes. While it doesn't explicitly state when to use it over alternatives or prerequisites (e.g., sprint must exist), the clear purpose and context from the name make it reasonably clear. A more explicit usage hint would improve this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_transitionA

Transition a JIRA issue to a new workflow status. Most common usage: pass the transition name in transition, e.g. transition: "In Progress". The numeric id also works, e.g. transition: "31". Names are matched case-insensitively. If unsure which transitions are valid from the issue's current status, call this tool first with list = true (or omit transition) to get the available {id, name} pairs as YAML, then call again with one of those names. For transitions whose screen requires input, pass resolution (e.g. "Fixed") and/or custom_fields (a name→value map). Optionally pass comment (JFM markdown): it rides in the transition when the screen accepts a comment (satisfying a mandatory-comment screen), otherwise it is posted separately after the transition succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
listNoIf true, returns the available transitions without applying one.
commentNoOptional comment (JFM markdown). Delivered in the transition itself when the transition screen accepts a comment (atomic, satisfies a mandatory-comment screen); otherwise posted as a separate comment after the transition succeeds.
resolutionNoOptional resolution to set on the transition, e.g. `"Fixed"`. Sent as `{"name": ...}`; the transition screen must accept a resolution.
transitionNoTransition name (case-insensitive) or numeric id, e.g. `"In Progress"` or `"31"`. Required unless `list` is true.
custom_fieldsNoOptional transition-screen fields, as a map of field name (or canonical id) → value. Values are coerced to the API shape the same way `jira_write`'s `fields` are (select/option → option string, arrays a string array, number/date the bare scalar). Names resolve against the transition's screen fields.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full disclosure. It reveals case-insensitive matching, numeric id support, side-effect-free list mode, resolution wire format ({'name': ...}), comment atomicity vs separate posting, and custom_fields coercion semantics—far beyond typical descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Seven dense sentences, each delivering a distinct fact without filler. Examples are inline and scannable, and the structure flows from main usage to discovery to edge cases. No redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers virtually all operational aspects: valid transition discovery, argument forms, required screen fields, comment handling, and list mode. It is sufficient for correct invocation in nearly all scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds significant semantic value: transition matching rules, list mode behavior, resolution format, and custom_fields coercion aligned with jira_write. These details are not present in the schema property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource+scope: 'Transition a JIRA issue to a new workflow status.' It further specifies the main transition argument, numeric-id support, and a list mode, making the tool's purpose unmistakable even without comparing to siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage instructions: pass transition name/id, use list=true to discover valid transitions first, pass resolution/custom_fields for screen-required input, and mentions comment behavior. It gives clear context but does not name the sibling jira_transition_list as an alternative for listing, so no explicit exclusion is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_transition_listA

List the workflow transitions available from a JIRA issue's current status. Returns YAML with {id, name, to_status, has_screen} for each transition. Faster and lighter than jira_read when you only need the transition ids and names to feed into jira_transition. Equivalent to jira_transition with list = true, but exposed as a single-purpose tool for discoverability.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses output format (YAML with specific fields) and that it is a read-only list operation. While no annotations exist, the description adequately conveys behavior without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no redundancy, front-loads the core purpose. All information is relevant and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, full schema coverage, no output schema, the description fully explains the output and relationships to sibling tools. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'key'. The description does not add parameter-specific details beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists workflow transitions from a JIRA issue's current status. It differentiates from siblings by noting it's faster/lighter than jira_read and equivalent to jira_transition with list=true.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this tool over jira_read when only transition ids/names are needed, and that the output feeds into jira_transition. Also mentions equivalence to jira_transition with list=true.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_user_getA

Resolve one or more Atlassian account_ids (as emitted by author fields in jira_comment, jira_read, jira_changelog, etc.) to user records — the reverse of jira_user_search. Returns YAML with one entry per requested ID: account_id, display_name, email_address (often redacted by GDPR), active, and account_type. Pass every distinct author ID from a batch in one call. Unknown, anonymised, or permission-denied IDs come back as a stub record with an error field (the batch never fails); deactivated accounts resolve normally with active: false. Mirrors omni-dev atlassian jira user get.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idsYesOne or more Atlassian account IDs to resolve (e.g. `557058:00ce7e71-9edc-47da-a0c6-f796533ae2cd`).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It discloses the YAML return format, GDPR-related email redaction, stub records with an `error` field for unknown/anonymised/permission-denied IDs, the fact that the batch never fails, and that deactivated accounts resolve normally with `active: false`. This covers edge cases and error handling unusually well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured and front-loaded with the core action. Every sentence contributes unique value: purpose, output format, batching, error behavior, and command mirror. No words are wasted, and the sequence flows logically from what to how.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description is remarkably complete. It explains the return fields, error handling, GDPR redaction, and batch behavior, covering all likely agent needs without requiring the output schema. It also ties to sibling tools and the underlying `omni-dev` command for additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes `account_ids` with an example. The description adds the batching guidance ('Pass every distinct author ID from a batch in one call'), which is more of a usage note than a semantic clarification. No additional meaning beyond the schema is needed, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'Resolve one or more Atlassian account_ids to user records', clearly identifying both the resource and the operation. It explicitly contrasts with the sibling `jira_user_search` by positioning itself as 'the reverse', making the tool's role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it is for resolving known account IDs to user records, and it advises batching every distinct author ID into one call. It notes the reverse relationship with `jira_user_search`, implying when each is appropriate, though it doesn't explicitly state an exclusion scenario (e.g., 'use `jira_user_search` if you need to search by name').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_archiveB

Archive a JIRA project version (by version_id from jira_version_list). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira version archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYesVersion ID (from `jira_version_list`).

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the return format (YAML `{status: ok}`) but does not disclose side effects, irreversibility, permissions required, or what archiving actually changes in JIRA. The mirrored CLI command adds context but not behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: purpose, return format, and CLI mirror. It is appropriately sized and front-loaded, with no redundant verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description explains the return format and input source. However, it lacks behavioral context about what archiving entails (e.g., whether it is reversible, what status it sets), which leaves the description slightly incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and the description reinforces the schema by noting the ID comes from `jira_version_list`. No additional semantics are provided beyond the schema, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Archive') and the resource ('JIRA project version'), and it specifies the input source (`version_id` from `jira_version_list`). This unambiguously distinguishes it from sibling tools like `jira_version_release` or `jira_version_delete`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives (e.g., release, rename, delete). The only hint is the reference to `jira_version_list` for obtaining the ID, but no context is provided for choosing archive over other version operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_createA

Create a new version in a JIRA project. Dates must be YYYY-MM-DD and are validated client-side. Returns YAML for the created version. Mirrors omni-dev atlassian jira version create.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVersion name (e.g., `1.0.0`).
projectYesProject key (e.g., `PROJ`).
archivedNoWhether the version is archived. Defaults to `false`.
releasedNoWhether the version is released. Defaults to `false`.
start_dateNoStart date (ISO 8601, `YYYY-MM-DD`). Validated client-side.
descriptionNoVersion description.
release_dateNoRelease date (ISO 8601, `YYYY-MM-DD`). Validated client-side.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavior. It mentions creation, date validation client-side, and YAML output, but lacks permission requirements, error behavior, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no wasted words. Front-loaded with core action, then specifics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple create tool, but misses potential prerequisites (e.g., project permissions) and error scenarios. Output format is stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 7 parameters with descriptions (100% coverage). Description adds value by noting client-side validation and YAML return format, which are not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new version in a JIRA project.' with specific verb and resource. Differentiates from sibling list tool. Includes date format details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like jira_version_list or other create tools. No prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_deleteA

Delete a JIRA project version (by version_id from jira_version_list). Optionally reassign affected issues first via move_fix_issues_to / move_affected_issues_to (target version ids). Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira version delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`.
version_idYesVersion ID (from `jira_version_list`).
move_fix_issues_toNoReassign the `fixVersion` of affected issues to this version id before deleting (otherwise the references are dropped).
move_affected_issues_toNoReassign the `affectedVersion` of affected issues to this version id.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses irreversibility, the confirmation safety mechanism, and the return format. It also explains that without reassignment, references are dropped. This is transparent and sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences covering all key aspects: purpose, optional reassignment, irreversibility/confirmation, return type, and mirror command. No unnecessary words; front-loaded with main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description states the return format. It explains the confirmation guard, source of version_id, and what happens to references without reassignment. This provides enough context for an agent to use the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds behavioral context: explains the confirm parameter's effect, specifies that version_id comes from jira_version_list, and clarifies that move parameters reassign issues. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a JIRA project version' and provides the source for version_id (`jira_version_list`). This distinguishes it from sister tools like jira_version_archive, jira_version_release, etc., which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear instructions: the tool is irreversible and requires `confirm: true` to execute; without it, no API call is made. It also mentions where to obtain the version_id. However, it does not explicitly compare to alternatives like archiving instead of deleting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_listA

List versions for a JIRA project, optionally filtered by released and archived flags. Returns YAML. Mirrors omni-dev atlassian jira version list.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject key (e.g., `PROJ`).
archivedNoFilter to only archived (`true`) or only non-archived (`false`) versions. Omit for both.
releasedNoFilter to only released (`true`) or only unreleased (`false`) versions. Omit for both.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It states the tool lists versions and returns YAML but omits details about pagination, error handling, or what happens if the project key is invalid. The description is adequate for a simple list tool 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the purpose and then adding optional behavior and output format. Every phrase earns its place; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (list with optional filters), high schema coverage, and no output schema, the description is mostly complete. It specifies output format (YAML) and filters. Minor omission: no mention of sorting or limits, but acceptable for this type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description mentions the filter flags but does not add semantic meaning beyond what the schema already provides. The schema describes each parameter clearly, so the description adds no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists versions for a JIRA project, specifies optional filters (`released` and `archived`), and indicates the output format (YAML). It also references a sibling CLI command, which uniquely identifies the tool's functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like `jira_version_create` or other JIRA listing tools. The description mentions it mirrors a CLI command but does not provide context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_releaseA

Mark a JIRA project version as released (by version_id from jira_version_list). Optional release_date (YYYY-MM-DD, validated client-side). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira version release.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYesVersion ID (from `jira_version_list`).
release_dateNoRelease date (ISO 8601, `YYYY-MM-DD`). Validated client-side.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the return format ('Returns YAML {status: ok}') and client-side validation for release_date. It implies a state-changing operation ('mark as released') but does not mention permissions, idempotency, or irreversible side effects. The CLI mirror gives a hint but doesn't expand on behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the primary purpose. Every sentence provides distinct value: function, parameter detail, return format, and CLI mirror. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters and no output schema, the description covers purpose, parameter usage, return value, and a CLI equivalent. It lacks explicit error handling or side-effect details, but given the low complexity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters. The description repeats the version_id source and release_date format, essentially echoing the schema. It does not add new semantic meaning beyond clarifying that version_id comes from jira_version_list, which the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Mark a JIRA project version as released.' It specifies the required input (version_id from jira_version_list) and distinguishes it from sibling tools like jira_version_rename, jira_version_archive, and jira_version_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: you need a version_id from jira_version_list, and release_date is optional. However, it does not explicitly mention when not to use this tool or list alternatives. The CLI mirror reference ('omni-dev atlassian jira version release') offers some orientation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_version_renameA

Rename a JIRA project version (by version_id from jira_version_list), optionally updating its description. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira version rename.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew version name.
version_idYesVersion ID (from `jira_version_list`).
descriptionNoNew description (optional).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. Discloses return format (YAML `{status: ok}`) and optional description update, but lacks details on permissions, side effects, or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences plus a concise reference line. No extraneous words, front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool (3 params, no output schema, no annotations), description covers core functionality well. Mentions input source, optional update, return format. Lacks error handling but is sufficient for expected use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by explaining `version_id` source (`jira_version_list`) and clarifying `description` as optional, going beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Rename a JIRA project version' with specific resource and action. Distinguishes from siblings by referencing `jira_version_list` for the required ID, setting it apart from create/delete/archive/release.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implicit guidance by referencing `jira_version_list` for input, but no explicit when-to-use, when-not-to-use, or alternatives. The mirror statement adds little for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_watcher_addA

Add a user (by Atlassian accountId, not a name or email — resolve one with jira_user_search) as a watcher on a JIRA issue. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira watcher add.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
account_idYesAtlassian `accountId` of the user (not a display name or email). Use `jira_user_search` to resolve a name or email to an `accountId`.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the function, required parameters, and return format (YAML `{status: ok}`). However, it does not mention side effects (e.g., notifications), error handling, or idempotency. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. Purpose, critical instruction, and return format are front-loaded. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers purpose, parameters, return format, and a usage hint. For a simple two-parameter tool, this is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description adds value by emphasizing that accountId must be resolved via jira_user_search, reinforcing schema details and preventing misuse.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action: 'Add a user as a watcher on a JIRA issue.' It clearly distinguishes from sibling tools like jira_watcher_remove and jira_watcher_list by specifying the operation and the required identifier type (accountId).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use (to add a watcher) and provides a critical prerequisite: resolve a name or email to an accountId using jira_user_search. It also mentions the CLI equivalent, giving additional context. However, it does not explicitly exclude cases like avoiding duplicate adds.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_watcher_listA

List watchers on a JIRA issue. Returns YAML with watch_count and an array of watcher accounts. Mirrors omni-dev atlassian jira watcher list.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description must disclose behavioral traits. It mentions the return format (YAML) and reveals it is a CLI mirror, which adds some transparency. However, it does not state that it is a read-only operation, required permissions, or potential side effects, leaving gaps for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences that front-load the action and immediately provide the return structure. Every sentence is informative and without filler, earning a high score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is adequate. It explains what the tool does and what it returns. It could mention that it is read-only or that the issue must exist, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with a clear description for the single parameter 'key'. The tool description does not add additional meaning beyond the schema, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'watchers', and the scope 'on a JIRA issue'. It also specifies the return format (YAML with watch_count and watcher accounts), and the name distinguishes it from sibling tools like jira_watcher_add and jira_watcher_remove.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or how it compares to other JIRA watcher tools. The purpose is clear, but usage context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_watcher_removeA

Remove a user (by Atlassian accountId, not a name or email — resolve one with jira_user_search) from the watchers of a JIRA issue. Destructive operation: callers must explicitly pass confirm: true for the removal to proceed; otherwise the tool refuses with an error. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira watcher remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
confirmYesMust be set to `true` — destructive guard.
account_idYesAtlassian `accountId` of the user (not a display name or email). Use `jira_user_search` to resolve a name or email to an `accountId`.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully discloses destructive nature, the confirm guard, and return format. Lacks detail on permissions or side effects, but adequate for safe usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with purpose and critical warnings. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, parameters, return value, and destructive guard. References sibling tool for prerequisite. Lacks mention of potential errors beyond the confirm guard, but sufficient for a removal tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by clarifying accountId format (not name/email) and confirm role as destructive guard, and suggests jira_user_search for resolution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb and resource: 'Remove a user from the watchers of a JIRA issue.' Specifies required parameter (accountId) and distinguishes from siblings like jira_watcher_add and jira_watcher_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use (removing a user from watchers), requirement for confirm guard, and how to resolve accountId via jira_user_search. Could be more explicit about 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.

jira_worklog_addB

Log time on a JIRA issue. time_spent accepts JIRA's duration format (e.g., 1h 30m, 2d). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira worklog add.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
commentNoOptional plain-text comment.
startedNoISO 8601 timestamp when the work started.
time_spentYesTime spent (e.g., `1h 30m`, `2d`).

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only discloses the return format (YAML {status: ok}) but not side effects, permissions, or error handling. Minimal behavioral insight beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding unique value: core purpose, format detail, return type and alias. Front-loaded with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for basic usage, but missing broader context like error handling, optional parameter usage hints (comment, started), and consequences of logging time. Schema covers started description, but description could elaborate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds value for time_spent by specifying JIRA's duration format, which is not in the schema description. Other parameters have adequate schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Log time on a JIRA issue', specifying the verb and resource. It provides format and return info, but does not explicitly differentiate from sibling tools like jira_worklog_list or jira_dev.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives, no prerequisites or exclusions. The mirror reference is not helpful for usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_worklog_deleteA

Delete a JIRA worklog (by key + worklog_id; get the id from jira_worklog_list). Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira worklog delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
confirmNoMust be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`.
worklog_idYesWorklog ID to delete (from `jira_worklog_list`).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden. It discloses irreversibility, the safety-gate refusal behavior ('without it the tool refuses and makes no API call'), and the return format ('Returns YAML `{status: ok}`'). This is exemplary transparency for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences: first states the action and parameters, second covers the critical safety behavior, third states the return format and CLI mirror. Every sentence carries essential information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive delete tool with no output schema, this description is complete: it covers purpose, required identifiers, prerequisite source of the ID, irreversible confirmation, refusal behavior, return value, and a CLI equivalent. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra semantic value by telling where to find worklog_id ('from `jira_worklog_list`') and by explaining that `confirm: true` is required and that false causes refusal without an API call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Delete a JIRA worklog (by `key` + `worklog_id`)'. This clearly distinguishes it from sibling tools like jira_worklog_add, jira_worklog_update, and jira_worklog_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs the agent to obtain the worklog id from `jira_worklog_list` and explains the confirmation requirement ('pass `confirm: true` to authorise'). This gives clear when/how guidance and names the associated sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_worklog_listA

List worklog entries on a JIRA issue. Returns YAML. Mirrors omni-dev atlassian jira worklog list.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
limitNoMaximum number of worklogs to return. `0` means unlimited (default 50).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the output format (YAML) and references a CLI command, which adds some value, but it does not explicitly state that this is a read-only operation or detail any other behavioral constraints beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences that immediately convey the action and an important output detail. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but with no output schema, the description only vaguely mentions 'Returns YAML' without specifying the structure of the returned worklogs or any ordering/pagination behavior. This leaves some gaps for an agent unfamiliar with the underlying CLI.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond what the schema already provides for 'key' and 'limit', so it earns the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides a specific verb ('List') and resource ('worklog entries on a JIRA issue'), clearly distinguishing it from sibling worklog mutation tools like jira_worklog_add, jira_worklog_delete, and jira_worklog_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this tool is for retrieving worklogs for an issue, providing context for when to use it. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_worklog_updateA

Edit an existing JIRA worklog (by key + worklog_id; get the id from jira_worklog_list). Supply at least one of time_spent (JIRA duration, e.g. 1h 30m), started (ISO 8601), or comment; omitted fields keep their current value. Returns YAML {status: ok}. Mirrors omni-dev atlassian jira worklog edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
commentNoNew plain-text comment. Omit to leave unchanged.
startedNoNew ISO 8601 start timestamp. Omit to leave unchanged.
time_spentNoNew time spent (e.g., `1h 30m`, `2d`). Omit to leave unchanged.
worklog_idYesWorklog ID to update (from `jira_worklog_list`).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals key behaviors: partial updates ('omitted fields keep their current value'), the need for at least one field, and the return format ('YAML {status: ok}'). It does not cover permissions or error cases, but adds substantial value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no redundancy. It front-loads the purpose, includes necessary parameters, and provides return info and a reference command. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a mutation with 5 parameters, but the description covers purpose, identifiers, editable fields, partial-update behavior, and return format. The lack of an output schema is compensated by stating the return YAML. It could mention error conditions or permissions, but for an edit tool with strong schema coverage, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds critical meaning by explaining the 'at least one' requirement among time_spent, started, and comment, and by providing format examples (e.g., '1h 30m' for durations and ISO 8601 for started). This goes beyond the schema's per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Edit an existing JIRA worklog' with specific identifiers (key + worklog_id). It distinguishes itself from sibling tools like jira_worklog_add and jira_worklog_delete by focusing on editing existing entries and referencing jira_worklog_list as the source for the ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context by specifying the prerequisite ('get the id from jira_worklog_list') and the requirement to supply at least one editable field. It implies this tool is for modifications, not additions or deletions, but does not explicitly exclude alternatives or mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_writeA

Update a JIRA issue by key (e.g. PROJ-123). content updates the description (JFM markdown by default, or raw ADF JSON when format = "adf"); omit it to leave the description unchanged. Supply the description as content (inline) OR content_path (a filesystem path the server reads) — not both; prefer the path form when the body is already on disk. JFM is GitHub-style markdown — see resource omni-dev://specs/jfm for syntax. To set the parent for hierarchy (Epic → Story, Story → Sub-task) use the jira_link_parent tool — the canonical hierarchy surface. assignee/reporter accept an accountId (use the empty string "" to clear, "-1" for JIRA automatic assignment); call jira_user_search first if you only have a name or email. fields is an escape hatch — a map of canonical JIRA field id to its API JSON value (e.g. {"priority": {"name": "High"}}) — for fields without a typed parameter. String values targeting rich-text custom fields (e.g. Acceptance Criteria) are auto-converted from JFM to ADF; pass the empty string "" to clear such a field. Pass a JSON object value to bypass conversion (raw ADF). To set fields by display name with automatic value coercion, prefer the jira_edit tool. At least one of content, assignee, reporter, or fields must be supplied. Set dry_run: true first when uncertain about required fields or formatting — validates the input and returns the request that would be sent (method, path, body) without updating the issue. Mirrors the CLI's omni-dev atlassian jira write --dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesJIRA issue key (e.g., `PROJ-123`).
fieldsNoAdditional `fields` keys merged into the issue update payload. Keys must already be canonical JIRA field ids (e.g. `priority`, `labels`, `customfield_10010`). Values must already be in the API's JSON shape (e.g. `{"name": "High"}` for priority, `["a", "b"]` for labels) — with one ergonomic exception: a string value targeting a rich-text textarea custom field (e.g. `{"customfield_10088": "- bullet\n- bullet"}`) is auto-converted from JFM markdown to ADF, and the empty string `""` clears such a field. Pass a JSON object instead of a string to bypass conversion (raw ADF). Setting `assignee` or `reporter` here collides with the typed parameters and is rejected — pass the typed parameter instead.
formatNoContent format — `jfm` (default) parses Markdown/JFM; `adf` accepts a raw ADF JSON document.
contentNoNew description body. Interpreted per `format`. Omit to leave the existing description unchanged (useful when only updating `assignee`/`reporter`/`fields`). For `format = "jfm"` (the default), this is GitHub-style markdown, NOT JIRA wiki markup. Use `##` not `h2.`, triple-backtick fences not `{code}`, backtick inline code not `{{...}}`. Full reference: MCP resource `omni-dev://specs/jfm`.
dry_runNoWhen true, validate and return the would-be request (method, path, body) without updating the issue. Defaults to `false`.
assigneeNoAssignee `accountId`. The empty string `""` clears the assignee; `"-1"` triggers JIRA automatic assignment. Use `jira_user_search` to resolve a name or email to an `accountId`.
reporterNoReporter `accountId`. Same conventions as `assignee` (`""` clears, `"-1"` is JIRA automatic).
content_pathNoFilesystem path the server reads the description body from, instead of `content`. Prefer this when the body is already on disk — it avoids re-emitting a large body inline. Mutually exclusive with `content`.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden — and it delivers extensively. It discloses dry-run semantics ('validates the input and returns the request that would be sent (method, path, body) without updating the issue'), partial-update behavior ('omit it to leave the description unchanged'), mutually exclusive content/content_path, auto-conversion of strings to ADF for rich-text custom fields, clearing conventions (`''` clears, `-1` automatic), and the fields/typed-parameter collision rejection. No behavioral trait that an agent needs to call correctly is left undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place for an 8-parameter mutation tool with numerous edge cases (conversion, clearing, collisions, mutual exclusivity, dry-run). The core purpose is front-loaded in the first sentence, and the flow is logical: primary parameter semantics, path-vs-inline choice, format reference, sibling routing, escape hatch, precondition, safety mechanism. It reads as dense and complete, not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex write tool with zero annotations and no output schema, this description is complete: it covers purpose, all parameter behaviors, cross-parameter constraints, the minimum-field requirement, alternative-tool routing, a resource link for JFM syntax, and a dry-run validation path for uncertainty. The only absent items (permissions, rate limits, success return shape) are minor given no output schema exists and the dry-run return is already disclosed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so individual parameters are fully documented in the schema and the baseline is 3. The description adds real value beyond the schema by expressing cross-parameter semantics that the schema cannot: the content/content_path mutual exclusivity rule, the at-least-one-of-four precondition, and a concrete escape-hatch example (`{"priority": {"name": "High"}}`). It slightly re-states some per-parameter details (assignee/reporter conventions, format behavior), but the integration is worth the redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Update a JIRA issue by key (e.g. `PROJ-123`).' It is explicitly differentiated from siblings: jira_edit ('To set fields by display name with automatic value coercion, prefer the `jira_edit` tool'), jira_link_parent ('use the `jira_link_parent` tool — the canonical hierarchy surface'), and jira_user_search ('call `jira_user_search` first if you only have a name or email'). An agent can tell exactly what this tool does and what it does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance, including exclusions: prefer content_path over content 'when the body is already on disk', route hierarchy setting to jira_link_parent, route display-name/coercion field setting to jira_edit, and resolve names/emails via jira_user_search before calling. Also states the hard precondition ('At least one of `content`, `assignee`, `reporter`, or `fields` must be supplied') and the safety workflow ('Set `dry_run: true` first when uncertain'). This is textbook usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snowflake_disconnectA

Disconnect (evict) one multiplexed Snowflake session identified by its account and user. Mirrors omni-dev snowflake disconnect. Returns whether a session was actually evicted. Requires a running daemon.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser of the session to evict.
socketNoControl-socket path override. Defaults to the per-user runtime location.
accountYesAccount of the session to evict.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It adds useful behavioral details: the tool returns whether a session was actually evicted, and it requires a running daemon. The term 'evict' also discloses the destructive nature of the operation. This goes beyond simply restating 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is composed of four short, information-dense sentences: action and target, CLI mirror, return value, and prerequisite. Every sentence adds unique value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple disconnect tool with no output schema and only three parameters, the description is complete: it explains the purpose, the required identifiers, the return value, and a key prerequisite. It also distinguishes itself from sibling Snowflake tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions in the schema are already clear (e.g., 'User of the session to evict', 'Control-socket path override'). The description adds only minor reinforcement by stating the session is identified by `account` and `user`, but does not provide additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Disconnect (evict)') and the specific resource ('one multiplexed Snowflake session identified by its `account` and `user`'). It differentiates from sibling tools like snowflake_sessions by specifying the eviction action and the required identifying fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: to disconnect a specific session using account and user. It also gives a prerequisite ('Requires a running daemon') and references the CLI command (`omni-dev snowflake disconnect`), but does not explicitly mention alternatives or when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snowflake_queryA

Run SQL against Snowflake and return the result set(s) as YAML. Mirrors omni-dev snowflake query. Multi-statement scripts (;-separated) are supported: the reply is a statements array with one {columns, rows} result set per statement. The query runs through the omni-dev daemon, which multiplexes authenticated (account, user) sessions — so the daemon must be running (omni-dev daemon start). First-time use of an (account, user) authenticates via external-browser SSO on the daemon host (a browser may open there). account/user default to SNOWFLAKE_ACCOUNT/SNOWFLAKE_USER (and settings.json) when omitted; warehouse/role/database/schema are optional per-query context.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL to execute. Required.
roleNoPer-query role (`USE ROLE`).
userNoAuthenticating user. Falls back to `SNOWFLAKE_USER` / settings.json.
schemaNoPer-query schema (`USE SCHEMA`).
socketNoControl-socket path override. Defaults to the per-user runtime location.
accountNoTarget account. Falls back to `SNOWFLAKE_ACCOUNT` / settings.json.
databaseNoPer-query database (`USE DATABASE`).
warehouseNoPer-query warehouse (`USE WAREHOUSE`).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well: it warns about the daemon requirement, potential browser opening for SSO, and the YAML result format with a `statements` array. It also clarifies defaults for account/user and optional per-query context, which are important behavioral details beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient: it front-loads the core action and output, then explains multi-statement behavior, daemon requirements, auth, and parameter defaults. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, a required sql, and no output schema, this description covers the return format, prerequisites, authentication side effects, and default resolution. Minor gaps like error handling or timeouts are not addressed, but overall it is a complete operational description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters, so the baseline is 3. The description adds value by explaining fallback logic for account/user and that warehouse/role/database/schema are per-query optional context, which is not fully captured by the schema descriptions alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource and output format ('Run SQL against Snowflake and return the result set(s) as YAML'), and clarifies multi-statement support with the `statements` array structure. It distinguishes itself from siblings like snowflake_sessions and snowflake_disconnect by its focus on executing queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear operational context: it must be run through the omni-dev daemon (`omni-dev daemon start`), explains first-time SSO auth, and notes default account/user fallbacks. It doesn't explicitly name sibling alternatives, but the tool's role in the Snowflake toolset is clear from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snowflake_sessionsA

List the omni-dev daemon's active multiplexed Snowflake sessions as YAML (per-pool account/user, live/max sessions, query counts). Read-only. Mirrors omni-dev snowflake sessions. Requires a running daemon.

ParametersJSON Schema
NameRequiredDescriptionDefault
socketNoControl-socket path override. Defaults to the per-user runtime location.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool is read-only and requires a running daemon, but does not mention error behaviors, rate limits, or what happens if the daemon is not running. This is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a few short sentences to convey purpose, output format, read-only nature, command alias, and prerequisite. Every sentence is necessary and no words are wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 optional parameter, no output schema, no annotations), the description covers the essential aspects: what it does, output format, read-only attribute, and the daemon requirement. It is largely complete, though it could mention handling of empty results or errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single parameter 'socket' with a description, achieving 100% coverage. The description does not add additional parameter information beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists active multiplexed Snowflake sessions, specifies the output format (YAML) and content (per-pool account/user, live/max sessions, query counts), and distinguishes it from siblings like snowflake_query or snowflake_disconnect by noting it is read-only and mirrors a specific command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating it lists sessions and requires a running daemon, but it does not explicitly say when to use vs alternatives or when not to use it. However, the context is clear enough given sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcript_youtube_fetchA

Fetch the transcript for a YouTube video and return it rendered as text. Read-only. Mirrors omni-dev transcript youtube fetch. format is txt (default, one cue per line), srt, vtt, or json. lang defaults to en (prefix fallback: en matches en-US). Set auto = true to allow auto-generated (ASR) captions when no manual track matches; set translate to request a machine-translated track in that language.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or bare 11-character video ID.
autoNoAllow falling through to auto-generated (ASR) captions when no manual track matches. Defaults to `false`.
langNoPreferred caption language (e.g. `en`, `en-US`). Prefix fallback applies (`en` matches `en-US`). Defaults to `en`.en
formatNoOutput rendering. Defaults to `txt`.
translateNoSynthesise a translated track in this target language when no native track matches.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and details fallback behavior (lang prefix matching, auto-generated ASR fallback, translation), which goes beyond a basic fetch. It does not cover failure modes or quotas, but the provided behavioral traits are meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, starting with the core purpose, then enumerating parameter behaviors in a compact, scannable format. Every sentence contributes meaning, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explains the return format (rendered as text, with specific format options including JSON structure). It covers all key parameters and their interactions (auto, translate, lang, format), making it sufficiently complete for an agent to invoke the tool correctly. It could mention error cases (e.g., no transcript found) but this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds a concise summary of format options and default behavior, but it largely restates the schema's parameter descriptions (e.g., prefix fallback, auto default) without adding new semantic depth beyond what is already present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a YouTube video transcript and renders it as text, naming the exact resource (YouTube video) and action (fetch). It also references the mirrored command, and the sibling tools (transcript_youtube_info, transcript_youtube_list_langs) are distinct in purpose, so there is no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains configuration options like auto and translate, indicating when to use them. However, it does not explicitly contrast with sibling tools (e.g., 'use transcript_youtube_info for metadata' or 'use list_langs to find available languages'), so usage guidance is implied rather than stated as a direct alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcript_youtube_infoA

Fetch top-level metadata about a YouTube video (title, author, duration, available caption tracks) as YAML. Read-only. Mirrors omni-dev transcript youtube info.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or bare 11-character video ID.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. States 'Read-only' and output as YAML, but lacks details on error handling, rate limits, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, read-only status, and CLI reference. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple metadata fetch with one parameter and no output schema, description covers purpose, output format, and read-only nature. Adequate but could mention behavior on invalid URLs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one param 'url' with full coverage. Description adds no extra semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it fetches top-level metadata (title, author, duration, caption tracks) as YAML, distinguishing it from sibling tools that fetch transcript or list languages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies 'Read-only' and mirrors a CLI command, implying use for metadata retrieval. No explicit when-not, but context from siblings provides differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcript_youtube_list_langsA

List the caption tracks available on a YouTube video (code, name, and whether each is manual, auto-generated, or translated) as YAML. Read-only. Mirrors omni-dev transcript youtube list-langs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL or bare 11-character video ID.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly states 'Read-only', which is the key behavioral trait for a listing operation. It also reveals the output format (YAML) and that it mirrors a known command, providing additional context beyond the schema. Minor gaps remain about error handling or network behavior, but for this simple tool it's sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action, and contains zero filler. Every phrase adds value: the resource, the fields returned, the output format, the read-only nature, and the CLI mirror. It is both concise and information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers the essentials: what it lists, what is included, the format, and safety. The sibling context (other transcript tools) is not referenced, but the tool's scope is so clearly defined that this omission is minor. The description is fully adequate for an agent to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the only parameter 'url' with the note 'YouTube video URL or bare 11-character video ID.' The description does not add new parameter-level details, so the baseline score of 3 applies because the schema provides complete coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List the caption tracks available on a YouTube video'. It enumerates exactly what fields are returned (code, name, manual/auto/translated) and the output format (YAML). This unambiguously distinguishes it from sibling transcript tools like transcript_youtube_fetch and transcript_youtube_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: to enumerate available caption tracks for a YouTube video. It doesn't explicitly name alternatives or state when not to use this tool, but the specific scope (listing vs fetching) gives enough contextual guidance. The mention of being read-only further sets expectations.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv0.43.0
    • Changedjira_edit1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Map of field display name or canonical id (e.g. `\"Labels\"`, `\"labels\"`,\n`\"Story Points\"`, `\"customfield_19300\"`) to its new value. Names are\nresolved against the issue's edit screen (editmeta) and values are\ncoerced to the API shape: select/option fields take the option string\n(becomes `{\"value\": ...}`), multi-selects an array of option strings,\nlabels a plain string array, number/date fields the bare scalar,\nissue-link fields (e.g. Parent) an issue key string (becomes\n`{\"key\": ...}`). Rich-text fields (e.g. Acceptance Criteria) take JFM\nmarkdown (auto-converted to ADF; the empty string `\"\"` clears the\nfield) or a raw ADF document object (`{\"type\": \"doc\", ...}`) which is\nvalidated and forwarded as-is."New value: +"Map of field display name or canonical id (e.g. `\"Labels\"`, `\"labels\"`,\n`\"Story Points\"`, `\"customfield_10088\"`) to its new value. Names are\nresolved against the issue's edit screen (editmeta) and values are\ncoerced to the API shape: select/option fields take the option string\n(becomes `{\"value\": ...}`), multi-selects an array of option strings,\nlabels a plain string array, number/date fields the bare scalar,\nissue-link fields (e.g. Parent) an issue key string (becomes\n`{\"key\": ...}`). Rich-text fields (e.g. Acceptance Criteria) take JFM\nmarkdown (auto-converted to ADF; the empty string `\"\"` clears the\nfield) or a raw ADF document object (`{\"type\": \"doc\", ...}`) which is\nvalidated and forwarded as-is."
    • Changedjira_write1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Additional `fields` keys merged into the issue update payload.\nKeys must already be canonical JIRA field ids (e.g. `priority`,\n`labels`, `customfield_10010`). Values must already be in the API's\nJSON shape (e.g. `{\"name\": \"High\"}` for priority,\n`[\"a\", \"b\"]` for labels) — with one ergonomic exception: a string\nvalue targeting a rich-text textarea custom field (e.g.\n`{\"customfield_19300\": \"- bullet\\n- bullet\"}`) is auto-converted\nfrom JFM markdown to ADF, and the empty string `\"\"` clears such a\nfield. Pass a JSON object instead of a string to bypass conversion\n(raw ADF). Setting `assignee` or `reporter` here collides with the\ntyped parameters and is rejected — pass the typed parameter instead."New value: +"Additional `fields` keys merged into the issue update payload.\nKeys must already be canonical JIRA field ids (e.g. `priority`,\n`labels`, `customfield_10010`). Values must already be in the API's\nJSON shape (e.g. `{\"name\": \"High\"}` for priority,\n`[\"a\", \"b\"]` for labels) — with one ergonomic exception: a string\nvalue targeting a rich-text textarea custom field (e.g.\n`{\"customfield_10088\": \"- bullet\\n- bullet\"}`) is auto-converted\nfrom JFM markdown to ADF, and the empty string `\"\"` clears such a\nfield. Pass a JSON object instead of a string to bypass conversion\n(raw ADF). Setting `assignee` or `reporter` here collides with the\ntyped parameters and is rejected — pass the typed parameter instead."
  2. 13 tool updatesv0.41.0
    • Addeddrive_account_list
    • Addeddrive_auth_status
    • Addeddrive_dedupe
    • Addeddrive_file_read
    • Addeddrive_search
    • Changedgit_lint_commits1 field changed
      • addedInput schema / properties / suggest
        Added value: +{
        +  "default": false,
        +  "description": "When true, populates a deterministic corrected-scope suggestion\n(no AI, no network) for each commit with an\n`unknown-scope`/`missing-scope` issue, resolved from its changed\nfiles against `scopes.yaml` + ecosystem defaults. Report-only —\nmutation stays exclusive to `git_amend_commits`. Errors if combined\nwith `message` (a literal message has no changed-files list).\nDefaults to `false`.",
        +  "type": "boolean"
        +}
    • Changedgit_staged_commit3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model\nfrom settings, then the built-in default, when omitted."New value: +"Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model\nfrom settings, then the built-in default, when omitted. Ignored when\n`no_ai` is set."
      • addedInput schema / properties / no_ai
        Added value: +{
        +  "default": false,
        +  "description": "When true, skips the AI backend entirely and returns a deterministic\n`type(scope): ` skeleton derived from the staged diff's changed\nfiles — no AI, no network, no credentials required. Never commits.\nDefaults to `false`.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / print_only / description
        Previous value: -"When true, the generated commit message is returned without being\ncommitted to the repository. Defaults to `false` (commit applied)."New value: +"When true, the generated commit message is returned without being\ncommitted to the repository. Defaults to `false` (commit applied).\nIgnored (always treated as effectively true) when `no_ai` is set."
    • Addedgmail_account_list
    • Addedgmail_auth_status
    • Addedgmail_label_list
    • Addedgmail_message_read
    • Addedgmail_search
    • Addedgmail_thread_read
  3. 54 tool updatesv0.40.0
    • Addedatlassian_auth_status
    • Addedclaude_skills_clean
    • Addedclaude_skills_status
    • Addedconfig_models_show
    • Addedconfluence_attachment_delete
    • Addedconfluence_attachment_update
    • Addedconfluence_attachment_upload
    • Addedconfluence_children
    • Addedconfluence_comment_add_inline
    • Addedconfluence_comment_audit
    • Addedconfluence_watcher_add
    • Addedgit_lint_commits
    • Addedjira_attachment_download
    • Addedjira_attachment_images
    • Addedjira_attachment_upload
    • Addedjira_board_issues
    • Addedjira_board_list
    • Addedjira_bulk_create
    • Addedjira_changelog
    • Addedjira_comment
    • Addedjira_component_create
    • Addedjira_component_list
    • Addedjira_create
    • Addedjira_delete
    • Addedjira_dev
    • Addedjira_edit
    • Addedjira_field_list
    • Addedjira_field_options
    • Addedjira_label_add
    • Addedjira_label_remove
    • Addedjira_link_create
    • Addedjira_link_list
    • Addedjira_link_parent
    • Addedjira_link_remote_create
    • Addedjira_link_remote_delete
    • Addedjira_link_remote_list
    • Addedjira_link_remove
    • Addedjira_link_types
    • Addedjira_project_create_meta
    • Addedjira_project_list
    • Addedjira_sprint_delete
    • Addedjira_sprint_list
    • Addedjira_transition
    • Addedjira_user_get
    • Addedjira_version_archive
    • Addedjira_version_release
    • Addedjira_worklog_delete
    • Addedjira_worklog_list
    • Addedjira_worklog_update
    • Addedlog_search
    • Addedsnowflake_disconnect
    • Addedsnowflake_query
    • Addedtranscript_youtube_fetch
    • Addedtranscript_youtube_list_langs
  4. 53 tool updatesv0.39.0
    • Addedai_chat
    • Addedclaude_skills_sync
    • Removedconfluence_attachment_update
    • Removedconfluence_attachment_upload
    • Removedconfluence_comment_add_inline
    • Removedconfluence_comment_audit
    • Addedconfluence_copy
    • Addedconfluence_download
    • Addedconfluence_label_add
    • Addedconfluence_label_list
    • Addedconfluence_label_remove
    • Removedconfluence_watcher_add
    • Addeddatadog_dashboard_list
    • Addeddatadog_metrics_catalog_list
    • Addedgit_staged_commit
    • Removedjira_attachment_download
    • Removedjira_attachment_upload
    • Removedjira_board_issues
    • Removedjira_board_list
    • Removedjira_bulk_create
    • Removedjira_changelog
    • Removedjira_comment
    • Removedjira_component_create
    • Removedjira_create
    • Removedjira_delete
    • Removedjira_dev
    • Removedjira_link_remote_delete
    • Removedjira_link_remote_list
    • Removedjira_link_remove
    • Removedjira_project_create_meta
    • Removedjira_project_list
    • Addedjira_search
    • Addedjira_sprint_add
    • Addedjira_sprint_create
    • Addedjira_sprint_issues
    • Addedjira_sprint_update
    • Addedjira_transition_list
    • Removedjira_user_get
    • Addedjira_user_search
    • Addedjira_version_create
    • Addedjira_version_delete
    • Addedjira_version_list
    • Addedjira_version_rename
    • Addedjira_watcher_add
    • Addedjira_watcher_list
    • Addedjira_worklog_add
    • Removedjira_worklog_delete
    • Removedjira_worklog_list
    • Removedjira_worklog_update
    • Removedlog_search
    • Removedsnowflake_disconnect
    • Removedsnowflake_query
    • Removedtranscript_youtube_fetch
  5. 48 tool updatesv0.39.0
    • Removedai_chat
    • Removedatlassian_auth_status
    • Removedclaude_skills_clean
    • Removedclaude_skills_status
    • Removedclaude_skills_sync
    • Removedconfig_models_show
    • Removedconfluence_attachment_delete
    • Removedconfluence_children
    • Removedconfluence_copy
    • Removedconfluence_download
    • Removedconfluence_label_add
    • Removedconfluence_label_list
    • Removedconfluence_label_remove
    • Removeddatadog_dashboard_list
    • Removeddatadog_metrics_catalog_list
    • Removedgit_staged_commit
    • Removedjira_attachment_images
    • Removedjira_component_list
    • Removedjira_edit
    • Removedjira_field_list
    • Removedjira_field_options
    • Removedjira_label_add
    • Removedjira_label_remove
    • Removedjira_link_create
    • Removedjira_link_list
    • Removedjira_link_parent
    • Removedjira_link_remote_create
    • Removedjira_link_types
    • Removedjira_search
    • Removedjira_sprint_add
    • Removedjira_sprint_create
    • Removedjira_sprint_delete
    • Removedjira_sprint_issues
    • Removedjira_sprint_list
    • Removedjira_sprint_update
    • Removedjira_transition
    • Removedjira_transition_list
    • Removedjira_user_search
    • Removedjira_version_archive
    • Removedjira_version_create
    • Removedjira_version_delete
    • Removedjira_version_list
    • Removedjira_version_release
    • Removedjira_version_rename
    • Removedjira_watcher_add
    • Removedjira_watcher_list
    • Removedjira_worklog_add
    • Removedtranscript_youtube_list_langs
  6. 28 tool updatesv0.36.0
    • Addedconfluence_attachment_update
    • Addedconfluence_comment_delete
    • Addedconfluence_comment_edit
    • Addedconfluence_comment_reopen
    • Addedconfluence_comment_resolve
    • Addedconfluence_copy
    • Addedconfluence_restriction_get
    • Addedconfluence_restriction_grant
    • Addedconfluence_restriction_revoke
    • Addedconfluence_watcher_add
    • Addedconfluence_watcher_remove
    • Addedconfluence_watcher_status
    • Addedjira_comment_delete
    • Addedjira_component_create
    • Addedjira_component_delete
    • Addedjira_component_list
    • Addedjira_component_update
    • Addedjira_label_add
    • Addedjira_label_remove
    • Addedjira_link_remote_create
    • Addedjira_link_remote_delete
    • Addedjira_sprint_delete
    • Addedjira_version_archive
    • Addedjira_version_delete
    • Addedjira_version_release
    • Addedjira_version_rename
    • Addedjira_worklog_delete
    • Addedjira_worklog_update
  7. 108 tool updatesv0.33.0
    • Changedai_chat2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for `ai_chat`."
      • removedInput schema / title
        Removed value: -"AiChatParams"
    • Changedatlassian_auth_status2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for `atlassian_auth_status` (none)."
      • removedInput schema / title
        Removed value: -"AtlassianAuthStatusParams"
    • Changedatlassian_convert2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `atlassian_convert` tool."
      • removedInput schema / title
        Removed value: -"AtlassianConvertParams"
    • Changedbrowser_bridge_request2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `browser_bridge_request` tool."
      • removedInput schema / title
        Removed value: -"BrowserBridgeRequestParams"
    • Changedclaude_skills_clean2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters shared by `claude_skills_sync` and `claude_skills_clean`."
      • removedInput schema / title
        Removed value: -"ClaudeSkillsMutateParams"
    • Changedclaude_skills_status2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for `claude_skills_status` (identical shape to mutate tools)."
      • removedInput schema / title
        Removed value: -"ClaudeSkillsStatusParams"
    • Changedclaude_skills_sync2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters shared by `claude_skills_sync` and `claude_skills_clean`."
      • removedInput schema / title
        Removed value: -"ClaudeSkillsMutateParams"
    • Changedconfig_models_show2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for `config_models_show` (none — placeholder for future extensibility)."
      • removedInput schema / title
        Removed value: -"ConfigModelsShowParams"
    • Changedconfluence_attachment_delete2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_attachment_delete` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceAttachmentDeleteParams"
    • Changedconfluence_attachment_download2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_attachment_download` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceAttachmentDownloadParams"
    • Changedconfluence_attachment_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_attachment_list` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceAttachmentListParams"
    • Changedconfluence_attachment_upload2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_attachment_upload` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceAttachmentUploadParams"
    • Changedconfluence_children2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_children` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceChildrenParams"
    • Changedconfluence_comment_add2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_add` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentAddParams"
    • Changedconfluence_comment_add_inline2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_add_inline` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentAddInlineParams"
    • Changedconfluence_comment_audit2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_audit` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentAuditParams"
    • Changedconfluence_comment_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_list` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentListParams"
    • Changedconfluence_comment_reanchor2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_reanchor` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentReanchorParams"
    • Changedconfluence_comment_replies2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_comment_replies` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCommentRepliesParams"
    • Changedconfluence_compare2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_compare` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCompareParams"
    • Changedconfluence_compare_section2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_compare_section` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCompareSectionParams"
    • Changedconfluence_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_create` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceCreateParams"
    • Changedconfluence_delete2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_delete` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceDeleteParams"
    • Changedconfluence_download2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_download` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceDownloadParams"
    • Changedconfluence_history2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_history` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceHistoryParams"
    • Changedconfluence_label_add2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_label_add` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceLabelAddParams"
    • Changedconfluence_label_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_label_list` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceLabelListParams"
    • Changedconfluence_label_remove2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_label_remove` tool.\n\n`confirm` must be `true` for the removal to proceed. This is the\nMCP-side guard for a destructive operation; the assistant must\nexplicitly opt in."
      • removedInput schema / title
        Removed value: -"ConfluenceLabelRemoveParams"
    • Changedconfluence_move2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_move` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceMoveParams"
    • Changedconfluence_read2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_read` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceReadParams"
    • Changedconfluence_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_search` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceSearchParams"
    • Changedconfluence_space_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_space_list` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceSpaceListParams"
    • Changedconfluence_space_pages2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_space_pages` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceSpacePagesParams"
    • Changedconfluence_user_get2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_user_get` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceUserGetParams"
    • Changedconfluence_user_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_user_search` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceUserSearchParams"
    • Changedconfluence_write2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `confluence_write` tool."
      • removedInput schema / title
        Removed value: -"ConfluenceWriteParams"
    • Changedcoverage_diff3 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `coverage_diff` tool."
      • addedInput schema / properties / ignore_filename_regex
        Added value: +{
        +  "default": [],
        +  "description": "Exclude files whose repo-relative path matches any of these regexes from\nboth the head and baseline reports before computing the diff. Matching is\nunanchored, applied after `strip_prefix` (same semantics as\n`cargo llvm-cov --ignore-filename-regex`).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / title
        Removed value: -"CoverageDiffParams"
    • Changeddatadog_auth_status2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for `datadog_auth_status` (none)."
      • removedInput schema / title
        Removed value: -"DatadogAuthStatusParams"
    • Changeddatadog_dashboard_get2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_dashboard_get` tool."
      • removedInput schema / title
        Removed value: -"DatadogDashboardGetParams"
    • Changeddatadog_dashboard_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_dashboard_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogDashboardListParams"
    • Changeddatadog_downtime_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_downtime_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogDowntimeListParams"
    • Changeddatadog_events_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_events_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogEventsListParams"
    • Changeddatadog_hosts_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_hosts_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogHostsListParams"
    • Changeddatadog_logs_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_logs_search` tool."
      • removedInput schema / title
        Removed value: -"DatadogLogsSearchParams"
    • Changeddatadog_metrics_catalog_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_metrics_catalog_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogMetricsCatalogListParams"
    • Changeddatadog_metrics_query2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_metrics_query` tool."
      • removedInput schema / title
        Removed value: -"DatadogMetricsQueryParams"
    • Changeddatadog_monitor_get2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_monitor_get` tool."
      • removedInput schema / title
        Removed value: -"DatadogMonitorGetParams"
    • Changeddatadog_monitor_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_monitor_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogMonitorListParams"
    • Changeddatadog_monitor_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_monitor_search` tool."
      • removedInput schema / title
        Removed value: -"DatadogMonitorSearchParams"
    • Changeddatadog_slo_get2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_slo_get` tool."
      • removedInput schema / title
        Removed value: -"DatadogSloGetParams"
    • Changeddatadog_slo_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `datadog_slo_list` tool."
      • removedInput schema / title
        Removed value: -"DatadogSloListParams"
    • Changedgit_amend_commits2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_amend_commits` tool."
      • removedInput schema / title
        Removed value: -"GitAmendCommitsParams"
    • Changedgit_branch_info2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_branch_info` tool."
      • removedInput schema / title
        Removed value: -"GitBranchInfoParams"
    • Changedgit_check_commits2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_check_commits` tool."
      • removedInput schema / title
        Removed value: -"GitCheckCommitsParams"
    • Changedgit_create_pr2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_create_pr` tool."
      • removedInput schema / title
        Removed value: -"GitCreatePrParams"
    • Changedgit_staged_commit2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_staged_commit` tool."
      • removedInput schema / title
        Removed value: -"GitStagedCommitParams"
    • Changedgit_twiddle_commits2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_twiddle_commits` tool."
      • removedInput schema / title
        Removed value: -"GitTwiddleCommitsParams"
    • Changedgit_view_commits2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `git_view_commits` tool."
      • removedInput schema / title
        Removed value: -"GitViewCommitsParams"
    • Addedjira_attachment_delete
    • Changedjira_attachment_download2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_attachment_download` tool."
      • removedInput schema / title
        Removed value: -"AttachmentDownloadParams"
    • Changedjira_attachment_images2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_attachment_images` tool."
      • removedInput schema / title
        Removed value: -"AttachmentImagesParams"
    • Addedjira_attachment_upload
    • Changedjira_board_issues2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_board_issues` tool."
      • removedInput schema / title
        Removed value: -"BoardIssuesParams"
    • Changedjira_board_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_board_list` tool."
      • removedInput schema / title
        Removed value: -"BoardListParams"
    • Changedjira_bulk_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_bulk_create` tool."
      • removedInput schema / title
        Removed value: -"JiraBulkCreateParams"
    • Changedjira_changelog2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_changelog` tool."
      • removedInput schema / title
        Removed value: -"ChangelogParams"
    • Changedjira_comment2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_comment` tool."
      • removedInput schema / title
        Removed value: -"JiraCommentParams"
    • Changedjira_comment_edit2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_comment_edit` tool."
      • removedInput schema / title
        Removed value: -"JiraCommentEditParams"
    • Changedjira_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_create` tool."
      • removedInput schema / title
        Removed value: -"JiraCreateParams"
    • Changedjira_delete2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_delete` tool.\n\n`confirm` must be `true` for the deletion to proceed. This is the\nMCP-side guard for an irreversible operation; the assistant must\nexplicitly opt in."
      • removedInput schema / title
        Removed value: -"DeleteParams"
    • Changedjira_dev2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_dev` tool."
      • removedInput schema / title
        Removed value: -"JiraDevParams"
    • Changedjira_edit2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_edit` tool."
      • removedInput schema / title
        Removed value: -"JiraEditParams"
    • Changedjira_field_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_field_list` tool."
      • removedInput schema / title
        Removed value: -"FieldListParams"
    • Changedjira_field_options2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_field_options` tool."
      • removedInput schema / title
        Removed value: -"FieldOptionsParams"
    • Changedjira_link_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_create` tool."
      • removedInput schema / title
        Removed value: -"LinkCreateParams"
    • Changedjira_link_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_list` tool."
      • removedInput schema / title
        Removed value: -"LinkListParams"
    • Changedjira_link_parent2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_parent` tool."
      • removedInput schema / title
        Removed value: -"LinkParentParams"
    • Changedjira_link_remote_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_remote_list` tool."
      • removedInput schema / title
        Removed value: -"LinkRemoteListParams"
    • Changedjira_link_remove2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_remove` tool.\n\n`confirm` must be `true` for the removal to proceed. This is the\nMCP-side guard for a destructive operation; the assistant must\nexplicitly opt in."
      • removedInput schema / title
        Removed value: -"LinkRemoveParams"
    • Changedjira_link_types2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_link_types` tool (none)."
      • removedInput schema / title
        Removed value: -"LinkTypesParams"
    • Changedjira_project_create_meta2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_project_create_meta` tool."
      • removedInput schema / title
        Removed value: -"ProjectCreateMetaParams"
    • Changedjira_project_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_project_list` tool."
      • removedInput schema / title
        Removed value: -"ProjectListParams"
    • Changedjira_read2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_read` tool."
      • removedInput schema / title
        Removed value: -"JiraReadParams"
    • Changedjira_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_search` tool."
      • removedInput schema / title
        Removed value: -"JiraSearchParams"
    • Changedjira_sprint_add2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_sprint_add` tool."
      • removedInput schema / title
        Removed value: -"SprintAddParams"
    • Changedjira_sprint_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_sprint_create` tool."
      • removedInput schema / title
        Removed value: -"SprintCreateParams"
    • Changedjira_sprint_issues2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_sprint_issues` tool."
      • removedInput schema / title
        Removed value: -"SprintIssuesParams"
    • Changedjira_sprint_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_sprint_list` tool."
      • removedInput schema / title
        Removed value: -"SprintListParams"
    • Changedjira_sprint_update2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_sprint_update` tool."
      • removedInput schema / title
        Removed value: -"SprintUpdateParams"
    • Changedjira_transition5 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_transition` tool."
      • changedInput schema / properties / comment / description
        Previous value: -"Optional comment to add after the transition."New value: +"Optional comment (JFM markdown). Delivered in the transition itself when\nthe transition screen accepts a comment (atomic, satisfies a\nmandatory-comment screen); otherwise posted as a separate comment after\nthe transition succeeds."
      • addedInput schema / properties / custom_fields
        Added value: +{
        +  "additionalProperties": true,
        +  "default": null,
        +  "description": "Optional transition-screen fields, as a map of field name (or canonical\nid) → value. Values are coerced to the API shape the same way\n`jira_write`'s `fields` are (select/option → option string, arrays a\nstring array, number/date the bare scalar). Names resolve against the\ntransition's screen fields.",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / resolution
        Added value: +{
        +  "default": null,
        +  "description": "Optional resolution to set on the transition, e.g. `\"Fixed\"`. Sent as\n`{\"name\": ...}`; the transition screen must accept a resolution.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedInput schema / title
        Removed value: -"JiraTransitionParams"
    • Changedjira_transition_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_transition_list` tool."
      • removedInput schema / title
        Removed value: -"JiraTransitionListParams"
    • Changedjira_user_get2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_user_get` tool."
      • removedInput schema / title
        Removed value: -"JiraUserGetParams"
    • Changedjira_user_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_user_search` tool."
      • removedInput schema / title
        Removed value: -"JiraUserSearchParams"
    • Changedjira_version_create2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_version_create` tool."
      • removedInput schema / title
        Removed value: -"VersionCreateParams"
    • Changedjira_version_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_version_list` tool."
      • removedInput schema / title
        Removed value: -"VersionListParams"
    • Changedjira_watcher_add2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_watcher_add` tool."
      • removedInput schema / title
        Removed value: -"WatcherMutateParams"
    • Changedjira_watcher_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_watcher_list` tool."
      • removedInput schema / title
        Removed value: -"WatcherListParams"
    • Changedjira_watcher_remove2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_watcher_remove` tool.\n\n`confirm` must be `true` for the removal to proceed. This is the\nMCP-side guard for a destructive operation; the assistant must\nexplicitly opt in."
      • removedInput schema / title
        Removed value: -"WatcherRemoveParams"
    • Changedjira_worklog_add2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_worklog_add` tool."
      • removedInput schema / title
        Removed value: -"WorklogAddParams"
    • Changedjira_worklog_list2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_worklog_list` tool."
      • removedInput schema / title
        Removed value: -"WorklogListParams"
    • Changedjira_write2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `jira_write` tool."
      • removedInput schema / title
        Removed value: -"JiraWriteParams"
    • Changedlog_search2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `log_search` tool.\n\nEvery field is optional — with none set, the most recent records are\nreturned (bounded by `limit`). Filters are AND-ed together."
      • removedInput schema / title
        Removed value: -"LogSearchParams"
    • Changedsnowflake_disconnect2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `snowflake_disconnect` tool."
      • removedInput schema / title
        Removed value: -"SnowflakeDisconnectParams"
    • Changedsnowflake_query2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `snowflake_query` tool."
      • removedInput schema / title
        Removed value: -"SnowflakeQueryParams"
    • Changedsnowflake_sessions2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `snowflake_sessions` tool."
      • removedInput schema / title
        Removed value: -"SnowflakeSessionsParams"
    • Changedtranscript_youtube_fetch2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `transcript_youtube_fetch` tool."
      • removedInput schema / title
        Removed value: -"TranscriptFetchParams"
    • Changedtranscript_youtube_info2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `transcript_youtube_info` and\n`transcript_youtube_list_langs` tools."
      • removedInput schema / title
        Removed value: -"TranscriptLocatorParams"
    • Changedtranscript_youtube_list_langs2 fields changed
      • removedInput schema / description
        Removed value: -"Parameters for the `transcript_youtube_info` and\n`transcript_youtube_list_langs` tools."
      • removedInput schema / title
        Removed value: -"TranscriptLocatorParams"
  8. 28 tool updatesv0.32.0
    • Changedai_chat5 fields changed
      • addedInput schema / properties / message / default
        Added value: +null
      • changedInput schema / properties / message / description
        Previous value: -"User message to send to the AI, e.g. `\"Summarise this diff in one\nsentence.\"`. Sent as a single turn; there is no conversation history."New value: +"User message to send to the AI, e.g. `\"Summarise this diff in one\nsentence.\"`. Sent as a single turn; there is no conversation history.\nMutually exclusive with `message_path`; exactly one is required."
      • changedInput schema / properties / message / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / message_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the message from, instead of `message`.\nPrefer this when the message is already on disk (e.g. a large prompt or\ndocument) — it avoids re-emitting it inline. Mutually exclusive with\n`message`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedInput schema / required
        Removed value: -[
        -  "message"
        -]
    • Changedatlassian_convert1 field changed
      • changedInput schema / properties / strip_local_ids / description
        Previous value: -"When `direction = from-adf`, strip `localId` attributes from output\nfor better readability."New value: +"When `direction = from-adf`, strip `localId` attributes from output\nfor better readability. For reading only — do NOT write stripped output\nback to Confluence, as `localId`s anchor inline comments and dropping\nthem makes Confluence lose those comments."
    • Addedbrowser_bridge_request
    • Changedconfluence_comment_add5 fields changed
      • addedInput schema / properties / content / default
        Added value: +null
      • changedInput schema / properties / content / description
        Previous value: -"Markdown content of the comment body. Converted to ADF before posting."New value: +"Markdown content of the comment body. Converted to ADF before posting.\nMutually exclusive with `content_path`; exactly one is required."
      • changedInput schema / properties / content / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / content_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the comment body from, instead of\n`content`. Prefer this when the body is already on disk. Mutually\nexclusive with `content`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "content"
        -]New value: +[
        +  "id"
        +]
    • Changedconfluence_comment_add_inline5 fields changed
      • addedInput schema / properties / content / default
        Added value: +null
      • changedInput schema / properties / content / description
        Previous value: -"Markdown content of the comment body. Converted to ADF before posting."New value: +"Markdown content of the comment body. Converted to ADF before posting.\nMutually exclusive with `content_path`; exactly one is required."
      • changedInput schema / properties / content / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / content_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the comment body from, instead of\n`content`. Prefer this when the body is already on disk. Mutually\nexclusive with `content`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "content",
        -  "anchor_text"
        -]New value: +[
        +  "id",
        +  "anchor_text"
        +]
    • Addedconfluence_comment_audit
    • Addedconfluence_comment_reanchor
    • Changedconfluence_create2 fields changed
      • addedInput schema / properties / content_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the page body from, instead of\n`content`. Prefer this when the body is already on disk — it avoids\nre-emitting the whole body inline. Mutually exclusive with `content`\n(and, like `content`, rejected when `document`/`document_path` is given).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / document_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the JFM `document` from, instead of\n`document`. Prefer this when the document is already on disk — it avoids\nre-emitting the whole document inline. Mutually exclusive with `document`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedconfluence_read1 field changed
      • addedInput schema / properties / version
        Added value: +{
        +  "default": null,
        +  "description": "Read a specific historical version instead of the current head (e.g.\n`3`). Confluence stores each version as an immutable snapshot; omit for\nthe latest. Useful for seeing what a reviewer was reading when they\nposted a comment.",
        +  "format": "uint32",
        +  "minimum": 0,
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
    • Addedconfluence_user_get
    • Changedconfluence_write5 fields changed
      • addedInput schema / properties / content / default
        Added value: +null
      • changedInput schema / properties / content / description
        Previous value: -"New page body.\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences\nnot `{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`."New value: +"New page body, supplied inline. Mutually exclusive with `content_path`;\nexactly one of the two is required.\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences\nnot `{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`.\n\nPreserve the `localId` attributes (and inline-comment anchor spans) from\nthe original `confluence_read` output: they anchor inline comments and\nstateful nodes, and dropping them makes Confluence lose those comments."
      • changedInput schema / properties / content / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / content_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the body from, instead of `content`.\nPrefer this when the body is already on disk (e.g. edited via\n`confluence_read`'s `output_file`): the assistant avoids re-emitting the\nwhole page inline, which for large pages is slow. Mutually exclusive with\n`content`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "content"
        -]New value: +[
        +  "id"
        +]
    • Addedcoverage_diff
    • Addedgit_amend_commits
    • Changedgit_branch_info1 field changed
      • changedInput schema / properties / branch / description
        Previous value: -"Base branch to compare against, e.g. `main` or `develop`.\nDefaults to `main` or `master` (whichever exists) when omitted."New value: +"Base branch to compare against, e.g. `main` or `develop`.\nWhen omitted, resolved remote-first: `origin/main`, `origin/master`,\nlocal `main`, then local `master`."
    • Changedjira_comment2 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"Comment body (JFM markdown — see resource `omni-dev://specs/jfm`).\nRequired for `action = \"add\"`."New value: +"Comment body (JFM markdown — see resource `omni-dev://specs/jfm`).\nRequired for `action = \"add\"`. Mutually exclusive with `body_path`."
      • addedInput schema / properties / body_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the comment body from, instead of\n`body`. Prefer this when the body is already on disk. Mutually exclusive\nwith `body`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedjira_comment_edit5 fields changed
      • addedInput schema / properties / body / default
        Added value: +null
      • changedInput schema / properties / body / description
        Previous value: -"New comment body (JFM markdown — see resource `omni-dev://specs/jfm`)."New value: +"New comment body (JFM markdown — see resource `omni-dev://specs/jfm`).\nMutually exclusive with `body_path`; exactly one is required."
      • changedInput schema / properties / body / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / body_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the comment body from, instead of\n`body`. Prefer this when the body is already on disk. Mutually exclusive\nwith `body`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedInput schema / required
        Previous value: -[
        -  "key",
        -  "comment_id",
        -  "body"
        -]New value: +[
        +  "key",
        +  "comment_id"
        +]
    • Changedjira_create3 fields changed
      • changedInput schema / properties / custom_fields / description
        Previous value: -"Custom fields to set at create time, as a map of field name *or*\ncanonical id (e.g. `\"Story Points\"` or `\"customfield_10016\"`) to its\nvalue. Names are resolved against the project/issue-type create screen\n(`createmeta`), so pass the name back from a `400`\n\"`<Field> is required`\" error directly. Values are natural JSON: a\nstring or number for scalar/number/date fields, a string for\nselect/option fields (sent as `{\"value\": ...}`), an array of strings\nfor multi-selects. Use this for fields a project requires at create\ntime — without them JIRA rejects the create with HTTP 400."New value: +"Custom fields to set at create time, as a map of field name *or*\ncanonical id (e.g. `\"Story Points\"` or `\"customfield_10016\"`) to its\nvalue. Names are resolved against the project/issue-type create screen\n(`createmeta`), so pass the name back from a `400`\n\"`<Field> is required`\" error directly. Values are natural JSON: a\nstring or number for scalar/number/date fields, a string for\nselect/option fields (sent as `{\"value\": ...}`), an array of strings\nfor multi-selects and labels, an issue key string for issue-link\nfields such as `Parent` (sent as `{\"key\": ...}`). Use this for fields\na project requires at create time — without them JIRA rejects the\ncreate with HTTP 400. To change fields after creation use `jira_edit`."
      • addedInput schema / properties / description_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the description from, instead of\n`description`. Prefer this when the description is already on disk — it\navoids re-emitting a large body inline. Mutually exclusive with\n`description` (and, like `description`, rejected when\n`document`/`document_path` is given).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / document_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the JFM `document` from, instead of\n`document`. Prefer this when the document is already on disk — it avoids\nre-emitting the whole document inline. Mutually exclusive with `document`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Addedjira_edit
    • Changedjira_search7 fields changed
      • addedInput schema / properties / assignee
        Added value: +{
        +  "default": null,
        +  "description": "Convenience filter: assignee (display name or email). ANDed with the\nother filters when `jql` is not provided.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / jql / default
        Added value: +null
      • changedInput schema / properties / jql / description
        Previous value: -"JQL query string (e.g., `project = PROJ AND status = Open`)."New value: +"Raw JQL query string (e.g., `project = PROJ AND status = Open`). When\nprovided it is used verbatim and the convenience filters below are\nignored. Optional — supply either `jql` or at least one filter."
      • changedInput schema / properties / jql / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / project
        Added value: +{
        +  "default": null,
        +  "description": "Convenience filter: project key. ANDed with the other filters when\n`jql` is not provided.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "default": null,
        +  "description": "Convenience filter: status name. ANDed with the other filters when\n`jql` is not provided.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedInput schema / required
        Removed value: -[
        -  "jql"
        -]
    • Addedjira_user_get
    • Changedjira_write1 field changed
      • addedInput schema / properties / content_path
        Added value: +{
        +  "default": null,
        +  "description": "Filesystem path the server reads the description body from, instead of\n`content`. Prefer this when the body is already on disk — it avoids\nre-emitting a large body inline. Mutually exclusive with `content`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Addedlog_search
    • Addedsnowflake_disconnect
    • Addedsnowflake_query
    • Addedsnowflake_sessions
    • Addedtranscript_youtube_fetch
    • Addedtranscript_youtube_info
    • Addedtranscript_youtube_list_langs
  9. 38 tool updatesv0.31.0
    • Changedai_chat3 fields changed
      • changedInput schema / properties / message / description
        Previous value: -"User message to send to the AI."New value: +"User message to send to the AI, e.g. `\"Summarise this diff in one\nsentence.\"`. Sent as a single turn; there is no conversation history."
      • changedInput schema / properties / model / description
        Previous value: -"Optional model identifier (e.g., `claude-sonnet-4-6`)."New value: +"Optional model identifier (e.g., `claude-sonnet-4-6`). When omitted,\nthe backend's environment-configured default model is used; call\n`config_models_show` to see the identifiers the CLI recognises."
      • changedInput schema / properties / system_prompt / description
        Previous value: -"Optional system prompt; defaults to `\"You are a helpful assistant.\"`."New value: +"Optional system prompt; defaults to `\"You are a helpful assistant.\"`.\nMCP-only: the interactive `omni-dev ai chat` CLI has no equivalent flag,\nso this override is reachable only through the tool."
    • Addedconfluence_attachment_download
    • Addedconfluence_comment_add_inline
    • Changedconfluence_comment_list1 field changed
      • addedInput schema / properties / kind
        Added value: +{
        +  "default": null,
        +  "description": "Which kind of comments to include: `\"footer\"`, `\"inline\"`, or\n`\"all\"` (the default — both, merged and sorted by creation time).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Addedconfluence_comment_replies
    • Changedconfluence_create14 fields changed
      • addedInput schema / properties / content / default
        Added value: +null
      • changedInput schema / properties / content / description
        Previous value: -"Page body. Parsed according to `format`.\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences\nnot `{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`."New value: +"Page body. Parsed according to `format`. Required unless `document` is\nprovided (and rejected when it is — the document body is the page body).\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT Confluence wiki markup. Use `##` not `h2.`, triple-backtick fences\nnot `{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`."
      • changedInput schema / properties / content / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / document
        Added value: +{
        +  "default": null,
        +  "description": "Full JFM document (YAML frontmatter + markdown body), e.g. the output\nof `confluence_read` with the frontmatter edited. When provided,\n`space_key`, `title` and `parent_id` are taken from the frontmatter and\nthe body becomes the page body — so the read → edit → create round-trip\nworks. The `space_key`/`title`/`parent_id` parameters below still\noverride their frontmatter counterparts (a warning is returned when they\ndo); passing `content` together with `document` is an error. See resource\n`omni-dev://specs/jfm`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "When true, validate and return the would-be request (method, path,\nbody) without creating the page. Defaults to `false`.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / format / description
        Previous value: -"Format of `content`: `\"jfm\"` (default markdown) or `\"adf\"` (raw ADF JSON)."New value: +"Format of `content`: `\"jfm\"` (default markdown) or `\"adf\"` (raw ADF JSON).\nIgnored for the `document` path (a document is always JFM)."
      • changedInput schema / properties / parent_id / description
        Previous value: -"Optional parent page ID for nesting under an existing page."New value: +"Optional parent page ID for nesting under an existing page. Overrides\nfrontmatter `parent_id:`."
      • addedInput schema / properties / space_key / default
        Added value: +null
      • changedInput schema / properties / space_key / description
        Previous value: -"Target Confluence space key (e.g., `\"ENG\"`)."New value: +"Target Confluence space key (e.g., `\"ENG\"`). Required unless `document`\ncarries a `space_key:`. Overrides frontmatter."
      • changedInput schema / properties / space_key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / title / default
        Added value: +null
      • changedInput schema / properties / title / description
        Previous value: -"Page title."New value: +"Page title. Required unless `document` carries one. Overrides frontmatter."
      • changedInput schema / properties / title / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / required
        Removed value: -[
        -  "space_key",
        -  "title",
        -  "content"
        -]
    • Changedconfluence_download1 field changed
      • addedInput schema / properties / include_attachments
        Added value: +{
        +  "default": null,
        +  "description": "Also download each page's attachment binaries into an `attachments/`\nsubdirectory beside its content file. Defaults to false.",
        +  "type": [
        +    "boolean",
        +    "null"
        +  ]
        +}
    • Addedconfluence_space_list
    • Addedconfluence_space_pages
    • Changedconfluence_write1 field changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "When true, validate and return the would-be request (method, path,\nbody) without updating the page. Defaults to `false`.",
        +  "type": "boolean"
        +}
    • Changeddatadog_dashboard_list1 field changed
      • changedInput schema / properties / filter_shared / description
        Previous value: -"When set, restricts the response to shared (or non-shared)\ndashboards depending on the boolean."New value: +"`true` returns only shared dashboards; `false` returns only\nnon-shared ones; omit (the default) to return all. Optional."
    • Changeddatadog_downtime_list1 field changed
      • changedInput schema / properties / active_only / description
        Previous value: -"When true, restricts results to currently-active downtimes."New value: +"When `true`, restricts results to currently-active downtimes.\nDefaults to `false` (include past and future downtimes too).\nOptional."
    • Changeddatadog_events_list5 fields changed
      • changedInput schema / properties / filter / description
        Previous value: -"Datadog events query (e.g. `service:api`)."New value: +"Datadog events query (e.g. `service:api`). Optional; omit to match\nall events in the window."
      • changedInput schema / properties / from / description
        Previous value: -"Start of the time range. Defaults to `1h`."New value: +"Start of the time range. Accepts relative shorthand (`15m`, `1h`),\n`now`, RFC 3339, or Unix epoch seconds. Defaults to `1h`."
      • changedInput schema / properties / sources / description
        Previous value: -"Comma-separated list of source names."New value: +"Comma-separated list of source names, e.g. `github,nagios`.\nOptional."
      • changedInput schema / properties / tags / description
        Previous value: -"Comma-separated list of `key:value` tags."New value: +"Comma-separated list of `key:value` tags, e.g. `env:prod,team:sre`.\nOptional."
      • changedInput schema / properties / to / description
        Previous value: -"End of the time range. Defaults to `now`."New value: +"End of the time range, same formats as `from`. Defaults to `now`."
    • Changeddatadog_hosts_list2 fields changed
      • changedInput schema / properties / filter / description
        Previous value: -"Datadog hosts filter (e.g. `env:prod`)."New value: +"Datadog hosts filter (e.g. `env:prod`). Optional; omit for all hosts."
      • changedInput schema / properties / from / description
        Previous value: -"Cutoff in Unix epoch seconds; hosts last reporting before this\nare excluded."New value: +"Cutoff in Unix epoch seconds (e.g. `1700000000`); hosts last\nreporting before this are excluded. Optional."
    • Changeddatadog_logs_search1 field changed
      • changedInput schema / properties / filter / description
        Previous value: -"Datadog logs query (e.g. `service:api status:error`)."New value: +"Datadog logs query, e.g. `service:api status:error`. Required; use\n`*` to match all logs."
    • Changeddatadog_metrics_catalog_list2 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Cutoff in Unix epoch seconds; only metrics ingested since this\ntimestamp are returned."New value: +"Cutoff in Unix epoch seconds (e.g. `1700000000`); only metrics\ningested since this timestamp are returned. Optional."
      • changedInput schema / properties / host / description
        Previous value: -"Filter by host (e.g. `web-01`)."New value: +"Filter by host (e.g. `web-01`). Optional; omit for all hosts."
    • Changeddatadog_metrics_query1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Datadog query string (e.g. `avg:system.cpu.user{*}`)."New value: +"Datadog metrics query string, e.g. `avg:system.cpu.user{*}` or\n`sum:trace.http.request.hits{service:api}.as_rate()`. Required."
    • Changeddatadog_monitor_get1 field changed
      • changedInput schema / properties / monitor_id / description
        Previous value: -"Datadog monitor identifier."New value: +"Datadog monitor identifier (numeric, e.g. `12345`). Required."
    • Changeddatadog_monitor_list3 fields changed
      • changedInput schema / properties / monitor_tags / description
        Previous value: -"Comma-separated `key:value` tags applied via `monitor_tags`."New value: +"Comma-separated `key:value` tags on the *monitor object itself* (the\n`monitor_tags` API filter), e.g. `service:api`. Distinct from `tags`\nabove. Optional."
      • changedInput schema / properties / name / description
        Previous value: -"Substring match on the monitor name."New value: +"Substring match on the monitor name, e.g. `cpu`. Optional; omit to\nmatch all names."
      • changedInput schema / properties / tags / description
        Previous value: -"Comma-separated `key:value` tags applied to the monitor."New value: +"Comma-separated `key:value` tags on the monitored *scope* (the\n`tags` API filter), e.g. `env:prod,team:sre`. Optional."
    • Changeddatadog_monitor_search1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Free-text / faceted search query (e.g. `status:alert`)."New value: +"Free-text / faceted search query, e.g. `status:alert`,\n`type:metric tag:team:sre`. Required."
    • Changeddatadog_slo_get1 field changed
      • changedInput schema / properties / slo_id / description
        Previous value: -"Datadog SLO identifier (string)."New value: +"Datadog SLO identifier (string, e.g. `abc123def456`). Required."
    • Changeddatadog_slo_list4 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"Comma-separated list of SLO ids."New value: +"Comma-separated list of SLO ids, e.g. `abc123,def456`. Optional."
      • changedInput schema / properties / metrics_query / description
        Previous value: -"Comma-separated list of metric names referenced by the SLO."New value: +"Comma-separated list of metric names referenced by the SLO, e.g.\n`aws.elb.healthy_host_count`. Optional."
      • changedInput schema / properties / query / description
        Previous value: -"Free-text query."New value: +"Free-text query matched against SLO name/description, e.g.\n`checkout latency`. Optional."
      • changedInput schema / properties / tags / description
        Previous value: -"Comma-separated `key:value` tags applied to the SLO."New value: +"Comma-separated `key:value` tags applied to the SLO, e.g.\n`team:sre,env:prod`. Optional."
    • Changedgit_branch_info1 field changed
      • changedInput schema / properties / branch / description
        Previous value: -"Base branch to compare against. Defaults to `main` or `master`."New value: +"Base branch to compare against, e.g. `main` or `develop`.\nDefaults to `main` or `master` (whichever exists) when omitted."
    • Changedgit_check_commits3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Claude model override."New value: +"Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model\nfrom settings, then the built-in default, when omitted."
      • changedInput schema / properties / range / description
        Previous value: -"Commit range to check (e.g., `HEAD~3..HEAD`, `abc123..def456`)."New value: +"Commit range to check (e.g., `HEAD~3..HEAD`, `abc123..def456`).\nRequired — unlike the CLI, this tool does not default to \"commits ahead\nof the base branch\"."
      • changedInput schema / properties / strict / description
        Previous value: -"When true, warnings are treated as non-zero exit conditions."New value: +"When true, warnings are treated as non-zero exit conditions.\nDefaults to `false` (only errors fail)."
    • Changedgit_create_pr2 fields changed
      • changedInput schema / properties / base_branch / description
        Previous value: -"Base branch for the PR. Defaults to the primary remote's main branch."New value: +"Base branch the PR would merge into, e.g. `main` or `develop`.\nDefaults to the primary remote's main branch when omitted."
      • changedInput schema / properties / model / description
        Previous value: -"Claude model override."New value: +"Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model\nfrom settings, then the built-in default, when omitted."
    • Addedgit_staged_commit
    • Changedgit_twiddle_commits2 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Claude model override."New value: +"Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model\nfrom settings, then the built-in default, when omitted."
      • changedInput schema / properties / range / description
        Previous value: -"Commit range to twiddle. Defaults to `HEAD~5..HEAD` when omitted."New value: +"Commit range to twiddle (e.g., `HEAD~3..HEAD`, `abc123..def456`).\nDefaults to `HEAD~5..HEAD` when omitted."
    • Addedjira_bulk_create
    • Changedjira_create12 fields changed
      • addedInput schema / properties / custom_fields
        Added value: +{
        +  "additionalProperties": true,
        +  "default": null,
        +  "description": "Custom fields to set at create time, as a map of field name *or*\ncanonical id (e.g. `\"Story Points\"` or `\"customfield_10016\"`) to its\nvalue. Names are resolved against the project/issue-type create screen\n(`createmeta`), so pass the name back from a `400`\n\"`<Field> is required`\" error directly. Values are natural JSON: a\nstring or number for scalar/number/date fields, a string for\nselect/option fields (sent as `{\"value\": ...}`), an array of strings\nfor multi-selects. Use this for fields a project requires at create\ntime — without them JIRA rejects the create with HTTP 400.",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / description / description
        Previous value: -"Optional description in JFM markdown — see resource\n`omni-dev://specs/jfm` for syntax. JFM is GitHub-style markdown,\nNOT JIRA wiki markup (use `##` not `h2.`, triple-backtick fences not\n`{code}`, backtick inline code not `{{...}}`)."New value: +"Optional description in JFM markdown — see resource\n`omni-dev://specs/jfm` for syntax. JFM is GitHub-style markdown,\nNOT JIRA wiki markup (use `##` not `h2.`, triple-backtick fences not\n`{code}`, backtick inline code not `{{...}}`). Rejected when `document`\nis provided (the document body is the description)."
      • addedInput schema / properties / document
        Added value: +{
        +  "default": null,
        +  "description": "Full JFM document (YAML frontmatter + markdown body), e.g. the output\nof `jira_read` with the frontmatter edited. When provided, `project`,\n`summary`, `issue_type`, labels and custom fields are taken from the\nfrontmatter (the project derives from `key:` when no `project:` is set)\nand the body becomes the description — so the read → edit → create\nround-trip works without re-specifying fields. The `project`/`summary`/\n`issue_type` parameters below still override their frontmatter\ncounterparts (a warning is returned when they do); passing `description`\nor `custom_fields` together with `document` is an error (put custom fields\nin the document's `custom_fields:` frontmatter). See resource\n`omni-dev://specs/jfm`.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "When true, validate and return the would-be request (method, path,\nbody) without creating the issue. Defaults to `false`.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / issue_type / description
        Previous value: -"Issue type (defaults to `Task`)."New value: +"Issue type (defaults to `Task`). Overrides frontmatter."
      • addedInput schema / properties / project / default
        Added value: +null
      • changedInput schema / properties / project / description
        Previous value: -"Project key (e.g., `PROJ`)."New value: +"Project key (e.g., `PROJ`). Required unless `document` carries a\n`project:` (or a `key:` it can be derived from). Overrides frontmatter."
      • changedInput schema / properties / project / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / summary / default
        Added value: +null
      • changedInput schema / properties / summary / description
        Previous value: -"Issue summary / title."New value: +"Issue summary / title. Required unless `document` carries one.\nOverrides frontmatter."
      • changedInput schema / properties / summary / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / required
        Removed value: -[
        -  "project",
        -  "summary"
        -]
    • Removedjira_link
    • Addedjira_link_create
    • Addedjira_link_parent
    • Addedjira_link_remote_list
    • Changedjira_link_remove1 field changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "When true, validate and return the would-be request (method, path)\nwithout removing the link (and without requiring `confirm`). Defaults\nto `false`.",
        +  "type": "boolean"
        +}
    • Addedjira_project_create_meta
    • Changedjira_watcher_add1 field changed
      • changedInput schema / properties / account_id / description
        Previous value: -"Atlassian account ID of the user."New value: +"Atlassian `accountId` of the user (not a display name or email). Use\n`jira_user_search` to resolve a name or email to an `accountId`."
    • Changedjira_watcher_remove1 field changed
      • changedInput schema / properties / account_id / description
        Previous value: -"Atlassian account ID of the user."New value: +"Atlassian `accountId` of the user (not a display name or email). Use\n`jira_user_search` to resolve a name or email to an `accountId`."
    • Changedjira_write4 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"New description body. Interpreted per `format`. Omit to leave the\nexisting description unchanged (useful when only updating\n`parent`/`assignee`/`reporter`/`fields`).\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT JIRA wiki markup. Use `##` not `h2.`, triple-backtick fences not\n`{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`."New value: +"New description body. Interpreted per `format`. Omit to leave the\nexisting description unchanged (useful when only updating\n`assignee`/`reporter`/`fields`).\n\nFor `format = \"jfm\"` (the default), this is GitHub-style markdown,\nNOT JIRA wiki markup. Use `##` not `h2.`, triple-backtick fences not\n`{code}`, backtick inline code not `{{...}}`. Full reference:\nMCP resource `omni-dev://specs/jfm`."
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "When true, validate and return the would-be request (method, path,\nbody) without updating the issue. Defaults to `false`.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / fields / description
        Previous value: -"Additional `fields` keys merged into the issue update payload as-is.\nKeys must already be canonical JIRA field ids (e.g. `priority`,\n`labels`, `customfield_10010`). Values must already be in the API's\nJSON shape (e.g. `{\"name\": \"High\"}` for priority,\n`[\"a\", \"b\"]` for labels). Setting `assignee` or `reporter` here\ncollides with the typed parameters and is rejected — pass the typed\nparameter instead."New value: +"Additional `fields` keys merged into the issue update payload.\nKeys must already be canonical JIRA field ids (e.g. `priority`,\n`labels`, `customfield_10010`). Values must already be in the API's\nJSON shape (e.g. `{\"name\": \"High\"}` for priority,\n`[\"a\", \"b\"]` for labels) — with one ergonomic exception: a string\nvalue targeting a rich-text textarea custom field (e.g.\n`{\"customfield_19300\": \"- bullet\\n- bullet\"}`) is auto-converted\nfrom JFM markdown to ADF, and the empty string `\"\"` clears such a\nfield. Pass a JSON object instead of a string to bypass conversion\n(raw ADF). Setting `assignee` or `reporter` here collides with the\ntyped parameters and is rejected — pass the typed parameter instead."
      • removedInput schema / properties / parent
        Removed value: -{
        -  "default": null,
        -  "description": "Parent issue key (e.g., `PROJ-100`). When set, establishes a\nparent-child hierarchy on the issue (Epic → Story, Story → Sub-task,\netc.). Distinct from `jira_link` actions, which create\n\"Composition\"-style links rather than the system parent field.",
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
  10. 81 tool updatesv0.1.0
    • First observedai_chat
    • First observedatlassian_auth_status
    • First observedatlassian_convert
    • First observedclaude_skills_clean
    • First observedclaude_skills_status
    • First observedclaude_skills_sync
    • First observedconfig_models_show
    • First observedconfluence_attachment_delete
    • First observedconfluence_attachment_list
    • First observedconfluence_attachment_upload
    • First observedconfluence_children
    • First observedconfluence_comment_add
    • First observedconfluence_comment_list
    • First observedconfluence_compare
    • First observedconfluence_compare_section
    • First observedconfluence_create
    • First observedconfluence_delete
    • First observedconfluence_download
    • First observedconfluence_history
    • First observedconfluence_label_add
    • First observedconfluence_label_list
    • First observedconfluence_label_remove
    • First observedconfluence_move
    • First observedconfluence_read
    • First observedconfluence_search
    • First observedconfluence_user_search
    • First observedconfluence_write
    • First observeddatadog_auth_status
    • First observeddatadog_dashboard_get
    • First observeddatadog_dashboard_list
    • First observeddatadog_downtime_list
    • First observeddatadog_events_list
    • First observeddatadog_hosts_list
    • First observeddatadog_logs_search
    • First observeddatadog_metrics_catalog_list
    • First observeddatadog_metrics_query
    • First observeddatadog_monitor_get
    • First observeddatadog_monitor_list
    • First observeddatadog_monitor_search
    • First observeddatadog_slo_get
    • First observeddatadog_slo_list
    • First observedgit_branch_info
    • First observedgit_check_commits
    • First observedgit_create_pr
    • First observedgit_twiddle_commits
    • First observedgit_view_commits
    • First observedjira_attachment_download
    • First observedjira_attachment_images
    • First observedjira_board_issues
    • First observedjira_board_list
    • First observedjira_changelog
    • First observedjira_comment
    • First observedjira_comment_edit
    • First observedjira_create
    • First observedjira_delete
    • First observedjira_dev
    • First observedjira_field_list
    • First observedjira_field_options
    • First observedjira_link
    • First observedjira_link_list
    • First observedjira_link_remove
    • First observedjira_link_types
    • First observedjira_project_list
    • First observedjira_read
    • First observedjira_search
    • First observedjira_sprint_add
    • First observedjira_sprint_create
    • First observedjira_sprint_issues
    • First observedjira_sprint_list
    • First observedjira_sprint_update
    • First observedjira_transition
    • First observedjira_transition_list
    • First observedjira_user_search
    • First observedjira_version_create
    • First observedjira_version_list
    • First observedjira_watcher_add
    • First observedjira_watcher_list
    • First observedjira_watcher_remove
    • First observedjira_worklog_add
    • First observedjira_worklog_list
    • First observedjira_write

TDQS

A3.8/5.0
Disambiguation4/5

Tools are grouped by domain prefixes (confluence_, jira_, datadog_, git_, etc.) with distinct verb_noun patterns, making them easy to tell apart. A few overlaps exist (e.g., jira_edit vs jira_write) but descriptions clarify the differences.

Naming Consistency4/5

Most tools follow snake_case with domain prefix and verb_noun convention (e.g., confluence_read, jira_create). Some outliers like ai_chat, browser_bridge_request, and config_models_show lack prefixes but still use descriptive verbs. Overall pattern is consistent within domains.

Tool Count2/5

108 tools is far above the threshold for a well-scoped MCP server. While each tool serves a specific purpose, the sheer number is overwhelming and increases cognitive load. This is well into the 'too many' range.

Completeness5/5

The tool set provides comprehensive coverage for all integrated services: CRUD operations, search, comments, attachments, workflows, integrations, and more. No obvious gaps for the stated domains.

Maintenance

ActivityActive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rust-works/omni-dev'

If you have feedback or need assistance with the MCP directory API, please join our Discord server