omni-dev
The omni-dev MCP server is an AI-powered developer toolkit providing Git workflow automation, Atlassian (JIRA/Confluence) management, Datadog observability, and AI chat — all via the Model Context Protocol.
AI Chat & Configuration
Send one-shot messages to AI backends (Claude, OpenAI, Ollama, Bedrock) with optional model/system prompt overrides
List supported AI models with token limits and provider info
Git Workflow Automation
View and analyze commits in a range or against a base branch
Validate commit messages against guidelines
Rewrite/improve commit messages with AI (with dry-run support)
Generate AI-drafted PR titles and descriptions
Commit staged changes with an AI-generated Conventional Commits message
JIRA Issue Management
Full lifecycle: create, read, update, delete, search (JQL), and bulk-create issues
Manage comments, attachments, worklogs, watchers, links, versions, sprints, and boards
Transition issues through workflow statuses; view changelogs and development status
List fields, projects, field options, and search users
Confluence Page Management
Create, read, write, delete, and move pages; download entire page trees or spaces
View version history and compare versions (summary, outline, or full diff)
Manage comments (footer/inline/replies), labels, and attachments
Search pages (CQL), list spaces, enumerate pages, and list children with optional recursion
Datadog Monitoring (Read-Only)
Query metric timeseries and list metric names
List/get monitors, dashboards, SLOs, hosts, scheduled downtimes
Search logs and list events from the alert stream
Atlassian Utilities
Offline bidirectional conversion between JIRA-Flavored Markdown (JFM) and Atlassian Document Format (ADF) JSON
Check Atlassian and Datadog authentication status without exposing secrets
Claude Skills Sync
Manage Claude Code skill symlinks (sync, clean, inspect) across Git worktrees
Read, write, and manage JIRA issues and Confluence pages, including authentication, search, creation, editing, and transitions.
Read, search, and create Confluence pages with markdown support.
Query metrics, monitors, dashboards, logs, events, SLOs, hosts, and downtimes from Datadog (read-only).
Manage JIRA issues: read, search, create, update, transition issues, and convert markdown to ADF.
Fetch captions and transcripts from YouTube videos in formats like SRT, VTT, and JSON.
omni-dev
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

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-devNext 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 | |||
Rewrite existing commits in a range | ✅ | ❌ pre-commit only | ❌ pre-commit only |
Parallel batched processing (long ranges) | ✅ | ❌ | ❌ |
AI-written PR descriptions | ✅ | ⚠ GitHub Action only | ❌ |
Project-context awareness | ✅ | ❌ | ❌ |
Sandboxed | ✅ 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 | |||
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) | ✅ | ❌ | ❌ |
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:platformDATADOG_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 stdinAn 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.internalSupports 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 stopThe 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 20Set 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 listRuns 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-updateEach 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 markdownThe 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:
AskUserQuestioncalls 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 nexttool_result.Tool interrupts (escape mid-execution) render as
**Tool result (<tool>, interrupted by user):**.Errors (real tool failures, distinct from user denials) keep the
errorlabel; successes useok.
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) |
|
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) |
|
Datadog (14) | metrics, monitors, dashboards, logs, events, SLOs, hosts, downtimes, metrics catalog |
Gmail (5) |
|
AI / Config (5) |
|
Resources exposed via URI templates:
URI template | Returns |
| YAML commit analysis |
| JIRA issue as JFM |
| JIRA issue body as ADF |
| Confluence page as JFM |
| Confluence page body as ADF |
| Embedded reference specs (e.g. |
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 mcpThis 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-mcpSmoke-test with the MCP Inspector
npx @modelcontextprotocol/inspector omni-dev-mcpThe 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 |
| Model for | model registry default |
| Tracing filter directive for the server |
|
| Cap on a tool response before truncation ( | 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-devScope 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.mdWork 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 2Command Options
Option | Description | Example |
| Generate fresh messages from the diffs alone (the default; conflicts with |
|
| Refine the existing messages instead of starting fresh (conflicts with |
|
| Enable contextual intelligence |
|
| Describe the work being done to steer suggestions |
|
| Override the context detected from the branch name |
|
| Custom context directory |
|
| Claude API model to use (defaults from settings) |
|
| Beta header for API requests (model-gated) |
|
| Number of parallel commit processors (default: 4) |
|
| Skip cross-commit coherence refinement pass |
|
| Skip AI; output the repository analysis YAML only |
|
| Apply without confirmation |
|
| Allow amending commits already in remote main branches |
|
| Validate the messages after applying |
|
| Save to file without applying |
|
| Only show errors/warnings |
|
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 changesAfter: 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 performanceWorkflow 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 reviewContributing
We welcome contributions! Please see our Contributing Guidelines for details.
Development Setup
Clone the repository:
git clone https://github.com/rust-works/omni-dev.git cd omni-devInstall Rust (if you haven't already):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shBuild the project:
cargo buildRun the build script (includes tests, linting, and formatting):
./scripts/build.shOr run individual steps:
cargo test # Run tests cargo clippy # Run linting cargo fmt # Format code
📚 Documentation
Getting Started - 10-minute walkthrough from install to first AI-improved commit (start here)
User Guide - Comprehensive usage guide with examples
Configuration Guide - Set up contextual intelligence
Why JFM? - Why omni-dev edits Atlassian content as Markdown instead of raw ADF
API Documentation - Rust API reference
Troubleshooting - Common issues and solutions
Examples - Real-world usage examples
Release Process - For contributors
🔧 Requirements
Rust: 1.80+ (for installation from source)
Claude API Key: Required for AI-powered features
See Authentication for setup (env var,
.env, or CI/CD secrets)
AI Model Selection: Optional configuration for specific models
View available models:
omni-dev config models showPick per-invocation with the global
--modelflag, or configure viaOMNI_DEV_MODEL/ the per-backend env chain (CLAUDE_MODEL,CLAUDE_CODE_MODEL,ANTHROPIC_MODELfor Claude-family backends;OPENAI_MODEL;OLLAMA_MODEL) or~/.omni-dev/settings.jsonSupports 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— sandboxedclaude -psubprocess 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 toolsai_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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional 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. | |
| message | No | User 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_path | No | Filesystem 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_prompt | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | When `direction = to-adf`, emit compact JSON instead of pretty-printed. | |
| content | Yes | The content to convert. For `to-adf` this is JFM markdown; for `from-adf` this is an ADF JSON document. | |
| direction | Yes | Direction of the conversion: `to-adf` (markdown → ADF JSON) or `from-adf` (ADF JSON → markdown). | |
| strip_local_ids | No | When `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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Request URL, relative to the browser's page origin (e.g. `/api/foo`). | |
| body | No | Request body, sent verbatim (no `@file` expansion — pass content inline). | |
| method | No | HTTP method. Defaults to `GET`. | GET |
| target | No | Route 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. | |
| headers | No | Request headers as a `{ "Name": "Value" }` map. Validated for safety. | |
| token_file | No | Read the session token from this `0600` file instead of the `OMNI_BRIDGE_TOKEN` environment variable. | |
| credentials | No | Fetch credentials mode. Defaults to `include` (cookies/auth sent). Use `omit` to read a wildcard-CORS cross-origin response. | |
| allow_origin | No | Permit a cross-origin outbound URL for this request only. Omit for same-origin (relative) requests. | |
| control_port | No | Control-plane port of the running bridge. Defaults to the standard port. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: `"text"` (default) or `"yaml"`. | |
| worktrees | No | When true, also operate on every worktree belonging to the target repository. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: `"text"` (default) or `"yaml"`. | |
| worktrees | No | When true, also inspect every worktree belonging to the target repository. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: `"text"` (default) or `"yaml"`. | |
| worktrees | No | When true, also operate on every worktree belonging to the target repository. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | Permanently purge the attachment instead of moving it to trash (requires space admin). Defaults to false. | |
| attachment_id | Yes | Attachment ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | Destination 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_id | Yes | Attachment ID (from `confluence_attachment_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of attachments per page. Defaults to 25. | |
| cursor | No | Pagination cursor (use `next_cursor` from a previous call). | |
| page_id | Yes | Confluence page ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional version comment recorded with the new version. | |
| page_id | Yes | Confluence page ID the attachment lives on. | |
| filename | No | Override the filename used in Confluence (defaults to the local basename). | |
| file_path | Yes | Local filesystem path whose contents become the new version. Streamed from disk (never fully buffered in memory). | |
| minor_edit | No | Marks the new version as a minor edit. Defaults to false. | |
| attachment_id | Yes | Attachment ID to update (from `confluence_attachment_list`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional version comment recorded with the upload. | |
| page_id | Yes | Confluence page ID to attach the file to. | |
| filename | No | Override the filename used in Confluence (defaults to the local basename). | |
| file_path | Yes | Local filesystem path to the file to upload. Streamed from disk (never fully buffered in memory). | |
| minor_edit | No | Marks the upload as a minor edit. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Page ID whose children should be listed. Omit when using `space`. | |
| space | No | Space key (mutually exclusive with `id`): list top-level pages in the space. | |
| max_depth | No | Maximum tree depth when `recursive` is set (0 = unlimited). | |
| recursive | No | Recursively fetch descendants. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| content | No | Markdown content of the comment body. Converted to ADF before posting. Mutually exclusive with `content_path`; exactly one is required. | |
| content_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| content | No | Markdown content of the comment body. Converted to ADF before posting. Mutually exclusive with `content_path`; exactly one is required. | |
| anchor_text | Yes | Exact text on the page that the comment should anchor to. | |
| match_index | No | 1-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_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | `"footer"` or `"inline"` — the v2 API uses separate endpoints. | |
| confirm | Yes | Must be `true` — destructive guard. | |
| comment_id | Yes | Comment ID to delete (from `confluence_comment_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | `"footer"` or `"inline"` — the v2 API uses separate endpoints. | |
| content | No | New markdown body. Converted to ADF. Mutually exclusive with `content_path`; exactly one is required. | |
| comment_id | Yes | Comment ID to edit (from `confluence_comment_list`). | |
| content_path | No | Filesystem path the server reads the new body from, instead of `content`. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| kind | No | Which kind of comments to include: `"footer"`, `"inline"`, or `"all"` (the default — both, merged and sorted by creation time). | |
| limit | No | Maximum number of comments to return (0 = unlimited). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| dry_run | No | When true, validate and return what would change without writing the page. Defaults to `false`. | |
| comment_id | Yes | The inline comment ID to re-anchor. | |
| anchor_text | Yes | Exact text on the current page to move the comment's anchor to. | |
| match_index | No | 1-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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | Inline comment ID (from `confluence_comment_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | `"footer"` or `"inline"` — Confluence stores reply chains on a kind-specific endpoint, so the caller must commit to one. | |
| limit | No | Maximum number of replies to return (0 = unlimited). | |
| comment_id | Yes | Parent comment ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | Inline comment ID (from `confluence_comment_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| to | No | `to` version reference. Same accepted forms as `from`. Defaults to `"latest"`. | |
| from | No | `from` version reference. Accepts `"latest"`, `"previous"`, `"v-N"` (e.g. `"v-2"`), a numeric version, or an ISO 8601 date. Defaults to `"previous"`. | |
| budget | No | Output budget in bytes. Defaults to ~16 KiB (≈4000 tokens). | |
| detail | No | Detail level: `"summary"`, `"outline"` (default), or `"full"`. | |
| include | No | Top-level fields to include. Comma-separated. Accepted values: `"body"`, `"title"`, `"labels"`, `"metadata"`. Defaults to `"body,title,metadata"`. | |
| filter_sections | No | Restrict to sections whose path matches one of the given strings. | |
| min_change_chars | No | Drop section deltas with fewer than this many characters of total changed text. `0` (default) disables the filter. | |
| ignore_whitespace | No | Collapse runs of whitespace before diffing. Defaults to `true`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | Yes | Cursor returned by an outline-mode `confluence_compare` call. The cursor encodes the page ID and version pair, so this tool is stateless across calls. | |
| format | No | Output text format: `"unified"` (default), `"side_by_side"`, or `"markdown_inline"`. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title for the new copied page. | |
| page_id | Yes | Source page ID to copy. | |
| parent_id | Yes | Destination parent page ID the copy is placed under. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Page title. Required unless `document` carries one. Overrides frontmatter. | |
| format | No | Format of `content`: `"jfm"` (default markdown) or `"adf"` (raw ADF JSON). Ignored for the `document` path (a document is always JFM). | |
| content | No | Page 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_run | No | When true, validate and return the would-be request (method, path, body) without creating the page. Defaults to `false`. | |
| document | No | Full 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_id | No | Optional parent page ID for nesting under an existing page. Overrides frontmatter `parent_id:`. | |
| space_key | No | Target Confluence space key (e.g., `"ENG"`). Required unless `document` carries a `space_key:`. Overrides frontmatter. | |
| content_path | No | Filesystem 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_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| purge | No | Permanently purges the page instead of moving to trash. Requires space admin permission. | |
| confirm | Yes | Must be `true` to confirm this destructive, irreversible operation. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Root page ID to download from. Either this or `space` must be set. | |
| space | No | Space key to download from — every top-level page becomes a root. | |
| format | No | Output format: `"jfm"` (default) or `"adf"`. | |
| max_depth | No | Maximum tree depth. 0 = unlimited (default). | |
| output_dir | No | Target directory for downloaded files. Defaults to a fresh tempdir when omitted; the manifest summary reports the path used. | |
| concurrency | No | Maximum number of concurrent fetches. Defaults to 8. | |
| title_filter | No | Only download pages whose title contains this substring (case-insensitive). | |
| include_attachments | No | Also download each page's attachment binaries into an `attachments/` subdirectory beside its content file. Defaults to false. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| limit | No | Maximum number of versions to return. `0` means unlimited. Defaults to 20. | |
| since | No | Filter 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| labels | Yes | Labels to add to the page. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| limit | No | Maximum number of labels to return (0 = unlimited). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| labels | Yes | Labels to remove from the page. | |
| confirm | Yes | Must be set to `true` — destructive guard. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ID of the Confluence page to move. | |
| position | No | Position 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_id | Yes | Target page ID — new parent for `position: "append"`, or sibling reference for `"before"`/`"after"`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID (e.g., "12345678"). | |
| format | No | Output format: `"jfm"` (default, AI-friendly markdown) or `"adf"` (raw ADF JSON). | |
| version | No | Read 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_file | No | When 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | Confluence page (content) ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Group name. Exactly one of `account_id` / `group` must be set. | |
| operation | Yes | Operation the restriction applies to — `"read"` or `"update"`. | |
| account_id | No | Atlassian `accountId` of the user. Exactly one of `account_id` / `group` must be set. | |
| content_id | Yes | Confluence page (content) ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Group name. Exactly one of `account_id` / `group` must be set. | |
| operation | Yes | Operation the restriction applies to — `"read"` or `"update"`. | |
| account_id | No | Atlassian `accountId` of the user. Exactly one of `account_id` / `group` must be set. | |
| content_id | Yes | Confluence page (content) ID. |
TDQS
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.
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.
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.
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.
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.
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_searchA
Search Confluence pages using CQL (Confluence Query Language), e.g. space = ENG AND title ~ "architecture". Returns YAML with matching page IDs, titles, and space keys — feed an ID into confluence_read for the body. Use confluence_children/confluence_space_pages instead when you want to enumerate a known page tree or space rather than query by text. Mirrors omni-dev atlassian confluence search --cql.
| Name | Required | Description | Default |
|---|---|---|---|
| cql | Yes | Confluence CQL query (e.g., `space = ENG AND title ~ "architecture"`). | |
| limit | No | Maximum number of results. Defaults to 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions output format (YAML) and mirrors a CLI command, but does not disclose potential rate limits, auth requirements, or other behavioral traits. Adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. Includes example, usage guidance, and CLI mirror reference. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the query language, example, output, and post-search actions. Leaves no significant gaps for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds an example CQL query, mentions default limit of 20, and explains output structure, providing additional context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches Confluence pages using CQL, specifies the resources (page IDs, titles, space keys), and distinguishes from sibling tools like confluence_children and confluence_space_pages for enumeration vs text query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use alternatives (confluence_children/confluence_space_pages for enumeration) and how to use results (feed ID into confluence_read). Provides clear context for selection.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | Filter to specific space keys. Combined with `type`/`status` as AND. | |
| type | No | Filter by space type. Common values: `global`, `personal`, `collaboration`, `knowledge_base`, `onboarding`. Passed through to the Confluence v2 API verbatim. | |
| limit | No | Maximum number of spaces per page. Defaults to 25. | |
| cursor | No | Pagination cursor (use `next_cursor` from a previous call). | |
| status | No | Filter by space status. Common values: `current`, `archived`. Passed through to the Confluence v2 API verbatim. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. Common values: `id`, `-id`, `title`, `-title`, `created-date`, `-created-date`, `modified-date`, `-modified-date`. Passed through to the Confluence v2 API verbatim. | |
| limit | No | Maximum number of pages per response. Defaults to 25. | |
| space | Yes | Space key whose pages to enumerate (e.g. `ENG`). | |
| cursor | No | Pagination cursor (use `next_cursor` from a previous call). | |
| status | No | Filter by page status. Common values: `current`, `archived`, `draft`, `trashed`. Passed through to the Confluence v2 API verbatim. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_ids | Yes | One or more Atlassian account IDs to resolve (e.g. `557058:00ce7e71-9edc-47da-a0c6-f796533ae2cd`). |
TDQS
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.
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.
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.
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.
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.
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_user_searchB
Search Confluence users by display name or email. limit of 0 returns every match; defaults to 25. Mirrors omni-dev atlassian confluence user search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (0 = unlimited). Defaults to 25. | |
| query | Yes | Search text; matches display name or email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the search criteria and limit behavior, but does not disclose return format, pagination details beyond limit, authentication requirements, or potential rate limits. For a simple search tool, this is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences, front-loading the purpose and then providing additional parameter detail. There is no redundant or extraneous information. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters, no output schema, and no nested objects, the description provides the essential purpose and parameter behavior. However, it lacks information about the return value structure (e.g., list of user objects, fields included), which would be helpful for an agent invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters with 100% coverage. The description adds value by clarifying the special behavior of 'limit=0' (unlimited results) and the default value of 25, which goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Confluence users by display name or email, which matches the tool name. However, it does not explicitly differentiate from the sibling tool confluence_user_get, which might retrieve a single user by ID. The verb 'search' and the resource 'Confluence users' are 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes parameter behavior (limit of 0 returns all matches, default 25) and a reference to a CLI command, but it does not provide guidance on when to use this tool versus alternatives like confluence_user_get or jira_user_search. No 'when to use' or 'when not to use' context is given.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Atlassian `accountId` of the user. Defaults to the authenticated user. | |
| content_id | Yes | Confluence page (content) ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Atlassian `accountId` of the user. Defaults to the authenticated user. | |
| content_id | Yes | Confluence page (content) ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Atlassian `accountId` of the user. Defaults to the authenticated user. | |
| content_id | Yes | Confluence page (content) ID. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Confluence page ID. | |
| format | No | Format of `content`: `"jfm"` (default markdown) or `"adf"` (raw ADF JSON). | |
| content | No | New 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_run | No | When true, validate and return the would-be request (method, path, body) without updating the page. Defaults to `false`. | |
| content_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Rendered output format. Defaults to `markdown`. | |
| report | Yes | Head coverage report path (lcov / llvm-cov-json / cobertura). Required. | |
| run_url | No | Link to the CI run (markdown footer). | |
| base_ref | No | Base revision to diff against (default: merge-base of `origin/main` and `HEAD`). | |
| base_sha | No | Base (merge-base) commit SHA shown in the markdown `Comparing` line. | |
| head_ref | No | Head revision the report was measured at (default: `HEAD`). | |
| head_sha | No | Head commit SHA shown in the markdown `Comparing` line. | |
| all_files | No | Report per-file deltas and indirect changes for ALL files, not just the ones the diff touches. | |
| repo_path | No | Path to the git repository. Defaults to the current working directory. | |
| commit_url | No | Commit-URL prefix for linking SHAs. | |
| artifact_url | No | Link to the full coverage-summary artifact (markdown footer). | |
| strip_prefix | No | Override the path prefix stripped from report paths to make them repo-relative (default: the repository working directory). | |
| report_format | No | Format of `report` (auto-detected by default). | |
| baseline_report | No | Optional baseline coverage report path; enables project deltas and indirect-change detection. | |
| collapse_ranges | No | Collapse consecutive uncovered new lines into ranges (e.g. `9-11`). | |
| fail_under_patch | No | Report a below-gate result when patch coverage is below this percentage (the tool never fails the call; it reports `below_gate` instead). | |
| ignore_filename_regex | No | Exclude 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_format | No | Format of `baseline_report` (auto-detected by default). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dashboard_id | Yes | Datadog dashboard identifier (e.g. `abc-def-ghi`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_shared | No | `true` returns only shared dashboards; `false` returns only non-shared ones; omit (the default) to return all. Optional. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| active_only | No | When `true`, restricts results to currently-active downtimes. Defaults to `false` (include past and future downtimes too). Optional. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of the time range, same formats as `from`. Defaults to `now`. | |
| from | No | Start of the time range. Accepts relative shorthand (`15m`, `1h`), `now`, RFC 3339, or Unix epoch seconds. Defaults to `1h`. | |
| tags | No | Comma-separated list of `key:value` tags, e.g. `env:prod,team:sre`. Optional. | |
| limit | No | Maximum 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. | |
| filter | No | Datadog events query (e.g. `service:api`). Optional; omit to match all events in the window. | |
| sources | No | Comma-separated list of source names, e.g. `github,nagios`. Optional. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Cutoff in Unix epoch seconds (e.g. `1700000000`); hosts last reporting before this are excluded. Optional. | |
| limit | No | Maximum hosts to return. `0` (or omitted) auto-paginates up to 10000. | |
| filter | No | Datadog hosts filter (e.g. `env:prod`). Optional; omit for all hosts. |
TDQS
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.
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.
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.
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.
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.
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_logs_searchA
Search Datadog log events with a logs query (e.g. service:api status:error) over a time range (default last 15m). For the event/alert stream rather than logs, use datadog_events_list. 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). sort is timestamp-asc or timestamp-desc (default). Read-only. Mirrors omni-dev datadog logs search. Output is YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of the time range. Defaults to `now` when omitted. | |
| from | No | Start of the time range. Accepts relative shorthand (`15m`, `1h`), `now`, RFC 3339, or Unix epoch seconds. Defaults to `15m` when omitted. | |
| sort | No | Sort order: `"timestamp-asc"` (oldest first) or `"timestamp-desc"` (newest first; default). | |
| limit | No | Maximum 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. | |
| filter | Yes | Datadog logs query, e.g. `service:api status:error`. Required; use `*` to match all logs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully covers behavioral traits: read-only nature, pagination behavior (limit 0 auto-paginates up to 10000, non-zero caps total), sort order, output format (YAML), and default time range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is three sentences, each adding value. Front-loaded with main purpose, then details. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, 1 required, no output schema, description covers all necessary behavioral aspects: pagination, sort options, time range defaults, query format, output format, and sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions, but description adds example query, explains default time range behavior, sort values, and limit behavior in detail beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches Datadog log events with a logs query over a time range. It distinguishes from sibling tool datadog_events_list by specifying that tool is for event/alert streams, not logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use the alternative tool (datadog_events_list) for event/alert streams. Also explains default time range and pagination behavior, though could be more explicit about prerequisites.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Cutoff in Unix epoch seconds (e.g. `1700000000`); only metrics ingested since this timestamp are returned. Optional. | |
| host | No | Filter by host (e.g. `web-01`). Optional; omit for all hosts. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of the query window. Defaults to `now` when omitted. | |
| from | Yes | Start of the query window. Accepts relative shorthand (`15m`, `1h`, `7d`), the literal `now`, an RFC 3339 timestamp with timezone, or Unix epoch seconds. | |
| query | Yes | Datadog metrics query string, e.g. `avg:system.cpu.user{*}` or `sum:trace.http.request.hits{service:api}.as_rate()`. Required. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Datadog monitor identifier (numeric, e.g. `12345`). Required. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Substring match on the monitor name, e.g. `cpu`. Optional; omit to match all names. | |
| tags | No | Comma-separated `key:value` tags on the monitored *scope* (the `tags` API filter), e.g. `env:prod,team:sre`. Optional. | |
| limit | No | Maximum monitors to return. `0` (or omitted) means "fetch every match", capped at 10000. | |
| monitor_tags | No | Comma-separated `key:value` tags on the *monitor object itself* (the `monitor_tags` API filter), e.g. `service:api`. Distinct from `tags` above. Optional. |
TDQS
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.
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.
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.
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.
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.
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_monitor_searchA
Free-text / faceted search across Datadog monitors (e.g. status:alert, type:metric tag:team:sre). Prefer this over datadog_monitor_list when filtering by status/facets rather than just name/tags; the response is a search envelope (monitors + paging metadata) rather than a plain array. limit of 0 (or omitted) auto-paginates up to 10000. Read-only. Mirrors omni-dev datadog monitor search. Output is YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum monitors to return. `0` (or omitted) means "fetch every match", capped at 10000. | |
| query | Yes | Free-text / faceted search query, e.g. `status:alert`, `type:metric tag:team:sre`. Required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses read-only nature, auto-pagination behavior (limit 0 fetches up to 10000), response envelope structure (monitors + paging metadata), and output format (YAML). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding distinct value: purpose, differentiation, and pagination/format details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers query syntax, limit semantics, output structure, and sibling comparison. No output schema but description adequately describes return format. Could mention any required permissions or rate limits, but overall complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions. The description adds extra nuance: '`limit` of 0 (or omitted) auto-paginates up to 10000', which clarifies default behavior beyond the schema's 'Maximum monitors to return'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'Free-text / faceted search across Datadog monitors' with concrete query examples (e.g., `status:alert`). It clearly distinguishes the tool from `datadog_monitor_list` by contrasting filtering by status/facets vs. name/tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Prefer this over `datadog_monitor_list` when filtering by status/facets rather than just name/tags'. Also notes response format difference (search envelope vs. plain array).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slo_id | Yes | Datadog SLO identifier (string, e.g. `abc123def456`). Required. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Comma-separated list of SLO ids, e.g. `abc123,def456`. Optional. | |
| tags | No | Comma-separated `key:value` tags applied to the SLO, e.g. `team:sre,env:prod`. Optional. | |
| limit | No | Maximum SLOs to return. `0` (or omitted) means "fetch every match", capped at 10000. | |
| query | No | Free-text query matched against SLO name/description, e.g. `checkout latency`. Optional. | |
| metrics_query | No | Comma-separated list of metric names referenced by the SLO, e.g. `aws.elb.healthy_host_count`. Optional. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Selects 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to scan. Defaults to 50 when omitted; `0` explicitly means scan every match up to the hard cap (10000). | |
| query | Yes | Drive query, same syntax as `drive search`'s query argument (e.g. `'<folder-id>' in parents` to dedupe within one folder). Required. | |
| account | No | Selects 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | `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. | |
| verify | No | Only 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. | |
| account | No | Selects 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_id | Yes | Drive file id (from `drive_search`, or the `id` segment of a Drive URL). Required. | |
| output_file | No | Only 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_type | No | Export 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
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.
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.
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.
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.
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.
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.
drive_searchA
Search Drive files with a Drive query (same syntax as drive search's query argument, e.g. name contains 'report' and mimeType = 'application/pdf'). Returns id/name/mimeType/size/md5Checksum/sha1Checksum/sha256Checksum/modifiedTime/parents/webViewLink/owners per hit — files.list returns full metadata in one call, so there's no separate hydration step. Checksum fields are present only for binary-content files (absent for folders and Google-native docs). Always searches shared drives too. limit defaults to 50 when omitted; pass 0 explicitly to auto-paginate up to a hard cap (10000). Read-only. Mirrors omni-dev drive search. Output is YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results. Defaults to 50 when omitted; `0` explicitly means fetch every match up to the hard cap (10000). | |
| query | Yes | Drive query, same syntax as `drive search`'s query argument (e.g. `name contains 'report' and mimeType = 'application/pdf'`). Required. | |
| account | No | Selects 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden — and it delivers. It surfaces significant non-obvious behaviors: no extra hydration step, checksum fields present only for binary files (absent for folders/docs), always-includes-shared-drives, limit defaulting to 50, 0 meaning auto-paginate with a hard cap of 10000, explicit read-only marking, and YAML output format. Exceptionally transparent for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but justified — the description front-loads the core purpose and query syntax first, then layers behavior, edge cases, and output format. Every sentence carries information; there's no filler. It slightly loses a point for density and a run-on feel ('pass `0` explicitly' plus multiple parentheticals), but it remains appropriately scaled for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 params, 100% schema coverage, no annotations, and no output schema, this description covers all ground any agent needs: return fields, pagination semantics, edge cases (checksum absence on folders), shared drive behavior, read-only safety, and output rendering. Nothing an agent needs to correctly invoke the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, keeping the baseline at 3, but the description adds meaning beyond the schema: it explains the return implications of the query parameter (same syntax as `drive search`), reinforces the limit=0 pagination edge case, and contextualizes the account parameter by implying multi-account resolution. Genuine incremental value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Search Drive files with a Drive query') and immediately anchors it to a known CLI ('same syntax as `drive search`'). The scope is further sharpened by listing the exact fields returned and tying it to the established `omni-dev drive search` command, leaving 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly maintains usage by explicitly naming the CLI it mirrors and, implicitly, the sibling-free purpose. It centralizes key behaviors that help an agent decide when to use this tool: 'full metadata in one call' and 'no separate hydration step' justify using it over a generic search, and the 'Always searches shared drives too' caveat sets expectations. Lacks a fully explicit 'use X instead when' exclusion, 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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | No | Path to the git repository. Defaults to the current working directory. | |
| allow_pushed | No | When 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_yaml | Yes | Amendments 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Base branch to compare against, e.g. `main` or `develop`. When omitted, resolved remote-first: `origin/main`, `origin/master`, local `main`, then local `master`. | |
| repo_path | No | Path to the git repository. Defaults to the current working directory. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted. | |
| range | Yes | Commit 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". | |
| strict | No | When true, warnings are treated as non-zero exit conditions. Defaults to `false` (only errors fail). | |
| repo_path | No | Path to the git repository. Defaults to the current working directory. | |
| guidelines_path | No | Optional explicit path to the guidelines file. When omitted the tool falls back to `.omni-dev/commit-guidelines.md` via the standard resolution chain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted. | |
| repo_path | No | Path to the git repository. Defaults to the current working directory. | |
| base_branch | No | Base branch the PR would merge into, e.g. `main` or `develop`. Defaults to the primary remote's main branch when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Commit 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`). | |
| strict | No | When true, warnings are treated as non-zero exit conditions. Defaults to `false` (only errors fail). | |
| message | No | Lint 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. | |
| suggest | No | When 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_path | No | Path to the git repository. Defaults to the current working directory. Ignored when `message` is set. | |
| context_dir | No | Optional explicit context directory (overrides the standard `.omni-dev/` resolution chain for both `scopes.yaml` and `commit-rules.yaml`). |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Claude 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_ai | No | When 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_path | No | Path to the git repository. Defaults to the current working directory. | |
| print_only | No | When 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Claude model override (e.g. `claude-sonnet-4-6`). Defaults to the model from settings, then the built-in default, when omitted. | |
| range | No | Commit range to twiddle (e.g., `HEAD~3..HEAD`, `abc123..def456`). Defaults to `HEAD~5..HEAD` when omitted. | |
| dry_run | No | When 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_path | No | Path to the git repository. Defaults to the current working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Commit range to analyze (e.g., `HEAD~3..HEAD`, `abc123..def456`). Defaults to `HEAD` when omitted. | |
| repo_path | No | Path to the git repository. Must be absolute when provided. Defaults to the current working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Selects 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Selects 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | `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. | |
| account | No | Selects 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_id | Yes | Gmail message id. Required. | |
| output_file | No | When 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
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.
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.
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.
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.
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.
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_searchA
Search Gmail messages with a Gmail query (same syntax as the Gmail search box, e.g. label:finance after:2026/01/01). Returns only id/threadId per hit by default (ids-only, quota-safe). Set enrich: true to add From/Subject/Date/snippet — this costs one extra messages.get request per hit, bounded by concurrency (default 4). limit defaults to 50 when omitted; pass 0 explicitly to auto-paginate up to a hard cap (10000) — expensive combined with enrich: true, use deliberately. Read-only. Mirrors omni-dev gmail search. Output is YAML.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results. Defaults to 50 when omitted; `0` explicitly means fetch every match up to the hard cap (10000). | |
| query | Yes | Gmail search query, same syntax as the Gmail search box (e.g. `label:finance after:2026/01/01`). Required. | |
| enrich | No | When `true`, enrich each hit with From/Subject/Date/snippet via one extra `messages.get` request per hit. Defaults to `false` (ids-only, the quota-safe default — `messages.get` costs 5 units against Gmail's 250 units/user/second budget). | |
| account | No | Selects 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. | |
| concurrency | No | Bounds concurrent `messages.get` calls when `enrich` is true (has no effect otherwise). Defaults to 4, clamped to 1-50 regardless of what is requested — Gmail's quota is 250 units/user/second and `messages.get` costs 5 units, so a higher value could burst past it. |
TDQS
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 thoroughly: read-only status, default ids-only behavior, quota implications of enrich, concurrency bounds, pagination defaults, hard cap of 10000, and YAML output format. This is exemplary for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with no filler. Core action and query syntax are front-loaded, followed by return mode, enrichment cost, pagination, and output format. Every sentence adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex search tool with no output schema, the description is complete: it defines the input query, default and enriched return shapes, output format, pagination behavior, cost/performance tradeoffs, and safety profile. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces key semantics like limit defaulting to 50, the 0 auto-pagination behavior, enrich cost, and concurrency default, but most of this is already present in the schema. It adds marginal framing around quota-safety and deliberate usage but does not materially expand on the parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: search Gmail messages using Gmail query syntax. It distinguishes itself from message/thread read tools by emphasizing the query/list nature and the default ids-only return, though it doesn't explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is strongly implied: this is the tool for searching Gmail inboxes with Gmail query syntax, and it explains when to enable enrich. However, it never explicitly contrasts with alternatives like gmail_message_read or says when not to use this tool, so the guidance is mostly implicit rather than explicit.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Selects 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_id | Yes | Gmail thread id. Required. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to `true` — destructive guard. | |
| attachment_id | Yes | Attachment ID to delete. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| filter | No | Case-insensitive filename substring filter. | |
| output_dir | No | Output 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| output_dir | No | Output directory. Defaults to a fresh temp directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| file_paths | Yes | Local 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | No | Optional JQL to further filter issues. | |
| limit | No | Maximum number of issues to return. `0` means unlimited (default 50). | |
| board_id | Yes | Board ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of boards to return. `0` means unlimited (default 50). | |
| project | No | Filter by project key. | |
| board_type | No | Filter by board type (e.g., `scrum`, `kanban`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Dependency links to create after the issues. Each endpoint is resolved alias-first (to the freshly-minted key), else treated as an existing issue key. | |
| issues | Yes | Issues to create, in order. May be empty to only create `links` between existing issues. | |
| fail_fast | No | When 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| limit | No | Maximum number of entries to return. `0` means unlimited (default 50). |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| body | No | Comment body (JFM markdown — see resource `omni-dev://specs/jfm`). Required for `action = "add"`. Mutually exclusive with `body_path`. | |
| limit | No | Maximum number of comments to return. `0` means unlimited. | |
| action | Yes | `list` to fetch comments; `add` to post a new one. | |
| body_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| confirm | No | Must be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`. | |
| comment_id | Yes | Comment ID to delete (from `jira_comment` with `action = "list"`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| body | No | New comment body (JFM markdown — see resource `omni-dev://specs/jfm`). Mutually exclusive with `body_path`; exactly one is required. | |
| body_path | No | Filesystem 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_id | Yes | Comment ID to update. | |
| visibility | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Component name. | |
| project | Yes | Project key (e.g., `PROJ`). | |
| description | No | Component description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`. | |
| component_id | Yes | Component ID (from `jira_component_list`). | |
| move_issues_to | No | Reassign issues referencing this component to this component id before deleting (otherwise the references are dropped). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project key (e.g., `PROJ`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. Omit to leave unchanged. | |
| description | No | New description. Omit to leave unchanged. | |
| component_id | Yes | Component ID (from `jira_component_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, validate and return the would-be request (method, path, body) without creating the issue. Defaults to `false`. | |
| project | No | Project key (e.g., `PROJ`). Required unless `document` carries a `project:` (or a `key:` it can be derived from). Overrides frontmatter. | |
| summary | No | Issue summary / title. Required unless `document` carries one. Overrides frontmatter. | |
| document | No | Full 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_type | No | Issue type (defaults to `Task`). Overrides frontmatter. | |
| description | No | Optional 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_fields | No | Custom 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_path | No | Filesystem 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_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key to delete (e.g., `PROJ-123`). | |
| confirm | Yes | Must be set to `true` — destructive guard. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| fields | Yes | Map 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_run | No | When true, resolve and return the would-be request (method, path, body) without updating the issue. Defaults to `false`. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Filter to fields whose name contains this substring (case-insensitive). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes | Field ID (e.g., `customfield_10001`). | |
| context_id | No | Optional context ID. When omitted, the first context is auto-discovered. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| labels | Yes | Labels to add or remove. JIRA labels cannot contain spaces. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| labels | Yes | Labels to add or remove. JIRA labels cannot contain spaces. |
TDQS
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.
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.
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.
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.
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.
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_link_createA
Create a typed link between two JIRA issues (e.g. Blocks, Relates). link_type is the type name (list options with jira_link_types); inward is the source issue and outward the target. To set hierarchy (Epic → Story / Story → Sub-task) use jira_link_parent instead. Returns YAML {status: ok}. Set dry_run: true to preview the request that would be sent (method, path, body) without creating the link. Mirrors omni-dev atlassian jira link create.
| Name | Required | Description | Default |
|---|---|---|---|
| inward | Yes | Source (inward) issue key — e.g. for `Blocks`, the issue doing the blocking. | |
| dry_run | No | When true, validate and return the would-be request (method, path, body) without creating the link. Defaults to `false`. | |
| outward | Yes | Target (outward) issue key — e.g. for `Blocks`, the issue being blocked. | |
| link_type | Yes | Link type name, e.g. `Blocks` (use `jira_link_types` to list options). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the return format (`YAML {status: ok}`) and the safe dry-run behavior that previews the request without side effects. It also references the CLI equivalent for additional context. It doesn't mention permissions or failure modes, but the dry-run option adds a strong safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six sentences, all functional: purpose, parameter guidance, alternative tool, return format, dry-run behavior, and CLI mirror. Front-loaded with the action, no repeated or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, parameter semantics (via schema + description), return type, and a dry-run option for risk-free validation. It also names the correct sibling for hierarchy. Minor omissions like error conditions, but for a simple create tool with good annotations in the schema, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the descriptions already explain each parameter. The tool description restates the source/target semantics and points to `jira_link_types` (which the schema also does), adding no new meaning beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific action 'Create a typed link between two JIRA issues' and provides concrete examples (`Blocks`, `Relates`). It also distinguishes from the sibling `jira_link_parent` by specifying that hierarchy links should use that tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when NOT to use this tool ('To set hierarchy ... use `jira_link_parent` instead') and advises using `jira_link_types` to list valid link type names. This clearly sets context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_link_listA
List inward and outward links on a JIRA issue. Returns YAML with one entry per link (id, link_type, direction, linked_issue_key, linked_issue_summary). Mirrors omni-dev atlassian jira link list.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It explicitly states the return format (YAML with specific fields) and that both inward and outward links are included, which goes beyond a simple 'list links' description. It also references a CLI command for additional familiarity, but does not mention error handling or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. The first sentence states the action, and the second provides output format and CLI reference. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool with no annotations and no output schema, the description is remarkably complete: it states what it does, the direction scope, and the exact YAML fields returned. This effectively serves as an implicit output schema, so the description is self-contained for most usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single `key` parameter with an example, and the description does not add any additional parameter-specific information. The schema coverage is 100%, so no compensation is needed; baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource 'inward and outward links on a JIRA issue', which clearly distinguishes it from sibling tools like jira_link_create, jira_link_remove, and jira_link_types. The scope 'inward and outward' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for listing links on a JIRA issue, giving clear context for when to use it. However, it does not explicitly mention alternatives or when-not-to-use, though the name and sibling set (e.g., jira_link_create, jira_link_remove) imply those are for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_link_parentA
Set a JIRA issue's parent — the system parent field for Epic → Story / Story → Sub-task hierarchy, distinct from the relationship links created by jira_link_create. parent is the parent issue key (e.g. the epic); child is the issue placed under it. Returns YAML {status: ok}. Set dry_run: true to preview the request that would be sent (method, path, body) without setting the parent. Mirrors omni-dev atlassian jira link parent.
| Name | Required | Description | Default |
|---|---|---|---|
| child | Yes | Child issue key to place under the parent. | |
| parent | Yes | Parent issue key (e.g. the epic). | |
| dry_run | No | When true, validate and return the would-be request (method, path, body) without setting the parent. Defaults to `false`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the tool sets the parent field, returns YAML `{status: ok}`, and supports a `dry_run` mode that previews the request without setting the parent. It does not mention whether it overwrites an existing parent or any authorization requirements, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with each sentence serving a distinct purpose: stating the action, distinguishing from siblings, explaining parameters, noting the return format, describing dry_run, and mapping to a CLI command. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return value (YAML status), the dry_run behavior, and the hierarchy context, which is sufficient given the simplicity of the tool. It lacks details on error handling or effects on existing parents, but overall it is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description rephrases the parent/child meaning ('parent is the parent issue key (e.g. the epic); child is the issue placed under it') which adds minor context about hierarchy, but does not provide significant new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Set a JIRA issue's parent'. It clearly distinguishes the tool from `jira_link_create` by stating it's for the system `parent` field in Epic → Story / Story → Sub-task hierarchy, making the purpose unambiguous and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this tool is 'distinct from the relationship links created by `jira_link_create`', giving a clear contrast. It also explains the hierarchy context (Epic → Story / Story → Sub-task) and provides a dry-run preview option, so the agent knows when to use it and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_link_remote_createA
Add a remote (external URL) link to a JIRA issue — pointing out to a non-JIRA resource. url and title are required; summary, relationship, and global_id are optional (reusing an existing global_id updates that link instead of duplicating it). Returns YAML {status: ok, id}. Set dry_run: true to preview the request without creating it. Mirrors omni-dev atlassian jira link remote create.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| url | Yes | External URL to link to. | |
| title | Yes | Link title (display text). | |
| dry_run | No | When true, validate and return the would-be request without creating the link. Defaults to `false`. | |
| summary | No | Optional summary shown under the title. | |
| global_id | No | Optional global id — reusing an existing one updates that link rather than creating a duplicate. | |
| relationship | No | Optional relationship label (e.g., `relates to`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses parameter requiredness (though omitting key), the update behavior when reusing global_id, the return format, and dry_run semantics. It lacks explicit mention of error cases or required authentication, preventing a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences, front-loaded with the core purpose, then flows into required/optional params, return format, dry_run, and a CLI mirror reference. No filler; every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema and no annotations, the description covers key operational aspects: purpose, required/optional params, global_id update behavior, return format, and dry_run. It is slightly incomplete because it does not explicitly mention that `key` is required and does not discuss error/edge-case behavior, but the schema fills most remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining behavioral nuances: global_id reuse updates rather than duplicates, and dry_run previews the request. These go beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add a remote (external URL) link to a JIRA issue — pointing out to a non-JIRA resource.' This specifies a verb, resource, and scope, and distinguishes it from sibling tools like jira_link_create (likely for internal links) and jira_link_remote_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (for linking to non-JIRA resources) and introduces the dry_run flag for previewing requests. However, it does not explicitly contrast with alternatives like jira_link_create or provide when-not-to-use guidance, stopping short of a full exclusion statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_link_remote_deleteA
Delete a remote (external URL) link from a JIRA issue (by key + link_id from jira_link_remote_list). Irreversible: pass confirm: true to authorise — without it the tool refuses and makes no API call. Set dry_run: true to preview the request without deleting (and without requiring confirm). Returns YAML {status: ok}. Mirrors omni-dev atlassian jira link remote delete.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| confirm | Yes | Must be `true` — destructive guard. | |
| dry_run | No | When true, preview the request without deleting (and without requiring `confirm`). Defaults to `false`. | |
| link_id | Yes | Remote link ID to delete (from `jira_link_remote_list`). |
TDQS
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 that the operation is irreversible, that the tool refuses to make an API call without `confirm: true`, that `dry_run: true` previews without deleting and does not require confirmation, and that it returns YAML `{status: ok}`. This is excellent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, but every sentence carries essential information: the resource and what it deletes, the confirm guard, the dry-run capability, the return format, and a CLI mirror reference. It is front-loaded with the main action and flows logically to important constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a destructive tool with no output schema and no annotations, the description covers all key aspects: what it deletes, how to authorize, how to preview, where the ID comes from, and what to expect as output. It is sufficiently complete 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.
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 meaningful context by indicating `link_id` comes from `jira_link_remote_list`, explaining that `confirm` authorizes the deletion (or the tool refuses), and noting `dry_run` avoids requiring confirm. These details go beyond the bare schema descriptions without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource combination: 'Delete a remote (external URL) link from a JIRA issue'. It clearly differentiates from sibling tools like jira_link_remove (which handles non-remote links) by emphasizing 'remote' and referencing the source command `jira_link_remote_list` for obtaining the ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains the required `confirm: true` guard and the `dry_run: true` preview option, providing clear context on when and how to use them. It also tells the user that `link_id` comes from `jira_link_remote_list`. However, it does not explicitly state when to prefer this over alternatives (e.g., `jira_link_remove`), so it stops short of the full '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.
jira_link_remote_listA
List remote (external URL) links on a JIRA issue — links pointing out to non-JIRA resources (Confluence pages, Bitbucket PRs, external trackers). Read-only. Returns YAML with one entry per remote link (id, optional global_id, optional relationship, object.{url, title, summary, icon}). Mirrors omni-dev atlassian jira link remote list.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only' and details the YAML return structure (fields like id, global_id, relationship, object.{url,title,summary,icon}). This provides substantial behavioral context beyond the bare schema. Lacks only minor details like pagination or error behavior, which are not critical for this simple listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first fronts the main purpose and scope, the second adds return format and an equivalence note. Every word earns its place, with no filler or repetition. It's concise, scannable, and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, no-output-schema tool, the description covers the key aspects: what kind of links are listed, the read-only nature, and the exact YAML shape. It's sufficient for an agent to invoke correctly. Slight gap: no explicit statement about behavior when there are no remote links or on error, but that's minor for this use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a description for the single 'key' parameter (100% coverage), so baseline is 3. The description does not add any extra parameter-level meaning beyond what the schema already states. No compensation needed because the schema already documents the parameter clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('remote (external URL) links on a JIRA issue'), and distinguishes itself from sibling tools by specifying 'links pointing out to non-JIRA resources' (e.g., Confluence pages, Bitbucket PRs). This is a specific verb+resource pairing with clear scope, differentiating it from jira_link_list and other link-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: when you need to see external URL links on a JIRA issue, not internal JIRA links. It doesn't explicitly name alternatives or state when-not-to-use, but the scope is well-defined and the read-only nature helps guide selection. A 5 would require explicit exclusions or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_link_removeA
Remove a JIRA issue link by its link ID (use jira_link_list or jira_read to discover IDs). Destructive operation: callers must explicitly pass confirm: true for the removal to proceed; otherwise the tool refuses with an error. Returns YAML {status: ok}. Set dry_run: true to preview the request that would be sent (method, path) without removing the link — no confirm needed for a dry-run. Mirrors omni-dev atlassian jira link remove.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to `true` — destructive guard. | |
| dry_run | No | When true, validate and return the would-be request (method, path) without removing the link (and without requiring `confirm`). Defaults to `false`. | |
| link_id | Yes | Link ID to remove (returned by `jira_link_list`). |
TDQS
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 an excellent job. It explicitly labels the operation 'Destructive', mandates the `confirm: true` guard, explains that otherwise the tool refuses with an error, and details the dry_run behavior requiring no confirm. It also discloses the return format (YAML `{status: ok}`), going well 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earn its place: purpose, destructive guard, return value, dry_run behavior, and CLI mirror. It is front-loaded with the core action and contains zero filler, making it compact yet information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity, full schema coverage, and absence of an output schema, the description fully equips an agent: it covers the destructive nature, the confirm requirement, dry_run semantics, and return format. It even provides a CLI mirror for additional context, making it complete without needing to elaborate on edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description still adds value by explaining the relationship between link_id and the discovery tools, and by restating the confirm/dry_run semantics in a way that ties them to the tool's behavior. The baseline is 3 due to full schema coverage, and the extra cross-referencing justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Remove a JIRA issue link by its link ID', clearly distinguishing it from sibling tools like jira_link_create or jira_link_list. It also names the discovery tools (jira_link_list, jira_read) to find the link ID, reinforcing the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool: when you have a link ID and want to remove it. It also instructs callers to use jira_link_list or jira_read to discover IDs, and explains the dry_run option for previewing without removal. However, it does not explicitly mention alternatives like jira_link_create or when not to use this tool, 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_link_typesA
List the configured JIRA issue link-type catalogue (id, name, inward, outward). Global per JIRA instance — returns the configured types, not the ones used in any particular issue. Returns YAML. Mirrors omni-dev atlassian jira link types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states that the tool returns YAML, lists the catalog keys, and emphasizes the global scope. However, it does not mention authentication requirements, potential errors, or idempotency, though as a simple read-only list these omissions are minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence states the core purpose, the second clarifies scope, and the third mentions the YAML output and CLI mirror. Every sentence adds useful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only listing tool with no output schema, the description is complete: it names the resource, the return format, the fields, and the scope. It gives an agent enough to decide when to invoke it and what to expect, especially given the accessible sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds meaningful context by specifying the structure of the return value (id, name, inward, outward) and the YAML format, going beyond the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('JIRA issue link-type catalogue') with the fields returned (id, name, inward, outward). It also explicitly distinguishes this from per-issue link tools by noting it returns configured types, not issue-specific ones, which differentiates it from sibling tools like jira_link_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the tool's global scope ('Global per JIRA instance') and clarifies what it does not return ('not the ones used in any particular issue'). This provides practical context for when to use it, though it does not explicitly name alternative tools or state exclusions beyond the global/per-issue distinction.
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_list→jira_field_options recovery loop into a single pre-flight call. Returns YAML. Mirrors omni-dev atlassian jira project create-meta.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project key (e.g., `PROJ`). | |
| issue_type | Yes | Issue type name (e.g., `Task`, `Bug`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of projects to return. `0` means unlimited (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| format | No | Output format — `jfm` (default) returns JFM markdown with YAML frontmatter; `adf` returns the raw ADF description payload as JSON. | |
| output_file | No | When 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
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.
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.
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.
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.
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.
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_searchA
Search JIRA issues using a JQL query (e.g. project = PROJ AND status = Open ORDER BY created DESC; dates are YYYY-MM-DD). Returns matching issues as YAML. Provide either a raw jql string, or the convenience filters project / assignee / status (ANDed together) — at least one is required. limit defaults to 20; pass 0 for unlimited. To list issues on a board or sprint instead, use jira_board_issues / jira_sprint_issues.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | No | Raw JQL query string (e.g., `project = PROJ AND status = Open`). When provided it is used verbatim and the convenience filters below are ignored. Optional — supply either `jql` or at least one filter. | |
| limit | No | Maximum number of results. Defaults to 20; `0` means unlimited. | |
| fields | No | Additional fields to request (informational; standard fields are always returned). | |
| status | No | Convenience filter: status name. ANDed with the other filters when `jql` is not provided. | |
| project | No | Convenience filter: project key. ANDed with the other filters when `jql` is not provided. | |
| assignee | No | Convenience filter: assignee (display name or email). ANDed with the other filters when `jql` is not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that results are in YAML, the default limit is 20, and passing 0 gives unlimited results. It also explains that convenience filters are ANDed. However, it does not detail the structure of the returned YAML or any side effects, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main purpose, no redundant information. Every sentence adds value, and the structure is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no output schema, the description covers input behavior well. It mentions the output format (YAML) and references sibling tools. However, it could be slightly improved by specifying the structure of the YAML response or handling of pagination, but it is sufficient for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds significant value beyond schema: explains the AND logic of convenience filters, the override behavior when jql is provided, the default limit, and the date format. It also provides an example JQL query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Search', resource 'JIRA issues', and method 'using a JQL query'. It also distinguishes itself from sibling tools by naming jira_board_issues and jira_sprint_issues as alternatives for listing issues on a board or sprint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use the tool (searching issues via JQL or convenience filters) and when not to (listing issues on a board or sprint), providing alternative tool names. Also states that at least one filter is required.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sprint_id | Yes | Sprint ID. | |
| issue_keys | Yes | Issue keys to add to the sprint. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Sprint goal. | |
| name | Yes | Sprint name. | |
| board_id | Yes | Origin board ID. | |
| end_date | No | ISO 8601 end date. | |
| start_date | No | ISO 8601 start date. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`. | |
| sprint_id | Yes | Sprint ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | No | Optional JQL to further filter issues. | |
| limit | No | Maximum number of issues to return. `0` means unlimited (default 50). | |
| sprint_id | Yes | Sprint ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sprints to return. `0` means unlimited (default 50). | |
| state | No | Filter by state (`active`, `future`, `closed`). | |
| board_id | Yes | Board ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | New goal. | |
| name | No | New sprint name. | |
| state | No | New sprint state (`future`, `active`, `closed`). | |
| end_date | No | New end date. | |
| sprint_id | Yes | Sprint ID. | |
| start_date | No | New start date. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| list | No | If true, returns the available transitions without applying one. | |
| comment | No | Optional 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. | |
| resolution | No | Optional resolution to set on the transition, e.g. `"Fixed"`. Sent as `{"name": ...}`; the transition screen must accept a resolution. | |
| transition | No | Transition name (case-insensitive) or numeric id, e.g. `"In Progress"` or `"31"`. Required unless `list` is true. | |
| custom_fields | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_ids | Yes | One or more Atlassian account IDs to resolve (e.g. `557058:00ce7e71-9edc-47da-a0c6-f796533ae2cd`). |
TDQS
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.
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.
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.
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.
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.
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_user_searchA
Search JIRA users by display-name or email substring. Returns matches as YAML — each entry includes account_id, display_name, email_address (often redacted by GDPR), active, and account_type. Use the returned account_id as input to jira_write's assignee or reporter parameter. limit defaults to 25; pass 0 for unlimited. Atlassian matches substrings on display name and email — try a shorter or alternate spelling if the first attempt returns nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (`0` = unlimited). Defaults to 25. | |
| query | Yes | Search text — matched against display name and email substrings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description discloses return format (YAML with fields), GDPR redaction of email, substring matching behavior, and limit defaults (0 for unlimited). Good behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with main action, no fluff. Could be slightly more structured, but concise and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 2 params and no output schema, description covers all necessary context: search behavior, return fields, usage example, and limit details. Complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters (100% coverage). Description adds value by explaining substring matching, GDPR redaction, and limit behavior beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches JIRA users by display-name or email substring, with specific verb and resource. Distinguishes from sibling tools like jira_user_get and jira_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance to use returned account_id as input to jira_write assignee/reporter. Tips about alternate spellings for better matches. Could be more explicit about when not to use, but overall helpful.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | Version ID (from `jira_version_list`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Version name (e.g., `1.0.0`). | |
| project | Yes | Project key (e.g., `PROJ`). | |
| archived | No | Whether the version is archived. Defaults to `false`. | |
| released | No | Whether the version is released. Defaults to `false`. | |
| start_date | No | Start date (ISO 8601, `YYYY-MM-DD`). Validated client-side. | |
| description | No | Version description. | |
| release_date | No | Release date (ISO 8601, `YYYY-MM-DD`). Validated client-side. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`. | |
| version_id | Yes | Version ID (from `jira_version_list`). | |
| move_fix_issues_to | No | Reassign the `fixVersion` of affected issues to this version id before deleting (otherwise the references are dropped). | |
| move_affected_issues_to | No | Reassign the `affectedVersion` of affected issues to this version id. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project key (e.g., `PROJ`). | |
| archived | No | Filter to only archived (`true`) or only non-archived (`false`) versions. Omit for both. | |
| released | No | Filter to only released (`true`) or only unreleased (`false`) versions. Omit for both. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | Version ID (from `jira_version_list`). | |
| release_date | No | Release date (ISO 8601, `YYYY-MM-DD`). Validated client-side. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New version name. | |
| version_id | Yes | Version ID (from `jira_version_list`). | |
| description | No | New description (optional). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| account_id | Yes | Atlassian `accountId` of the user (not a display name or email). Use `jira_user_search` to resolve a name or email to an `accountId`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| confirm | Yes | Must be set to `true` — destructive guard. | |
| account_id | Yes | Atlassian `accountId` of the user (not a display name or email). Use `jira_user_search` to resolve a name or email to an `accountId`. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| comment | No | Optional plain-text comment. | |
| started | No | ISO 8601 timestamp when the work started. | |
| time_spent | Yes | Time spent (e.g., `1h 30m`, `2d`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| confirm | No | Must be `true` to authorise the irreversible delete; the tool refuses (without calling the API) when `false`. | |
| worklog_id | Yes | Worklog ID to delete (from `jira_worklog_list`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| limit | No | Maximum number of worklogs to return. `0` means unlimited (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| comment | No | New plain-text comment. Omit to leave unchanged. | |
| started | No | New ISO 8601 start timestamp. Omit to leave unchanged. | |
| time_spent | No | New time spent (e.g., `1h 30m`, `2d`). Omit to leave unchanged. | |
| worklog_id | Yes | Worklog ID to update (from `jira_worklog_list`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | JIRA issue key (e.g., `PROJ-123`). | |
| fields | No | Additional `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. | |
| format | No | Content format — `jfm` (default) parses Markdown/JFM; `adf` accepts a raw ADF JSON document. | |
| content | No | New 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_run | No | When true, validate and return the would-be request (method, path, body) without updating the issue. Defaults to `false`. | |
| assignee | No | Assignee `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`. | |
| reporter | No | Reporter `accountId`. Same conventions as `assignee` (`""` clears, `"-1"` is JIRA automatic). | |
| content_path | No | Filesystem 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
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.
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.
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.
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.
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.
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.
log_searchA
Search the local omni-dev request log — every CLI/MCP invocation and the HTTP requests it issued — and return matching records as text. Read-only. Mirrors omni-dev log (the --follow tail has no MCP form). All filters are optional and AND-ed: since/until (30m/2h, a date, or an RFC3339 timestamp), method, status (200/5xx/4xx,5xx), service, command, url, grep (regex), fuzzy/query (mini-language), id. format is oneline (default), json (verbatim NDJSON), or full; limit keeps the most recent N.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Match this record `id` or `invocation_id` (pulls a run and its requests). | |
| url | No | Match a substring of the request URL. | |
| grep | No | Match a regular expression against the raw JSON line. | |
| fuzzy | No | Fuzzy tokens (substrings of the raw line); AND-ed together. | |
| limit | No | Show at most N (most recent) matching records. Unbounded when omitted. | |
| query | No | Query expressions (AND/OR/NOT, `field:value`, bare tokens); AND-ed. | |
| since | No | Lower time bound: a relative window (`30m`, `2h`, `1d`), a date (`2026-07-01`), or an RFC3339 timestamp. | |
| until | No | Upper time bound: same forms as `since` (a relative value means that long ago). Pair with `since` for a bounded window. | |
| format | No | Output rendering. Defaults to `oneline`. | |
| method | No | Match the HTTP method (case-insensitive), e.g. `GET`. | |
| status | No | Match the status: exact (`200`), class (`5xx`), or list (`4xx,5xx`). | |
| command | No | Match the resolved command-path prefix, e.g. `jira read`. | |
| service | No | Match the service tag, e.g. `jira`, `datadog`, `browser-bridge`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does so well: it declares 'Read-only', explains that all filters are optional and AND-ed, describes output formats (`oneline`, `json`, `full`), and defines `limit` as keeping the most recent N. It also discloses the absence of the `--follow` tail behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by a dense but efficient listing of filters and formats. No filler, every clause adds value, and the structure makes the long parameter list scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, no output schema, and no annotations, this description is remarkably complete. It covers the tool's read-only nature, all filter categories, output format options, limit behavior, and its relationship to the CLI. No significant gap remains for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful group-level semantics beyond individual schema entries: 'All filters are optional and AND-ed', shorthand for `since`/`until`, `status` pattern syntax, and calling `fuzzy`/`query` a 'mini-language'. This enriches understanding but is not exhaustive for all 13 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search the local omni-dev request log — every CLI/MCP invocation and the HTTP requests it issued — and return matching records as text.' This clearly defines scope and output, and distinguishes the tool from siblings by noting it mirrors the `omni-dev log` CLI.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is the MCP counterpart to `omni-dev log`, and notes the `--follow` tail has no MCP form, implying this tool cannot tail. While it does not explicitly name alternative tools, no sibling log-search tool exists, so the usage context is sufficiently clear.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | User of the session to evict. | |
| socket | No | Control-socket path override. Defaults to the per-user runtime location. | |
| account | Yes | Account of the session to evict. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL to execute. Required. | |
| role | No | Per-query role (`USE ROLE`). | |
| user | No | Authenticating user. Falls back to `SNOWFLAKE_USER` / settings.json. | |
| schema | No | Per-query schema (`USE SCHEMA`). | |
| socket | No | Control-socket path override. Defaults to the per-user runtime location. | |
| account | No | Target account. Falls back to `SNOWFLAKE_ACCOUNT` / settings.json. | |
| database | No | Per-query database (`USE DATABASE`). | |
| warehouse | No | Per-query warehouse (`USE WAREHOUSE`). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| socket | No | Control-socket path override. Defaults to the per-user runtime location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or bare 11-character video ID. | |
| auto | No | Allow falling through to auto-generated (ASR) captions when no manual track matches. Defaults to `false`. | |
| lang | No | Preferred caption language (e.g. `en`, `en-US`). Prefix fallback applies (`en` matches `en-US`). Defaults to `en`. | en |
| format | No | Output rendering. Defaults to `txt`. | |
| translate | No | Synthesise a translated track in this target language when no native track matches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or bare 11-character video ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or bare 11-character video ID. |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.43.0- Changed
jira_edit1 field changed- changed
Input schema / properties / fields / descriptionPrevious 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."
- Changed
jira_write1 field changed- changed
Input schema / properties / fields / descriptionPrevious 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."
13 tool updates
v0.41.0- Added
drive_account_list - Added
drive_auth_status - Added
drive_dedupe - Added
drive_file_read - Added
drive_search - Changed
git_lint_commits1 field changed- added
Input schema / properties / suggestAdded 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" +}
- Changed
git_staged_commit3 fields changed- changed
Input schema / properties / model / descriptionPrevious 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." - added
Input schema / properties / no_aiAdded 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" +} - changed
Input schema / properties / print_only / descriptionPrevious 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."
- Added
gmail_account_list - Added
gmail_auth_status - Added
gmail_label_list - Added
gmail_message_read - Added
gmail_search - Added
gmail_thread_read
54 tool updates
v0.40.0- Added
atlassian_auth_status - Added
claude_skills_clean - Added
claude_skills_status - Added
config_models_show - Added
confluence_attachment_delete - Added
confluence_attachment_update - Added
confluence_attachment_upload - Added
confluence_children - Added
confluence_comment_add_inline - Added
confluence_comment_audit - Added
confluence_watcher_add - Added
git_lint_commits - Added
jira_attachment_download - Added
jira_attachment_images - Added
jira_attachment_upload - Added
jira_board_issues - Added
jira_board_list - Added
jira_bulk_create - Added
jira_changelog - Added
jira_comment - Added
jira_component_create - Added
jira_component_list - Added
jira_create - Added
jira_delete - Added
jira_dev - Added
jira_edit - Added
jira_field_list - Added
jira_field_options - Added
jira_label_add - Added
jira_label_remove - Added
jira_link_create - Added
jira_link_list - Added
jira_link_parent - Added
jira_link_remote_create - Added
jira_link_remote_delete - Added
jira_link_remote_list - Added
jira_link_remove - Added
jira_link_types - Added
jira_project_create_meta - Added
jira_project_list - Added
jira_sprint_delete - Added
jira_sprint_list - Added
jira_transition - Added
jira_user_get - Added
jira_version_archive - Added
jira_version_release - Added
jira_worklog_delete - Added
jira_worklog_list - Added
jira_worklog_update - Added
log_search - Added
snowflake_disconnect - Added
snowflake_query - Added
transcript_youtube_fetch - Added
transcript_youtube_list_langs
53 tool updates
v0.39.0- Added
ai_chat - Added
claude_skills_sync - Removed
confluence_attachment_update - Removed
confluence_attachment_upload - Removed
confluence_comment_add_inline - Removed
confluence_comment_audit - Added
confluence_copy - Added
confluence_download - Added
confluence_label_add - Added
confluence_label_list - Added
confluence_label_remove - Removed
confluence_watcher_add - Added
datadog_dashboard_list - Added
datadog_metrics_catalog_list - Added
git_staged_commit - Removed
jira_attachment_download - Removed
jira_attachment_upload - Removed
jira_board_issues - Removed
jira_board_list - Removed
jira_bulk_create - Removed
jira_changelog - Removed
jira_comment - Removed
jira_component_create - Removed
jira_create - Removed
jira_delete - Removed
jira_dev - Removed
jira_link_remote_delete - Removed
jira_link_remote_list - Removed
jira_link_remove - Removed
jira_project_create_meta - Removed
jira_project_list - Added
jira_search - Added
jira_sprint_add - Added
jira_sprint_create - Added
jira_sprint_issues - Added
jira_sprint_update - Added
jira_transition_list - Removed
jira_user_get - Added
jira_user_search - Added
jira_version_create - Added
jira_version_delete - Added
jira_version_list - Added
jira_version_rename - Added
jira_watcher_add - Added
jira_watcher_list - Added
jira_worklog_add - Removed
jira_worklog_delete - Removed
jira_worklog_list - Removed
jira_worklog_update - Removed
log_search - Removed
snowflake_disconnect - Removed
snowflake_query - Removed
transcript_youtube_fetch
48 tool updates
v0.39.0- Removed
ai_chat - Removed
atlassian_auth_status - Removed
claude_skills_clean - Removed
claude_skills_status - Removed
claude_skills_sync - Removed
config_models_show - Removed
confluence_attachment_delete - Removed
confluence_children - Removed
confluence_copy - Removed
confluence_download - Removed
confluence_label_add - Removed
confluence_label_list - Removed
confluence_label_remove - Removed
datadog_dashboard_list - Removed
datadog_metrics_catalog_list - Removed
git_staged_commit - Removed
jira_attachment_images - Removed
jira_component_list - Removed
jira_edit - Removed
jira_field_list - Removed
jira_field_options - Removed
jira_label_add - Removed
jira_label_remove - Removed
jira_link_create - Removed
jira_link_list - Removed
jira_link_parent - Removed
jira_link_remote_create - Removed
jira_link_types - Removed
jira_search - Removed
jira_sprint_add - Removed
jira_sprint_create - Removed
jira_sprint_delete - Removed
jira_sprint_issues - Removed
jira_sprint_list - Removed
jira_sprint_update - Removed
jira_transition - Removed
jira_transition_list - Removed
jira_user_search - Removed
jira_version_archive - Removed
jira_version_create - Removed
jira_version_delete - Removed
jira_version_list - Removed
jira_version_release - Removed
jira_version_rename - Removed
jira_watcher_add - Removed
jira_watcher_list - Removed
jira_worklog_add - Removed
transcript_youtube_list_langs
28 tool updates
v0.36.0- Added
confluence_attachment_update - Added
confluence_comment_delete - Added
confluence_comment_edit - Added
confluence_comment_reopen - Added
confluence_comment_resolve - Added
confluence_copy - Added
confluence_restriction_get - Added
confluence_restriction_grant - Added
confluence_restriction_revoke - Added
confluence_watcher_add - Added
confluence_watcher_remove - Added
confluence_watcher_status - Added
jira_comment_delete - Added
jira_component_create - Added
jira_component_delete - Added
jira_component_list - Added
jira_component_update - Added
jira_label_add - Added
jira_label_remove - Added
jira_link_remote_create - Added
jira_link_remote_delete - Added
jira_sprint_delete - Added
jira_version_archive - Added
jira_version_delete - Added
jira_version_release - Added
jira_version_rename - Added
jira_worklog_delete - Added
jira_worklog_update
108 tool updates
v0.33.0- Changed
ai_chat2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for `ai_chat`." - removed
Input schema / titleRemoved value: -"AiChatParams"
- Changed
atlassian_auth_status2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for `atlassian_auth_status` (none)." - removed
Input schema / titleRemoved value: -"AtlassianAuthStatusParams"
- Changed
atlassian_convert2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `atlassian_convert` tool." - removed
Input schema / titleRemoved value: -"AtlassianConvertParams"
- Changed
browser_bridge_request2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `browser_bridge_request` tool." - removed
Input schema / titleRemoved value: -"BrowserBridgeRequestParams"
- Changed
claude_skills_clean2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters shared by `claude_skills_sync` and `claude_skills_clean`." - removed
Input schema / titleRemoved value: -"ClaudeSkillsMutateParams"
- Changed
claude_skills_status2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for `claude_skills_status` (identical shape to mutate tools)." - removed
Input schema / titleRemoved value: -"ClaudeSkillsStatusParams"
- Changed
claude_skills_sync2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters shared by `claude_skills_sync` and `claude_skills_clean`." - removed
Input schema / titleRemoved value: -"ClaudeSkillsMutateParams"
- Changed
config_models_show2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for `config_models_show` (none — placeholder for future extensibility)." - removed
Input schema / titleRemoved value: -"ConfigModelsShowParams"
- Changed
confluence_attachment_delete2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_attachment_delete` tool." - removed
Input schema / titleRemoved value: -"ConfluenceAttachmentDeleteParams"
- Changed
confluence_attachment_download2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_attachment_download` tool." - removed
Input schema / titleRemoved value: -"ConfluenceAttachmentDownloadParams"
- Changed
confluence_attachment_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_attachment_list` tool." - removed
Input schema / titleRemoved value: -"ConfluenceAttachmentListParams"
- Changed
confluence_attachment_upload2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_attachment_upload` tool." - removed
Input schema / titleRemoved value: -"ConfluenceAttachmentUploadParams"
- Changed
confluence_children2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_children` tool." - removed
Input schema / titleRemoved value: -"ConfluenceChildrenParams"
- Changed
confluence_comment_add2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_add` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentAddParams"
- Changed
confluence_comment_add_inline2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_add_inline` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentAddInlineParams"
- Changed
confluence_comment_audit2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_audit` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentAuditParams"
- Changed
confluence_comment_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_list` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentListParams"
- Changed
confluence_comment_reanchor2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_reanchor` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentReanchorParams"
- Changed
confluence_comment_replies2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_comment_replies` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCommentRepliesParams"
- Changed
confluence_compare2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_compare` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCompareParams"
- Changed
confluence_compare_section2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_compare_section` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCompareSectionParams"
- Changed
confluence_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_create` tool." - removed
Input schema / titleRemoved value: -"ConfluenceCreateParams"
- Changed
confluence_delete2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_delete` tool." - removed
Input schema / titleRemoved value: -"ConfluenceDeleteParams"
- Changed
confluence_download2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_download` tool." - removed
Input schema / titleRemoved value: -"ConfluenceDownloadParams"
- Changed
confluence_history2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_history` tool." - removed
Input schema / titleRemoved value: -"ConfluenceHistoryParams"
- Changed
confluence_label_add2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_label_add` tool." - removed
Input schema / titleRemoved value: -"ConfluenceLabelAddParams"
- Changed
confluence_label_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_label_list` tool." - removed
Input schema / titleRemoved value: -"ConfluenceLabelListParams"
- Changed
confluence_label_remove2 fields changed- removed
Input schema / descriptionRemoved 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." - removed
Input schema / titleRemoved value: -"ConfluenceLabelRemoveParams"
- Changed
confluence_move2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_move` tool." - removed
Input schema / titleRemoved value: -"ConfluenceMoveParams"
- Changed
confluence_read2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_read` tool." - removed
Input schema / titleRemoved value: -"ConfluenceReadParams"
- Changed
confluence_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_search` tool." - removed
Input schema / titleRemoved value: -"ConfluenceSearchParams"
- Changed
confluence_space_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_space_list` tool." - removed
Input schema / titleRemoved value: -"ConfluenceSpaceListParams"
- Changed
confluence_space_pages2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_space_pages` tool." - removed
Input schema / titleRemoved value: -"ConfluenceSpacePagesParams"
- Changed
confluence_user_get2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_user_get` tool." - removed
Input schema / titleRemoved value: -"ConfluenceUserGetParams"
- Changed
confluence_user_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_user_search` tool." - removed
Input schema / titleRemoved value: -"ConfluenceUserSearchParams"
- Changed
confluence_write2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `confluence_write` tool." - removed
Input schema / titleRemoved value: -"ConfluenceWriteParams"
- Changed
coverage_diff3 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `coverage_diff` tool." - added
Input schema / properties / ignore_filename_regexAdded 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" +} - removed
Input schema / titleRemoved value: -"CoverageDiffParams"
- Changed
datadog_auth_status2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for `datadog_auth_status` (none)." - removed
Input schema / titleRemoved value: -"DatadogAuthStatusParams"
- Changed
datadog_dashboard_get2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_dashboard_get` tool." - removed
Input schema / titleRemoved value: -"DatadogDashboardGetParams"
- Changed
datadog_dashboard_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_dashboard_list` tool." - removed
Input schema / titleRemoved value: -"DatadogDashboardListParams"
- Changed
datadog_downtime_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_downtime_list` tool." - removed
Input schema / titleRemoved value: -"DatadogDowntimeListParams"
- Changed
datadog_events_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_events_list` tool." - removed
Input schema / titleRemoved value: -"DatadogEventsListParams"
- Changed
datadog_hosts_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_hosts_list` tool." - removed
Input schema / titleRemoved value: -"DatadogHostsListParams"
- Changed
datadog_logs_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_logs_search` tool." - removed
Input schema / titleRemoved value: -"DatadogLogsSearchParams"
- Changed
datadog_metrics_catalog_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_metrics_catalog_list` tool." - removed
Input schema / titleRemoved value: -"DatadogMetricsCatalogListParams"
- Changed
datadog_metrics_query2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_metrics_query` tool." - removed
Input schema / titleRemoved value: -"DatadogMetricsQueryParams"
- Changed
datadog_monitor_get2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_monitor_get` tool." - removed
Input schema / titleRemoved value: -"DatadogMonitorGetParams"
- Changed
datadog_monitor_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_monitor_list` tool." - removed
Input schema / titleRemoved value: -"DatadogMonitorListParams"
- Changed
datadog_monitor_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_monitor_search` tool." - removed
Input schema / titleRemoved value: -"DatadogMonitorSearchParams"
- Changed
datadog_slo_get2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_slo_get` tool." - removed
Input schema / titleRemoved value: -"DatadogSloGetParams"
- Changed
datadog_slo_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `datadog_slo_list` tool." - removed
Input schema / titleRemoved value: -"DatadogSloListParams"
- Changed
git_amend_commits2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_amend_commits` tool." - removed
Input schema / titleRemoved value: -"GitAmendCommitsParams"
- Changed
git_branch_info2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_branch_info` tool." - removed
Input schema / titleRemoved value: -"GitBranchInfoParams"
- Changed
git_check_commits2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_check_commits` tool." - removed
Input schema / titleRemoved value: -"GitCheckCommitsParams"
- Changed
git_create_pr2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_create_pr` tool." - removed
Input schema / titleRemoved value: -"GitCreatePrParams"
- Changed
git_staged_commit2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_staged_commit` tool." - removed
Input schema / titleRemoved value: -"GitStagedCommitParams"
- Changed
git_twiddle_commits2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_twiddle_commits` tool." - removed
Input schema / titleRemoved value: -"GitTwiddleCommitsParams"
- Changed
git_view_commits2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `git_view_commits` tool." - removed
Input schema / titleRemoved value: -"GitViewCommitsParams"
- Added
jira_attachment_delete - Changed
jira_attachment_download2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_attachment_download` tool." - removed
Input schema / titleRemoved value: -"AttachmentDownloadParams"
- Changed
jira_attachment_images2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_attachment_images` tool." - removed
Input schema / titleRemoved value: -"AttachmentImagesParams"
- Added
jira_attachment_upload - Changed
jira_board_issues2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_board_issues` tool." - removed
Input schema / titleRemoved value: -"BoardIssuesParams"
- Changed
jira_board_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_board_list` tool." - removed
Input schema / titleRemoved value: -"BoardListParams"
- Changed
jira_bulk_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_bulk_create` tool." - removed
Input schema / titleRemoved value: -"JiraBulkCreateParams"
- Changed
jira_changelog2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_changelog` tool." - removed
Input schema / titleRemoved value: -"ChangelogParams"
- Changed
jira_comment2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_comment` tool." - removed
Input schema / titleRemoved value: -"JiraCommentParams"
- Changed
jira_comment_edit2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_comment_edit` tool." - removed
Input schema / titleRemoved value: -"JiraCommentEditParams"
- Changed
jira_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_create` tool." - removed
Input schema / titleRemoved value: -"JiraCreateParams"
- Changed
jira_delete2 fields changed- removed
Input schema / descriptionRemoved 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." - removed
Input schema / titleRemoved value: -"DeleteParams"
- Changed
jira_dev2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_dev` tool." - removed
Input schema / titleRemoved value: -"JiraDevParams"
- Changed
jira_edit2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_edit` tool." - removed
Input schema / titleRemoved value: -"JiraEditParams"
- Changed
jira_field_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_field_list` tool." - removed
Input schema / titleRemoved value: -"FieldListParams"
- Changed
jira_field_options2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_field_options` tool." - removed
Input schema / titleRemoved value: -"FieldOptionsParams"
- Changed
jira_link_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_link_create` tool." - removed
Input schema / titleRemoved value: -"LinkCreateParams"
- Changed
jira_link_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_link_list` tool." - removed
Input schema / titleRemoved value: -"LinkListParams"
- Changed
jira_link_parent2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_link_parent` tool." - removed
Input schema / titleRemoved value: -"LinkParentParams"
- Changed
jira_link_remote_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_link_remote_list` tool." - removed
Input schema / titleRemoved value: -"LinkRemoteListParams"
- Changed
jira_link_remove2 fields changed- removed
Input schema / descriptionRemoved 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." - removed
Input schema / titleRemoved value: -"LinkRemoveParams"
- Changed
jira_link_types2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_link_types` tool (none)." - removed
Input schema / titleRemoved value: -"LinkTypesParams"
- Changed
jira_project_create_meta2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_project_create_meta` tool." - removed
Input schema / titleRemoved value: -"ProjectCreateMetaParams"
- Changed
jira_project_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_project_list` tool." - removed
Input schema / titleRemoved value: -"ProjectListParams"
- Changed
jira_read2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_read` tool." - removed
Input schema / titleRemoved value: -"JiraReadParams"
- Changed
jira_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_search` tool." - removed
Input schema / titleRemoved value: -"JiraSearchParams"
- Changed
jira_sprint_add2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_sprint_add` tool." - removed
Input schema / titleRemoved value: -"SprintAddParams"
- Changed
jira_sprint_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_sprint_create` tool." - removed
Input schema / titleRemoved value: -"SprintCreateParams"
- Changed
jira_sprint_issues2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_sprint_issues` tool." - removed
Input schema / titleRemoved value: -"SprintIssuesParams"
- Changed
jira_sprint_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_sprint_list` tool." - removed
Input schema / titleRemoved value: -"SprintListParams"
- Changed
jira_sprint_update2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_sprint_update` tool." - removed
Input schema / titleRemoved value: -"SprintUpdateParams"
- Changed
jira_transition5 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_transition` tool." - changed
Input schema / properties / comment / descriptionPrevious 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." - added
Input schema / properties / custom_fieldsAdded 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" + ] +} - added
Input schema / properties / resolutionAdded 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" + ] +} - removed
Input schema / titleRemoved value: -"JiraTransitionParams"
- Changed
jira_transition_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_transition_list` tool." - removed
Input schema / titleRemoved value: -"JiraTransitionListParams"
- Changed
jira_user_get2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_user_get` tool." - removed
Input schema / titleRemoved value: -"JiraUserGetParams"
- Changed
jira_user_search2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_user_search` tool." - removed
Input schema / titleRemoved value: -"JiraUserSearchParams"
- Changed
jira_version_create2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_version_create` tool." - removed
Input schema / titleRemoved value: -"VersionCreateParams"
- Changed
jira_version_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_version_list` tool." - removed
Input schema / titleRemoved value: -"VersionListParams"
- Changed
jira_watcher_add2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_watcher_add` tool." - removed
Input schema / titleRemoved value: -"WatcherMutateParams"
- Changed
jira_watcher_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_watcher_list` tool." - removed
Input schema / titleRemoved value: -"WatcherListParams"
- Changed
jira_watcher_remove2 fields changed- removed
Input schema / descriptionRemoved 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." - removed
Input schema / titleRemoved value: -"WatcherRemoveParams"
- Changed
jira_worklog_add2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_worklog_add` tool." - removed
Input schema / titleRemoved value: -"WorklogAddParams"
- Changed
jira_worklog_list2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_worklog_list` tool." - removed
Input schema / titleRemoved value: -"WorklogListParams"
- Changed
jira_write2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `jira_write` tool." - removed
Input schema / titleRemoved value: -"JiraWriteParams"
- Changed
log_search2 fields changed- removed
Input schema / descriptionRemoved 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." - removed
Input schema / titleRemoved value: -"LogSearchParams"
- Changed
snowflake_disconnect2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `snowflake_disconnect` tool." - removed
Input schema / titleRemoved value: -"SnowflakeDisconnectParams"
- Changed
snowflake_query2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `snowflake_query` tool." - removed
Input schema / titleRemoved value: -"SnowflakeQueryParams"
- Changed
snowflake_sessions2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `snowflake_sessions` tool." - removed
Input schema / titleRemoved value: -"SnowflakeSessionsParams"
- Changed
transcript_youtube_fetch2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `transcript_youtube_fetch` tool." - removed
Input schema / titleRemoved value: -"TranscriptFetchParams"
- Changed
transcript_youtube_info2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `transcript_youtube_info` and\n`transcript_youtube_list_langs` tools." - removed
Input schema / titleRemoved value: -"TranscriptLocatorParams"
- Changed
transcript_youtube_list_langs2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for the `transcript_youtube_info` and\n`transcript_youtube_list_langs` tools." - removed
Input schema / titleRemoved value: -"TranscriptLocatorParams"
28 tool updates
v0.32.0- Changed
ai_chat5 fields changed- added
Input schema / properties / message / defaultAdded value: +null - changed
Input schema / properties / message / descriptionPrevious 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." - changed
Input schema / properties / message / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / message_pathAdded 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" + ] +} - removed
Input schema / requiredRemoved value: -[ - "message" -]
- Changed
atlassian_convert1 field changed- changed
Input schema / properties / strip_local_ids / descriptionPrevious 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."
- Added
browser_bridge_request - Changed
confluence_comment_add5 fields changed- added
Input schema / properties / content / defaultAdded value: +null - changed
Input schema / properties / content / descriptionPrevious 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." - changed
Input schema / properties / content / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / content_pathAdded 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" + ] +} - changed
Input schema / requiredPrevious value: -[ - "id", - "content" -]New value: +[ + "id" +]
- Changed
confluence_comment_add_inline5 fields changed- added
Input schema / properties / content / defaultAdded value: +null - changed
Input schema / properties / content / descriptionPrevious 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." - changed
Input schema / properties / content / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / content_pathAdded 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" + ] +} - changed
Input schema / requiredPrevious value: -[ - "id", - "content", - "anchor_text" -]New value: +[ + "id", + "anchor_text" +]
- Added
confluence_comment_audit - Added
confluence_comment_reanchor - Changed
confluence_create2 fields changed- added
Input schema / properties / content_pathAdded 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" + ] +} - added
Input schema / properties / document_pathAdded 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" + ] +}
- Changed
confluence_read1 field changed- added
Input schema / properties / versionAdded 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" + ] +}
- Added
confluence_user_get - Changed
confluence_write5 fields changed- added
Input schema / properties / content / defaultAdded value: +null - changed
Input schema / properties / content / descriptionPrevious 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." - changed
Input schema / properties / content / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / content_pathAdded 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" + ] +} - changed
Input schema / requiredPrevious value: -[ - "id", - "content" -]New value: +[ + "id" +]
- Added
coverage_diff - Added
git_amend_commits - Changed
git_branch_info1 field changed- changed
Input schema / properties / branch / descriptionPrevious 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`."
- Changed
jira_comment2 fields changed- changed
Input schema / properties / body / descriptionPrevious 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`." - added
Input schema / properties / body_pathAdded 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" + ] +}
- Changed
jira_comment_edit5 fields changed- added
Input schema / properties / body / defaultAdded value: +null - changed
Input schema / properties / body / descriptionPrevious 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." - changed
Input schema / properties / body / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / body_pathAdded 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" + ] +} - changed
Input schema / requiredPrevious value: -[ - "key", - "comment_id", - "body" -]New value: +[ + "key", + "comment_id" +]
- Changed
jira_create3 fields changed- changed
Input schema / properties / custom_fields / descriptionPrevious 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`." - added
Input schema / properties / description_pathAdded 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" + ] +} - added
Input schema / properties / document_pathAdded 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" + ] +}
- Added
jira_edit - Changed
jira_search7 fields changed- added
Input schema / properties / assigneeAdded value: +{ + "default": null, + "description": "Convenience filter: assignee (display name or email). ANDed with the\nother filters when `jql` is not provided.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / jql / defaultAdded value: +null - changed
Input schema / properties / jql / descriptionPrevious 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." - changed
Input schema / properties / jql / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / projectAdded value: +{ + "default": null, + "description": "Convenience filter: project key. ANDed with the other filters when\n`jql` is not provided.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / statusAdded value: +{ + "default": null, + "description": "Convenience filter: status name. ANDed with the other filters when\n`jql` is not provided.", + "type": [ + "string", + "null" + ] +} - removed
Input schema / requiredRemoved value: -[ - "jql" -]
- Added
jira_user_get - Changed
jira_write1 field changed- added
Input schema / properties / content_pathAdded 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" + ] +}
- Added
log_search - Added
snowflake_disconnect - Added
snowflake_query - Added
snowflake_sessions - Added
transcript_youtube_fetch - Added
transcript_youtube_info - Added
transcript_youtube_list_langs
38 tool updates
v0.31.0- Changed
ai_chat3 fields changed- changed
Input schema / properties / message / descriptionPrevious 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." - changed
Input schema / properties / model / descriptionPrevious 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." - changed
Input schema / properties / system_prompt / descriptionPrevious 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."
- Added
confluence_attachment_download - Added
confluence_comment_add_inline - Changed
confluence_comment_list1 field changed- added
Input schema / properties / kindAdded 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" + ] +}
- Added
confluence_comment_replies - Changed
confluence_create14 fields changed- added
Input schema / properties / content / defaultAdded value: +null - changed
Input schema / properties / content / descriptionPrevious 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`." - changed
Input schema / properties / content / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / documentAdded 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" + ] +} - added
Input schema / properties / dry_runAdded 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" +} - changed
Input schema / properties / format / descriptionPrevious 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)." - changed
Input schema / properties / parent_id / descriptionPrevious 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:`." - added
Input schema / properties / space_key / defaultAdded value: +null - changed
Input schema / properties / space_key / descriptionPrevious 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." - changed
Input schema / properties / space_key / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / title / defaultAdded value: +null - changed
Input schema / properties / title / descriptionPrevious value: -"Page title."New value: +"Page title. Required unless `document` carries one. Overrides frontmatter." - changed
Input schema / properties / title / typePrevious value: -"string"New value: +[ + "string", + "null" +] - removed
Input schema / requiredRemoved value: -[ - "space_key", - "title", - "content" -]
- Changed
confluence_download1 field changed- added
Input schema / properties / include_attachmentsAdded 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" + ] +}
- Added
confluence_space_list - Added
confluence_space_pages - Changed
confluence_write1 field changed- added
Input schema / properties / dry_runAdded 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" +}
- Changed
datadog_dashboard_list1 field changed- changed
Input schema / properties / filter_shared / descriptionPrevious 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."
- Changed
datadog_downtime_list1 field changed- changed
Input schema / properties / active_only / descriptionPrevious 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."
- Changed
datadog_events_list5 fields changed- changed
Input schema / properties / filter / descriptionPrevious 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." - changed
Input schema / properties / from / descriptionPrevious 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`." - changed
Input schema / properties / sources / descriptionPrevious value: -"Comma-separated list of source names."New value: +"Comma-separated list of source names, e.g. `github,nagios`.\nOptional." - changed
Input schema / properties / tags / descriptionPrevious value: -"Comma-separated list of `key:value` tags."New value: +"Comma-separated list of `key:value` tags, e.g. `env:prod,team:sre`.\nOptional." - changed
Input schema / properties / to / descriptionPrevious value: -"End of the time range. Defaults to `now`."New value: +"End of the time range, same formats as `from`. Defaults to `now`."
- Changed
datadog_hosts_list2 fields changed- changed
Input schema / properties / filter / descriptionPrevious value: -"Datadog hosts filter (e.g. `env:prod`)."New value: +"Datadog hosts filter (e.g. `env:prod`). Optional; omit for all hosts." - changed
Input schema / properties / from / descriptionPrevious 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."
- Changed
datadog_logs_search1 field changed- changed
Input schema / properties / filter / descriptionPrevious 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."
- Changed
datadog_metrics_catalog_list2 fields changed- changed
Input schema / properties / from / descriptionPrevious 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." - changed
Input schema / properties / host / descriptionPrevious value: -"Filter by host (e.g. `web-01`)."New value: +"Filter by host (e.g. `web-01`). Optional; omit for all hosts."
- Changed
datadog_metrics_query1 field changed- changed
Input schema / properties / query / descriptionPrevious 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."
- Changed
datadog_monitor_get1 field changed- changed
Input schema / properties / monitor_id / descriptionPrevious value: -"Datadog monitor identifier."New value: +"Datadog monitor identifier (numeric, e.g. `12345`). Required."
- Changed
datadog_monitor_list3 fields changed- changed
Input schema / properties / monitor_tags / descriptionPrevious 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." - changed
Input schema / properties / name / descriptionPrevious value: -"Substring match on the monitor name."New value: +"Substring match on the monitor name, e.g. `cpu`. Optional; omit to\nmatch all names." - changed
Input schema / properties / tags / descriptionPrevious 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."
- Changed
datadog_monitor_search1 field changed- changed
Input schema / properties / query / descriptionPrevious 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."
- Changed
datadog_slo_get1 field changed- changed
Input schema / properties / slo_id / descriptionPrevious value: -"Datadog SLO identifier (string)."New value: +"Datadog SLO identifier (string, e.g. `abc123def456`). Required."
- Changed
datadog_slo_list4 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Comma-separated list of SLO ids."New value: +"Comma-separated list of SLO ids, e.g. `abc123,def456`. Optional." - changed
Input schema / properties / metrics_query / descriptionPrevious 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." - changed
Input schema / properties / query / descriptionPrevious value: -"Free-text query."New value: +"Free-text query matched against SLO name/description, e.g.\n`checkout latency`. Optional." - changed
Input schema / properties / tags / descriptionPrevious 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."
- Changed
git_branch_info1 field changed- changed
Input schema / properties / branch / descriptionPrevious 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."
- Changed
git_check_commits3 fields changed- changed
Input schema / properties / model / descriptionPrevious 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." - changed
Input schema / properties / range / descriptionPrevious 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\"." - changed
Input schema / properties / strict / descriptionPrevious 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)."
- Changed
git_create_pr2 fields changed- changed
Input schema / properties / base_branch / descriptionPrevious 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." - changed
Input schema / properties / model / descriptionPrevious 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."
- Added
git_staged_commit - Changed
git_twiddle_commits2 fields changed- changed
Input schema / properties / model / descriptionPrevious 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." - changed
Input schema / properties / range / descriptionPrevious 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."
- Added
jira_bulk_create - Changed
jira_create12 fields changed- added
Input schema / properties / custom_fieldsAdded 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" + ] +} - changed
Input schema / properties / description / descriptionPrevious 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)." - added
Input schema / properties / documentAdded 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" + ] +} - added
Input schema / properties / dry_runAdded 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" +} - changed
Input schema / properties / issue_type / descriptionPrevious value: -"Issue type (defaults to `Task`)."New value: +"Issue type (defaults to `Task`). Overrides frontmatter." - added
Input schema / properties / project / defaultAdded value: +null - changed
Input schema / properties / project / descriptionPrevious 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." - changed
Input schema / properties / project / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Input schema / properties / summary / defaultAdded value: +null - changed
Input schema / properties / summary / descriptionPrevious value: -"Issue summary / title."New value: +"Issue summary / title. Required unless `document` carries one.\nOverrides frontmatter." - changed
Input schema / properties / summary / typePrevious value: -"string"New value: +[ + "string", + "null" +] - removed
Input schema / requiredRemoved value: -[ - "project", - "summary" -]
- Removed
jira_link - Added
jira_link_create - Added
jira_link_parent - Added
jira_link_remote_list - Changed
jira_link_remove1 field changed- added
Input schema / properties / dry_runAdded 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" +}
- Added
jira_project_create_meta - Changed
jira_watcher_add1 field changed- changed
Input schema / properties / account_id / descriptionPrevious 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`."
- Changed
jira_watcher_remove1 field changed- changed
Input schema / properties / account_id / descriptionPrevious 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`."
- Changed
jira_write4 fields changed- changed
Input schema / properties / content / descriptionPrevious 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`." - added
Input schema / properties / dry_runAdded 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" +} - changed
Input schema / properties / fields / descriptionPrevious 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." - removed
Input schema / properties / parentRemoved 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" - ] -}
81 tool updates
v0.1.0- First observed
ai_chat - First observed
atlassian_auth_status - First observed
atlassian_convert - First observed
claude_skills_clean - First observed
claude_skills_status - First observed
claude_skills_sync - First observed
config_models_show - First observed
confluence_attachment_delete - First observed
confluence_attachment_list - First observed
confluence_attachment_upload - First observed
confluence_children - First observed
confluence_comment_add - First observed
confluence_comment_list - First observed
confluence_compare - First observed
confluence_compare_section - First observed
confluence_create - First observed
confluence_delete - First observed
confluence_download - First observed
confluence_history - First observed
confluence_label_add - First observed
confluence_label_list - First observed
confluence_label_remove - First observed
confluence_move - First observed
confluence_read - First observed
confluence_search - First observed
confluence_user_search - First observed
confluence_write - First observed
datadog_auth_status - First observed
datadog_dashboard_get - First observed
datadog_dashboard_list - First observed
datadog_downtime_list - First observed
datadog_events_list - First observed
datadog_hosts_list - First observed
datadog_logs_search - First observed
datadog_metrics_catalog_list - First observed
datadog_metrics_query - First observed
datadog_monitor_get - First observed
datadog_monitor_list - First observed
datadog_monitor_search - First observed
datadog_slo_get - First observed
datadog_slo_list - First observed
git_branch_info - First observed
git_check_commits - First observed
git_create_pr - First observed
git_twiddle_commits - First observed
git_view_commits - First observed
jira_attachment_download - First observed
jira_attachment_images - First observed
jira_board_issues - First observed
jira_board_list - First observed
jira_changelog - First observed
jira_comment - First observed
jira_comment_edit - First observed
jira_create - First observed
jira_delete - First observed
jira_dev - First observed
jira_field_list - First observed
jira_field_options - First observed
jira_link - First observed
jira_link_list - First observed
jira_link_remove - First observed
jira_link_types - First observed
jira_project_list - First observed
jira_read - First observed
jira_search - First observed
jira_sprint_add - First observed
jira_sprint_create - First observed
jira_sprint_issues - First observed
jira_sprint_list - First observed
jira_sprint_update - First observed
jira_transition - First observed
jira_transition_list - First observed
jira_user_search - First observed
jira_version_create - First observed
jira_version_list - First observed
jira_watcher_add - First observed
jira_watcher_list - First observed
jira_watcher_remove - First observed
jira_worklog_add - First observed
jira_worklog_list - First observed
jira_write
TDQS
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.
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.
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.
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
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
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
- GentkeyOAuthcom.gentkey
One MCP URL for all your connectors — scoped writes, enforced constraints, and a full audit trail.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceModel Context Protocol (MCP) server for Atlassian Cloud products (Confluence and Jira). This integration is designed specifically for Atlassian Cloud instances and does not support Atlassian Server or Data Center deployments.5,853MIT
- AlicenseNot gradedqualityCmaintenanceProduction-ready MCP server for Atlassian Jira and Confluence, providing tools for issue management, page retrieval, and content operations.461MIT
- AlicenseNot gradedqualityBmaintenanceModel Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Supports both Cloud and Server/Data Center deployments.MIT
- AlicenseAqualityCmaintenanceAn MCP server for reading and writing Confluence pages in native Atlassian Document Format (ADF), enabling precise edits at the document node level without loss of formatting.43MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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