Skip to main content
Glama

warden-mcp

Vaultwarden / Bitwarden MCP server for credential-aware AI agents.

npm version CI license node docker

warden-mcp lets MCP clients search, create, update, move, and read Vaultwarden or Bitwarden vault items through the official Bitwarden CLI (bw). It is built for agents and automation that need credentials, TOTP codes, secure notes, attachments, Sends, folders, organizations, and collections without re-implementing Bitwarden client-side crypto.

Use it when an agent needs to log in to real systems during a browser or admin workflow, but you do not want passwords hardcoded in prompts, config files, or one-off scripts.

Quick Start

Use stdio mode when a local MCP host launches the server directly. It is the simplest and most portable setup for desktop agents.

Prerequisites:

  • Node.js 22.x

  • npm 10.x

  • a Vaultwarden or Bitwarden account

  • either a Bitwarden API key pair or username/password login

Run the server:

BW_HOST=https://vaultwarden.example.com \
BW_CLIENTID=user.xxxxx \
BW_CLIENTSECRET=xxxxx \
BW_PASSWORD='your-master-password' \
npx -y @icoretech/warden-mcp@latest --stdio

Username login also works:

BW_HOST=https://vaultwarden.example.com \
BW_USER=user@example.com \
BW_PASSWORD='your-master-password' \
npx -y @icoretech/warden-mcp@latest --stdio

If the package is useful, star the repository so other agent builders can find it.

Related MCP server: VaultBridge

Install In MCP Hosts

Most local hosts should use stdio. The examples below use API-key auth; replace BW_CLIENTID and BW_CLIENTSECRET with BW_USER if you prefer username login.

Claude Code

claude mcp add-json warden '{"command":"npx","args":["-y","@icoretech/warden-mcp@latest","--stdio"],"env":{"BW_HOST":"https://vaultwarden.example.com","BW_CLIENTID":"user.xxxxx","BW_CLIENTSECRET":"xxxxx","BW_PASSWORD":"your-master-password"}}'

Codex

codex mcp add warden \
  --env BW_HOST=https://vaultwarden.example.com \
  --env BW_CLIENTID=user.xxxxx \
  --env BW_CLIENTSECRET=xxxxx \
  --env BW_PASSWORD='your-master-password' \
  -- npx -y @icoretech/warden-mcp@latest --stdio

Codex TOML config:

[mcp_servers.warden]
command = "npx"
args = ["-y", "@icoretech/warden-mcp@latest", "--stdio"]
startup_timeout_sec = 30

[mcp_servers.warden.env]
BW_HOST = "https://vaultwarden.example.com"
BW_CLIENTID = "user.xxxxx"
BW_CLIENTSECRET = "xxxxx"
BW_PASSWORD = "your-master-password"

startup_timeout_sec = 30 gives npx enough time for a cold first launch.

Cursor, Claude Desktop, And JSON Config Hosts

{
  "mcpServers": {
    "warden": {
      "command": "npx",
      "args": ["-y", "@icoretech/warden-mcp@latest", "--stdio"],
      "env": {
        "BW_HOST": "https://vaultwarden.example.com",
        "BW_CLIENTID": "user.xxxxx",
        "BW_CLIENTSECRET": "xxxxx",
        "BW_PASSWORD": "your-master-password"
      }
    }
  }
}

Common locations:

Host

Config file

Cursor

~/.cursor/mcp.json or .cursor/mcp.json

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

Codex

~/.codex/config.toml

Why Use It

  • Agent login flows - fetch usernames, passwords, and TOTP codes during real browser automation without storing secrets in the agent prompt

  • Safe by default - secret fields stay redacted unless a tool supports reveal: true and the client explicitly asks for it

  • Vault administration - create, update, move, restore, and delete common Bitwarden item types, folders, organization collections, attachments, and Sends

  • Shared HTTP mode - one long-running service can front multiple vault hosts or identities through per-request X-BW-* headers

  • Text-only client support - safe identifiers are mirrored into text output for MCP hosts that ignore structuredContent

  • Vaultwarden-first CI - the integration suite exercises real local Vaultwarden and bw auth/session flows, not only mocked SDK behavior

How It Works

flowchart LR
    Agent["AI agent or MCP client"] --> Transport["stdio or Streamable HTTP"]
    Transport --> Server["warden-mcp"]
    Server --> BW["Bitwarden CLI (bw)"]
    BW --> Vault["Vaultwarden or Bitwarden"]
    Server --> State["per-profile bw state"]

warden-mcp shells out to bw and keeps profile state under KEYCHAIN_BW_HOME_ROOT. In HTTP mode, profile selection and credentials come from request headers. In stdio mode, credentials are loaded from BW_* env vars when the process starts.

The HTTP server exposes:

Endpoint

Purpose

GET /healthz

liveness check; does not validate vault credentials

GET /metricsz

session and runtime guardrail metrics

/sse?v=2

MCP Streamable HTTP endpoint

Run As A Shared HTTP Service

HTTP mode is useful when one service should serve multiple clients or multiple vault profiles.

Start the server:

npx -y @icoretech/warden-mcp@latest

Verify liveness:

curl -fsS http://localhost:3005/healthz

MCP tool calls must include these headers unless env fallback is explicitly enabled:

Header

Meaning

X-BW-Host

HTTPS origin only, for example https://vaultwarden.example.com

X-BW-Password

master password used to unlock the vault

X-BW-ClientId

Bitwarden API key client id

X-BW-ClientSecret

Bitwarden API key client secret

X-BW-User or X-BW-Username

username/email alternative to API key login

X-BW-Unlock-Interval

optional unlock interval in seconds; default 300

Example HTTP MCP config for hosts that support custom headers:

{
  "mcpServers": {
    "warden": {
      "url": "http://localhost:3005/sse?v=2",
      "headers": {
        "X-BW-Host": "https://vaultwarden.example.com",
        "X-BW-ClientId": "user.xxxxx",
        "X-BW-ClientSecret": "xxxxx",
        "X-BW-Password": "your-master-password"
      }
    }
  }
}

Some browser-hosted MCP clients can connect to an HTTP/SSE endpoint but cannot send custom X-BW-* headers. For those clients, run a single-tenant HTTP server with env fallback:

BW_HOST=https://vaultwarden.example.com \
BW_CLIENTID=user.xxxxx \
BW_CLIENTSECRET=xxxxx \
BW_PASSWORD='your-master-password' \
KEYCHAIN_ALLOW_ENV_FALLBACK=true \
npx -y @icoretech/warden-mcp@latest

Only use KEYCHAIN_ALLOW_ENV_FALLBACK=true behind a trusted network boundary. Every client that can reach the endpoint inherits the configured vault identity.

For hosted clients that require HTTPS, put a reverse proxy, private tunnel, VPN, or equivalent protected endpoint in front of warden-mcp, then connect to:

https://warden-mcp.example.com/sse?v=2

Docker

docker run --rm \
  -p 127.0.0.1:3005:3005 \
  -v warden-mcp-data:/data \
  ghcr.io/icoretech/warden-mcp:latest

The production image runs as the non-root node user with uid/gid 1000, sets HOME=/data, and stores Bitwarden profile state under /data/bw-profiles by default. If you use a bind mount, make it writable by uid/gid 1000.

Runtime Requirements

warden-mcp requires Node.js 22.x and npm 10.x when running from npm or source. The Docker image includes the supported Node runtime.

The server resolves bw in this order:

  1. BW_BIN, when set

  2. bundled @bitwarden/cli dependency

  3. system bw from PATH

The bundled @bitwarden/cli version is currently 2026.8.0. This project keeps that version vetted instead of blindly tracking every upstream release, because auth and unlock behavior can change in ways that break automation.

If bw is missing, install the CLI explicitly or point BW_BIN to a known binary:

npm install -g @bitwarden/cli@2026.8.0
BW_BIN=/absolute/path/to/bw npx -y @icoretech/warden-mcp@latest --stdio

Security Model

There is no built-in authentication layer in v1. Protect the transport before you expose it.

  • Bind locally by default - use WARDEN_MCP_HOST=127.0.0.1, Docker -p 127.0.0.1:3005:3005, a firewall, VPN, or an authenticated reverse proxy

  • Use TLS for HTTP mode - X-BW-* headers carry vault credentials

  • Avoid env fallback on shared networks - KEYCHAIN_ALLOW_ENV_FALLBACK=true makes server-side vault credentials available to headerless clients

  • Use read-only mode when writes are not needed - READONLY=true or KEYCHAIN_READONLY=true hides mutating tools and rejects direct write calls

  • Use no-reveal mode for untrusted agent contexts - NOREVEAL=true or KEYCHAIN_NOREVEAL=true forces all secret-returning tools to stay redacted

  • Keep debug logs off in production - do not enable KEYCHAIN_DEBUG_BW or KEYCHAIN_DEBUG_HTTP unless actively troubleshooting

  • Restrict profile storage - protect KEYCHAIN_BW_HOME_ROOT, which stores local bw profile state

  • Protect /metricsz if needed - it is unauthenticated for scraper compatibility and exposes runtime/session counters

Redacted fields include login passwords, TOTP seeds/codes, card numbers and codes, identity SSNs/passport/license numbers, hidden custom fields, SSH private keys stored through the secure-note convention, signed attachment URLs, and password history entries.

Configuration

Variable

Default

Purpose

PORT

3005

HTTP listen port

WARDEN_MCP_HOST

all interfaces

HTTP bind host

WARDEN_MCP_STDIO

false

force stdio mode without --stdio

MCP_APP_NAME

keychain-mcp

advertised MCP server name

TOOL_PREFIX

keychain

public tool namespace

TOOL_SEPARATOR

_

public tool separator; set . for legacy clients

KEYCHAIN_BW_HOME_ROOT

${HOME}/bw-profiles

root for per-profile bw state

KEYCHAIN_ALLOW_ENV_FALLBACK

false

allow HTTP calls to inherit server BW_* env

KEYCHAIN_SYNC_ON_WRITE

true

run bw sync before write operations

READONLY / KEYCHAIN_READONLY

false

hide and reject mutating tools

NOREVEAL / KEYCHAIN_NOREVEAL

false

force reveal: false server-side

KEYCHAIN_TEXT_COMPAT_MODE

unset

set structured_json for text-only clients

KEYCHAIN_SESSION_MAX_COUNT

32

max tracked HTTP sessions

KEYCHAIN_SESSION_TTL_MS

900000

inactive session TTL

KEYCHAIN_SESSION_SWEEP_INTERVAL_MS

60000

session cleanup interval

KEYCHAIN_MAX_HEAP_USED_MB

1536

memory fuse; set 0 to disable

KEYCHAIN_METRICS_LOG_INTERVAL_MS

0

periodic metrics logging; 0 disables

KEYCHAIN_TEXT_COMPAT_MODE=structured_json mirrors supported structuredContent into plain text. That helps MCP clients that only pass content[] to the model, but any revealed secret will also appear in the text transcript.

Tool Reference

Tool names default to keychain_*. Change the prefix with TOOL_PREFIX and the separator with TOOL_SEPARATOR.

Start with these:

  • keychain_status - inspect raw bw status

  • keychain_sync - pull latest vault data with bw sync

  • keychain_search_items - find items by name, URI, username, folder, collection, or type

  • keychain_get_item - read a full item by id, redacted by default

  • keychain_get_username, keychain_get_password, keychain_get_totp - fetch common login values; password and TOTP require reveal: true

  • keychain_create_login, keychain_update_item, keychain_move_item_to_organization - common write paths

Full tool groups:

Group

Tools

Vault/session

keychain_status, keychain_sync, keychain_sdk_version, keychain_encode, keychain_generate, keychain_generate_username

Items

keychain_search_items, keychain_get_item, keychain_update_item, keychain_create_login, keychain_create_logins, keychain_set_login_uris, keychain_create_note, keychain_create_card, keychain_create_identity, keychain_create_ssh_key, keychain_delete_item, keychain_delete_items, keychain_restore_item

Folders

keychain_list_folders, keychain_create_folder, keychain_edit_folder, keychain_delete_folder

Organizations and collections

keychain_list_organizations, keychain_list_collections, keychain_list_org_collections, keychain_create_org_collection, keychain_edit_org_collection, keychain_delete_org_collection, keychain_move_item_to_organization

Attachments

keychain_create_attachment, keychain_delete_attachment, keychain_get_attachment

Sends

keychain_send_list, keychain_send_template, keychain_send_get, keychain_send_create, keychain_send_create_encoded, keychain_send_edit, keychain_send_remove_password, keychain_send_delete, keychain_receive

Direct bw get helpers

keychain_get_username, keychain_get_password, keychain_get_totp, keychain_get_notes, keychain_get_uri, keychain_get_exposed, keychain_get_folder, keychain_get_collection, keychain_get_organization, keychain_get_org_collection, keychain_get_password_history

Notes:

  • keychain_create_logins creates several independent login items in one call and reports per-item failures without aborting the whole batch

  • keychain_set_login_uris replaces or merges a login item's URI list without editing the entire item payload

  • keychain_delete_items supports bulk soft-delete or hard-delete by id

  • keychain_get_item exposes safe attachment metadata, including id, fileName, and size, while redacting signed download URLs

  • keychain_get_attachment accepts an attachment id or an unambiguous filename and returns { filename, bytes, contentBase64 }

  • keychain_send_get returns owned Send metadata and text content; use keychain_receive with a Send accessUrl to receive shared Sends or download file Send bytes

  • Ambiguous login lookups return AMBIGUOUS_LOOKUP with visible candidate ids; retry with the exact item id

Local Development

Use Docker Compose when you need the full Vaultwarden-backed stack.

cp .env.example .env
make up

make up starts local Vaultwarden, an HTTPS proxy for bw, bootstraps a test account, and runs the MCP server in the foreground.

Useful commands:

Command

Purpose

npm run dev

watch-mode server from source

npm run build

compile TypeScript to dist/

npm run start

run the compiled server

npm run lint

Biome autofix plus tsc --noEmit

npm run test

build, then run all compiled tests

npm run test:integration

build, then run compose-backed integration tests

npm run test:coverage

build, then run Node test coverage

make test

run the compose-backed Vaultwarden integration path

make test-org

run the organization-focused compose stack

make down

stop the local compose stack

For a quick live MCP smoke against local Vaultwarden, see agent-instructions/testing.md.

Compatibility

Vaultwarden is the continuously proven target in CI. Official Bitwarden compatibility is intended, but it is not continuously proven without a real Bitwarden tenant.

@bitwarden/cli upgrades are treated as compatibility decisions. The suite checks direct bw auth behavior, SDK behavior, and MCP integration behavior against a local Vaultwarden instance before a CLI bump should ship.

Known Limitations

  • bw list items --search, and therefore keychain_search_items, does not reliably search inside custom field values

  • SSH keys are stored as secure notes with standard fields until bw supports native SSH key item creation

  • high-risk bw features such as export/import are intentionally not exposed

  • Vaultwarden report pages are not mirrored as MCP tools; the current report-like helper is keychain_get_exposed

Contributing

Issues and PRs are welcome. Run npm run lint and the relevant test command before opening a PR; use make test when behavior depends on real Vaultwarden or bw interaction.

License

MIT

Available Tools

53 tools
keychain_create_attachmentCreate AttachmentA

Attach base64-encoded file bytes to an existing item. Returns the updated item summary with normal redaction rules, so secrets stay hidden unless reveal is allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesParent Bitwarden item id for attachment or item-specific operations.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.
filenameYesVisible attachment or send filename stored in Bitwarden metadata.
contentBase64YesBase64-encoded file bytes, not a filesystem path.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, so the tool is a non-destructive mutation. The description adds valuable context: it returns the updated item summary with redaction rules (secrets hidden unless reveal is allowed), and explicitly ties to the reveal parameter. This goes beyond annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and resource. Every clause adds value: attaching bytes, return format, redaction rule. No filler or redundancy.

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

Completeness4/5

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

For a tool with no output schema, the description covers core behavior (attach, return summary with redaction) and mentions the reveal parameter. However, it omits edge cases like non-existent items or size limits, which are minor given the schema and annotations.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that contentBase64 is not a filesystem path and that reveal controls secret redaction. It links the return behavior to the reveal parameter, enriching understanding beyond schema descriptions.

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

Purpose5/5

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

The description clearly identifies the tool's action: attaching base64-encoded file bytes to an existing item. It specifies the resource (existing Bitwarden item) and distinguishes from sibling tools like keychain_get_attachment or keychain_delete_attachment by focusing on creation.

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

Usage Guidelines3/5

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

The description implies usage for attaching files to items but does not provide explicit guidance on when to use this tool versus alternatives like keychain_get_attachment or keychain_delete_attachment. No when-not or alternative tools are mentioned.

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

keychain_create_cardCreate CardA

Create a payment card item. Use this for cardholder name, brand, number, expiry, and code, not for login credentials or notes. Accepts custom fields plus folder/organization/collection scoping, and returned summaries redact the card number, code, and hidden fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCard security code or CVV.
nameYesDisplay name for the payment card item.
brandNoCard brand, such as visa or mastercard.
notesNoOptional note text stored on the item.
fieldsNoCustom fields to store on the item. Hidden fields are redacted in summaries.
numberNoPrimary card number to store on the card.
expYearNoCard expiration year.
expMonthNoCard expiration month.
favoriteNoMark the item as a favorite when true.
folderIdNoPersonal folder id, not an organization collection id.
collectionIdsNoBitwarden collection ids, not folder ids.
cardholderNameNoCardholder name to store on the card.
organizationIdNoBitwarden organization id; used for org-scoped collection operations.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds key behavior: returned summaries redact card number, code, and hidden fields. No contradiction. Useful for an agent to understand data exposure.

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

Conciseness5/5

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

Three concise sentences, front-loaded with purpose, then guidelines, then behavioral note. No wasted words; every sentence adds value.

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

Completeness4/5

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

Covers purpose, usage, scoping, and redaction behavior. Lacks explicit mention of return value format (no output schema), but redaction hint helps. Adequate for a creation tool with many parameters and siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3. Description adds context like mapping to 'cardholder name, brand, number, expiry, and code' and mentions redaction of hidden fields, but does not significantly deepen per-parameter understanding beyond schema.

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

Purpose5/5

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

The description clearly states 'Create a payment card item' and lists specific data fields (cardholder name, brand, number, expiry, code), distinguishing it from login credentials or notes. Sibling tools like keychain_create_login and keychain_create_note confirm differentiation.

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

Usage Guidelines4/5

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

Explicitly states when to use ('Use this for cardholder name...') and when not to use ('not for login credentials or notes'). Provides context on scoping (folder/organization/collection) but does not give detailed alternatives or prerequisites.

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

keychain_create_folderCreate FolderA

Create a personal Bitwarden folder. Use this to organize items outside organization collections.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the personal folder.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and readOnlyHint=false. The description adds 'Create' which aligns with write behavior, but provides no additional behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and contains no extraneous information.

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

Completeness4/5

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

For a simple creation tool with one parameter and no output schema, the description adequately explains its purpose and distinguishes from related sibling tools. Annotations cover behavioral safety.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, and the description does not add meaning beyond the schema's description of 'name' as the display name. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Create') and resource ('personal Bitwarden folder'), and distinguishes it from organization collections, which is a sibling tool.

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

Usage Guidelines4/5

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

The description provides context by specifying 'outside organization collections', implying when to use this tool versus keychain_create_org_collection, though it does not explicitly list alternatives.

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

keychain_create_identityCreate IdentityA

Create an identity item. Use this for personal, contact, and address data instead of a login or card. Accepts structured identity fields plus custom fields and scoping, and returned summaries redact sensitive identity fields and hidden custom fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the identity item.
notesNoOptional note text stored on the item.
fieldsNoCustom fields to store on the item. Hidden fields are redacted in summaries.
favoriteNoMark the item as a favorite when true.
folderIdNoPersonal folder id, not an organization collection id.
identityNoStructured identity profile data to store on the item.
collectionIdsNoBitwarden collection ids, not folder ids.
organizationIdNoBitwarden organization id; used for org-scoped collection operations.

TDQS

A4.2/5.0
Behavior4/5

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

Description adds context beyond annotations: summaries redact sensitive fields and hidden custom fields. Annotations only say not read-only and not destructive, so this is useful.

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

Conciseness5/5

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

Two sentences, no redundancy. First sentence states purpose, second adds behavioral detail. Highly efficient.

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

Completeness4/5

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

No output schema, but description notes redaction behavior. Covers key aspects given complexity, though could detail return format more. Schema fills in parameter details.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions, so baseline is 3. Description mentions 'structured identity fields plus custom fields and scoping' but adds little extra meaning beyond the schema.

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

Purpose5/5

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

Clearly states 'Create an identity item' with verb and resource. Distinguishes from siblings by specifying 'instead of a login or card.'

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

Usage Guidelines4/5

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

Explicitly says to use for personal/contact/address data and not for login or card. Provides alternative tool types but lacks when-not-to-use or exclusion criteria.

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

keychain_create_loginCreate LoginA

Create a login item with username/password/TOTP/URI data. Use this for website or app credentials instead of a secure note, card, or identity. Accepts custom fields and attachments, supports folder/organization/collection scoping, and returns a redacted item summary by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the login item.
totpNoTOTP secret or otpauth value for the login item.
urisNoURI entries to store or update on the login item.
notesNoOptional free-form notes for the login item.
fieldsNoCustom fields to store on the item. Hidden fields are redacted in summaries.
favoriteNoMark the item as a favorite when true.
folderIdNoPersonal folder id, not an organization collection id.
passwordNoPassword to store on the login item.
usernameNoLogin username or email address.
attachmentsNoAttachments to add to the item.
collectionIdsNoBitwarden collection ids, not folder ids.
organizationIdNoBitwarden organization id; used for org-scoped collection operations.

TDQS

A4/5.0
Behavior3/5

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

The description adds that the tool returns a redacted item summary by default, which supplements the annotations (readOnlyHint=false, destructiveHint=false). No contradictions. However, it does not disclose other behavioral aspects like permission requirements or side effects, so additional context beyond annotations is limited.

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

Conciseness5/5

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

The description is concise (two sentences) and well-structured: first sentence states the core action and data types, second provides usage guidance and lists additional capabilities. No unnecessary words.

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

Completeness4/5

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

Given the complexity (12 parameters, no output schema), the description covers the primary inputs and return behavior. It lacks details on error handling or validation, but for a creation tool with well-documented schema, it is fairly complete.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all 12 parameters. The description does not add significant additional meaning beyond what the schema provides, justifying the baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool creates a login item with specific data types (username, password, TOTP, URI) and explicitly distinguishes it from other item types like secure note, card, or identity. This provides clear purpose and differentiation from siblings.

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

Usage Guidelines4/5

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

The description explicitly advises using this for website/app credentials instead of other item types, providing clear context for when to use the tool. It lacks explicit guidance on when not to use it, but the positive direction is strong.

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

keychain_create_loginsCreate LoginsA

Create multiple login items in one call. Use this when you need several independent credentials at once, with the same login-item behavior as create_login. Set continueOnError to keep going after a failure and receive per-item ok/error results; returned items are redacted by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesLogin item payloads to create; each item follows create_login fields and returns its own ok/error result.
continueOnErrorNoContinue after failures and return per-item ok/error results when true.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false and destructiveHint=false, indicating writes. The description adds that returned items are redacted by default and that continueOnError yields per-item ok/error results. No contradictions with annotations.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and contains no filler. Every sentence earns its place.

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

Completeness4/5

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

For a tool with 2 parameters, no output schema, and high schema coverage, the description covers batch creation, behavioral similarity to create_login, continueOnError, and redaction. Could elaborate on output format, but overall sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents parameters well. The description adds behavioral context (e.g., per-item results, redaction) but does not significantly enrich the meaning of individual fields beyond what's in the schema.

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

Purpose5/5

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

The description clearly states the tool creates multiple login items in one call and references the same behavior as create_login. It distinguishes itself from sibling keychain_create_login by specifying batch creation.

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

Usage Guidelines4/5

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

The description advises using this tool for several independent credentials at once and explains the continueOnError feature for per-item results. While it effectively signals when to use it, it could more explicitly contrast with single-item creation 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.

keychain_create_noteCreate NoteA

Create a secure note item. Use this for free-form text or secrets that do not belong in a login, card, identity, or SSH key item. Accepts custom fields plus folder/organization/collection scoping, and returns a redacted item summary by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the secure note item.
notesNoOptional note text stored on the item.
fieldsNoCustom fields to store on the item. Hidden fields are redacted in summaries.
favoriteNoMark the item as a favorite when true.
folderIdNoPersonal folder id, not an organization collection id.
collectionIdsNoBitwarden collection ids, not folder ids.
organizationIdNoBitwarden organization id; used for org-scoped collection operations.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive. Description adds behavioral context: returns a redacted item summary by default. No contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and usage, then features and return behavior. No wasted words.

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

Completeness4/5

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

Covers purpose, usage, accepted parameters, and return value despite no output schema. Parameter count and schema descriptions are sufficient. Minor omission: no error or idempotency info, but acceptable for a create tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description summarizes parameters (custom fields, scoping) but adds no new semantic detail beyond schema.

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

Purpose5/5

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

Clearly states it creates a secure note item and distinguishes from siblings by listing what it is not for (login, card, identity, SSH key). Verb and resource are specific.

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

Usage Guidelines4/5

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

Explicitly says to use for free-form text or secrets that do not belong in other item types, implying alternatives. Does not name sibling tools directly but gives clear use case.

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

keychain_create_org_collectionCreate Org CollectionA

Create a new organization-scoped collection inside the required organizationId. Use this for shared vault grouping; returns the created collection summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the organization collection.
organizationIdYesBitwarden organization id; required for org-scoped collection operations.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate the tool is not read-only (destructiveHint=false) and not destructive (destructiveHint=false). The description adds no further behavioral traits beyond stating it returns a summary, which is sufficient but not exceptional.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys purpose, usage hint, and return value, with no unnecessary words.

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

Completeness5/5

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

With two required parameters and no output schema, the description covers purpose, usage context, and what is returned, making it complete for this simple tool.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add much. It mentions 'inside the required organizationId' but that repeats the schema. No new semantics added beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Create' and the resource 'organization-scoped collection', and distinguishes from sibling tools like keychain_create_folder by specifying 'organization-scoped'.

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

Usage Guidelines4/5

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

It explicitly says 'Use this for shared vault grouping', providing clear context for when to use. It does not explicitly state when not to use or mention alternatives, but the specificity is adequate.

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

keychain_create_ssh_keyCreate SSH KeyA

Create an SSH key object stored as a secure note with standard fields. Use this when you need a public/private key pair plus optional fingerprint or comment, not a login or payment card. The private key is stored in a hidden field and redacted in returned summaries; folder, organization, and collection scoping is supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the SSH key item.
notesNoOptional note text stored on the item.
commentNoOptional SSH key comment or label.
favoriteNoMark the item as a favorite when true.
folderIdNoPersonal folder id, not an organization collection id.
publicKeyYesSSH public key material to store on the item.
privateKeyYesSSH private key material to store on the item.
fingerprintNoOptional SSH key fingerprint.
collectionIdsNoBitwarden collection ids, not folder ids.
organizationIdNoBitwarden organization id; used for org-scoped collection operations.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are minimal (non-read-only, non-destructive). Description adds crucial info: private key hidden field, redacted in summaries, and scoping support, which annotations lack.

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

Conciseness5/5

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

Two sentences pack purpose, usage guidance, and key behavioral note without fluff. Front-loaded with primary action.

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

Completeness4/5

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

No output schema, but description covers essential points: creation, scope, private key handling. Could mention that it does not generate keys, but not required.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions. Description adds value by explaining behavior of privateKey (hidden/redacted) and role of scoping parameters, going beyond schema.

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

Purpose5/5

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

Description clearly states the tool creates an SSH key object stored as a secure note, and differentiates from login or payment card types.

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

Usage Guidelines4/5

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

Explicitly says when to use (need public/private key pair) and what not to use (not login or payment card). Could mention alternatives like other create tools but sibling context is provided.

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

keychain_delete_attachmentDelete AttachmentA
Destructive

Delete an attachment from its parent item using itemId plus attachmentId. The attachment id comes from item attachment metadata; this is destructive for that attachment and then refetches the parent item. Returns the updated item summary with normal redaction rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesParent Bitwarden item id for attachment or item-specific operations.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.
attachmentIdYesAttachment id returned by item metadata, or an unambiguous filename selector for downloads.

TDQS

A4.4/5.0
Behavior5/5

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

Description adds valuable behavioral context beyond annotations (destructiveHint=true): explains that the action is destructive, refetches the parent item, and returns updated summary with redaction. No contradiction with annotations.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action and key details. No extraneous information.

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

Completeness4/5

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

Covers action, parameters, behavior, and return type. Minor gaps: no mention of error conditions or prerequisites (e.g., permissions). Still sufficient for a delete tool.

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

Parameters3/5

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

Schema coverage is 100%, providing detailed parameter descriptions. Description mentions itemId and attachmentId but does not significantly add meaning beyond schema. The optional 'reveal' parameter is not explained in description, but schema covers it.

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

Purpose5/5

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

Description clearly states the verb (delete), resource (attachment), and required identifiers (itemId and attachmentId). Differentiates from sibling tools like keychain_get_attachment and keychain_create_attachment by specifying destructive nature.

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

Usage Guidelines4/5

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

Clear context provided: delete an attachment with specific IDs. Implicitly indicates use when deletion is needed, but does not explicitly exclude alternative actions or mention 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.

keychain_delete_folderDelete FolderA
Destructive

Delete a personal Bitwarden folder. Destructive: there is no restore helper in this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A4/5.0
Behavior4/5

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

The annotations already indicate destructiveHint=true. The description adds valuable context by explicitly stating 'there is no restore helper in this server,' which goes beyond the annotation by explaining the lack of recovery mechanism. This is a helpful 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.

Conciseness5/5

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

The description is a single sentence with a critical warning, achieving maximum conciseness. Every word adds value, and the key information is front-loaded.

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

Completeness4/5

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

For a simple delete operation with one parameter and no output schema, the description covers the core purpose and the irreversible nature. It does not explain return values (unnecessary) or provide additional context about the folder hierarchy, but what is provided is sufficient.

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

Parameters3/5

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

The input schema has one parameter 'id' with a clear description. Schema coverage is 100%, so the description does not need to add more. The description adds no additional parameter information, baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Delete a personal Bitwarden folder,' which is a specific verb+resource. The tool name and title align perfectly, and it is distinct from sibling delete tools like keychain_delete_item or keychain_delete_attachment.

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

Usage Guidelines3/5

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

The description mentions that the operation is destructive and irreversible ('no restore helper'), which provides some usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., editing or moving items), nor does it specify prerequisites or conditions for use.

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

keychain_delete_itemDelete ItemA
Destructive

Delete a vault item by id. By default this is a soft delete to trash and can be restored with restore_item; set permanent=true to hard delete through bw. Returns only the requested id, not the deleted item contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
permanentNoHard delete immediately when true; omit or false to soft-delete to trash.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses that default is soft delete to trash, recoverable via restore_item, and that permanent=true performs hard delete. Also states that only the id is returned, not the item contents. Aligns with annotations (destructiveHint=true) and adds useful behavioral context.

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

Conciseness5/5

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

Two sentences with no extraneous information. Key details are front-loaded ('Delete a vault item by id'). Every sentence adds value.

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

Completeness5/5

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

Given no output schema, description explains return value (only id, not contents). Also mentions recovery option (restore_item) and distinguishes soft/hard delete. Context is complete for a delete tool with two modes.

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

Parameters4/5

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

Schema covers both parameters (id, permanent) and description adds meaning: explains id's source (from list/search/get/create) and permanent's effect (hard delete vs soft). Schema coverage is 100%, but description provides additional context beyond field names.

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

Purpose5/5

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

Description clearly states 'Delete a vault item by id' and distinguishes soft vs hard delete. It specifies resource (vault item) and action (delete), differentiating from sibling tools like keychain_delete_attachment, keychain_delete_folder, etc.

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

Usage Guidelines4/5

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

Explicitly explains when to use soft delete (default) vs hard delete (permanent=true) and mentions restore_item for recovery. Provides clear context but does not explicitly contrast with bulk deletion alternatives like keychain_delete_items.

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

keychain_delete_itemsDelete ItemsA
Destructive

Delete multiple vault items by id in one session. Soft-deletes to trash by default; set permanent=true to hard delete every id. Returns per-id ok/error results so partial failures are visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesVault item ids to delete; returns one result per id.
permanentNoHard delete each id immediately when true; omit or false to soft-delete to trash.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations (destructiveHint=true) indicate mutation, but description adds beyond: default soft-delete, permanent hard-delete option, and per-id result reporting. This provides useful behavioral context not captured in annotations alone.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then details on optional behavior and return format. No unnecessary words; every sentence adds value.

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

Completeness5/5

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

For a tool with no output schema, description sufficiently explains return structure (per-id results). Covers default behavior, optional permanent delete, and batch scope. No missing critical information.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description reinforces and slightly extends schema: adds context about session and partial failures, but schema already describes parameters well.

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

Purpose5/5

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

Clearly states verb (delete) and resource (vault items) with batch scope. Distinguishes from siblings like keychain_delete_item (single) and keychain_delete_attachment (different resource). Mention of soft-delete vs hard delete further clarifies behavior.

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

Usage Guidelines4/5

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

Explicitly describes when to use: for multiple items in one session. Notes permanent option for hard delete. Does not explicitly exclude alternatives, but context from sibling tools implies single-item deletes use a different tool. Clear context provided.

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

keychain_delete_org_collectionDelete Org CollectionA
Destructive

Delete an organization collection. Destructive: there is no restore helper in this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
organizationIdYesBitwarden organization id; required for org-scoped collection operations.

TDQS

A3.8/5.0
Behavior4/5

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

Adds important context beyond annotations: explicitly warns that deletion is irreversible with 'no restore helper', which is not captured by the destructiveHint annotation alone.

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

Conciseness5/5

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

Two sentences with no wasted words. First sentence states purpose, second adds critical warning. Efficient and front-loaded.

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

Completeness4/5

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

Covers main purpose and destructive behavior. Could mention permission requirements, but the description is adequate given tool simplicity and no output schema.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. Description does not add any additional parameter meaning beyond what schema provides.

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

Purpose5/5

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

Description clearly states 'Delete an organization collection' with specific verb and resource. Distinguishes from sibling tools like keychain_create_org_collection and keychain_edit_org_collection.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, or when not to use it. Only mentions destructive nature but no comparisons with other tools.

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

keychain_edit_folderEdit FolderA

Rename an existing personal Bitwarden folder by id. This mutates only folder metadata, not the items inside it, and returns the updated folder id/name summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
nameYesNew display name for the personal folder.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false and destructiveHint=false. The description adds that it mutates only folder metadata and returns a summary, providing valuable behavioral context beyond annotations.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with purpose. Highly concise and well-structured.

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

Completeness5/5

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

For a simple tool with 2 parameters and no output schema, the description provides all necessary information: what it does, what it affects, and what it returns.

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

Parameters4/5

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

Schema coverage is 100% with adequate parameter descriptions. The tool description adds 'by id' and 'new display name' context, slightly enhancing schema information.

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

Purpose5/5

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

The description clearly states the verb (rename), resource (folder by id), and scope (personal), distinguishing it from create/delete sibling tools.

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

Usage Guidelines4/5

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

The description implies usage for renaming existing folders and notes it only affects metadata, not items. While no explicit alternatives are given, 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.

keychain_edit_org_collectionEdit Org CollectionA

Rename an existing organization-scoped collection inside the required organizationId. This mutates collection metadata only and returns the updated collection summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
nameYesNew display name for the organization collection.
organizationIdYesBitwarden organization id; required for org-scoped collection operations.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate non-read-only and non-destructive; description adds that it mutates metadata only and returns updated summary, offering useful behavioral detail beyond annotations.

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

Conciseness5/5

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

Two sentences, concise and front-loaded with the core action. Every sentence adds value.

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

Completeness4/5

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

Adequately covers functionality, parameters, and outcome for a simple rename operation. Could mention error conditions or permissions but not necessary given simplicity.

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

Parameters3/5

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

Schema coverage is 100%, and description adds minor context about parameters (e.g., name is new display name), but does not significantly enhance understanding beyond the schema.

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

Purpose5/5

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

The description explicitly states it renames an organization-scoped collection, clearly distinguishing it from sibling tools like create_org_collection or delete_org_collection. The verb and resource are specific.

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

Usage Guidelines4/5

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

The description clarifies the operation is for renaming within a required orgId, providing necessary context. However, it does not explicitly state when not to use or compare to alternatives like editing folders.

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

keychain_encodeEncodeA
Read-only

Base64-encode a string with bw encode. This never mutates the vault; it only returns encoded text.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesPlain text value to base64-encode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
encodedYes

TDQS

A4.3/5.0
Behavior4/5

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

The description reinforces the readOnlyHint annotation by stating it never mutates the vault, adding clarity that it only returns encoded text.

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

Conciseness5/5

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

The description is two short sentences, no superfluous words, and immediately conveys the core function.

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

Completeness5/5

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

Given the tool's simplicity, the description, schema, and annotations together provide complete information 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.

Parameters3/5

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

Schema coverage is 100%, and the description adds no additional meaning beyond what the schema already provides for the single parameter.

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

Purpose5/5

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

The description clearly states the tool base64-encodes a string and differentiates it from sibling tools by noting it never mutates the vault.

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

Usage Guidelines4/5

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

The description implies when to use it (when encoding is needed) but does not explicitly state when not to use it or list alternatives.

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

keychain_generateGenerateA
Read-only

Generate a password or passphrase with bw generate. This never mutates the vault; pass reveal=true to return the value, and NOREVEAL or KEYCHAIN_NOREVEAL force redaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
wordsNoPassphrase word count, between 3 and 50.
lengthNoPassword length in characters, between 5 and 256.
numberNoInclude numeric digits when generating a password.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.
specialNoInclude special characters when generating a password.
ambiguousNoAllow ambiguous characters in generated passwords.
lowercaseNoInclude lowercase letters when generating a password.
minNumberNoMinimum number of digits to include.
separatorNoSeparator to use between words in passphrase mode.
uppercaseNoInclude uppercase letters when generating a password.
capitalizeNoCapitalize passphrase words when supported by bw.
minSpecialNoMinimum number of special characters to include.
passphraseNoGenerate a word-based passphrase instead of a password.
includeNumberNoInclude a number in passphrase mode when supported by bw.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The description reinforces the readOnlyHint annotation by stating 'This never mutates the vault' and adds important behavior about reveal=true returning values and NOREVEAL/KEYCHAIN_NOREVEAL forcing redaction. This goes beyond the structured annotations and gives the agent critical secret-handling context.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads what the tool does, then adds the safety and reveal behavior, every sentence earning its place.

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

Completeness4/5

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

Given the output schema and 100% parameter coverage, the description covers the critical behavioral aspects: read-only operation and secret redaction. It is mostly complete, though it could be improved by explicitly routing username generation to keychain_generate_username.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 14 parameters. The description adds minor extra context around reveal and the KEYCHAIN_NOREVEAL environment variable, but it does not meaningfully explain the broader parameter set beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: 'Generate a password or passphrase with bw generate.' This clearly distinguishes the tool from sibling keychain_generate_username by naming password/passphrase generation as its scope.

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

Usage Guidelines4/5

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

The description clearly implies this tool is for password or passphrase generation, and the sibling keychain_generate_username covers usernames, but it does not explicitly say 'use X for usernames' or provide when-not-to-use guidance. The context is clear, but there are no explicit exclusions or alternatives stated.

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

keychain_generate_usernameGenerate UsernameA
Read-only

Generate a username like the Bitwarden generator (random word, plus-addressed email, catch-all, forwarded alias). This never mutates the vault; pass reveal=true to return the value, and NOREVEAL or KEYCHAIN_NOREVEAL force redaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoUsername generation strategy: random word, plus-addressed email, catch-all email, or forwarded alias.
emailNoBase email address for plus-addressed username generation.
domainNoDomain for catch-all email username generation.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.
capitalizeNoCapitalize the generated random word when supported.
includeNumberNoAppend a number to generated usernames when supported.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description explicitly states that the tool never mutates the vault, which is valuable behavioral context consistent with the readOnlyHint annotation. It also discloses reveal behavior and redaction enforcement via NOREVEAL/KEYCHAIN_NOREVEAL, adding detail beyond the annotation alone.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core action and strategy list, then adds the critical safety and redaction behavior without unnecessary detail.

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

Completeness5/5

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

The description, combined with the full input schema, readOnlyHint annotation, and output schema, provides sufficient context for an agent to call this tool correctly. It covers the generation strategies, safety guarantees, and reveal/redaction mechanics; no critical behavior is left unexplained.

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

Parameters4/5

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

Since schema description coverage is 100%, the schema already documents each parameter. The description adds meaningful context around the reveal parameter by explaining that NOREVEAL or KEYCHAIN_NOREVEAL forces redaction, and frames the type parameter through the Bitwarden generator analogy, which helps an agent select appropriate strategies.

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

Purpose4/5

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

The description clearly identifies the tool as a username generator with specific strategies (random word, plus-addressed email, catch-all, forwarded alias). It does not explicitly differentiate itself from siblings like keychain_generate or keychain_get_username, though the specific 'username' focus makes the purpose reasonably distinct.

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

Usage Guidelines3/5

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

The verb 'generate' and the strategy list imply when this tool should be used, but the description provides no explicit guidance on when to choose this tool over alternatives such as keychain_get_username or keychain_generate. It also does not state when specific parameter combinations are needed, leaving usage largely to inference.

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

keychain_get_attachmentGet AttachmentA
Read-only

Download an attachment from a parent item and return raw bytes as contentBase64. Pass itemId plus an attachment id, or an unambiguous filename selector resolved from the item metadata before calling bw get attachment. The response includes filename, byte count, and base64 content for local decoding. If the expected attachment filename is missing from keychain_get_item metadata, run keychain_sync and keychain_get_item again before retrying.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesParent Bitwarden item id for attachment or item-specific operations.
attachmentIdYesAttachment id returned by item metadata, or an unambiguous filename selector for downloads.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses that the tool returns base64 content, includes filename and byte count, and does not modify data. Aligns with readOnlyHint annotation and adds troubleshooting context for missing filenames.

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

Conciseness5/5

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

Concise, no redundant sentences. Main action is front-loaded, followed by parameter usage and a recovery hint. Every sentence adds information.

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

Completeness5/5

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

Covers purpose, parameters, output format, and error recovery. Despite no output schema, the description provides sufficient detail for an agent to use and interpret results.

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

Parameters4/5

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

Adds value beyond the schema by explaining that attachmentId can be an unambiguous filename selector and that it must be resolved from item metadata. Schema already describes both parameters clearly.

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

Purpose5/5

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

The description clearly states the tool downloads an attachment from a parent item and returns raw bytes as base64. It specifies the action, resource, and output format, distinguishing it from create/delete attachment siblings.

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

Usage Guidelines4/5

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

Provides guidance on parameter usage (itemId + attachmentId or filename selector) and a recovery step if filename missing. Does not explicitly contrast with alternatives, but covers when to use and prerequisites.

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

keychain_get_collectionGet CollectionA
Read-only

Get a collection by id (bw get collection). Use organizationId when you need to disambiguate an organization-scoped lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
organizationIdNoOptional organization id used to disambiguate the lookup.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the description adds little behavioral context beyond the CLI equivalent. It does not detail error behavior, id existence handling, or performance aspects, leaving the agent with minimal extra insight.

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

Conciseness5/5

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

Two efficient sentences: the first conveys the core action, the second adds a usage hint. No redundancy, perfectly front-loaded, and every sentence serves a purpose.

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

Completeness5/5

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

For a simple read tool with strong annotations and a fully described schema, the description is complete. It covers the action, optional disambiguation, and CLI reference, leaving no critical gaps for invocation.

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

Parameters3/5

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

Schema coverage is 100% with adequate parameter descriptions. The description reinforces the optional parameter's disambiguation purpose but adds only marginal value over the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Get a collection by id' with a CLI equivalent, specifying the verb and resource. It implicitly differentiates from sibling 'get' tools by focusing on collections, but does not explicitly contrast with similar tools like keychain_list_collections.

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

Usage Guidelines3/5

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

The description provides guidance on using organizationId for disambiguation, but does not explain when to choose this tool over alternatives (e.g., listing tools) or when not to use it. The guidance is minimal and context-limited.

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

keychain_get_exposedGet ExposedA
Read-only

Check the exposed-password count returned by bw get exposed for a search term. Terms follow bw lookup behavior and may be ambiguous; use an exact item id or precise selector when possible. Not-found results return a null scalar value instead of a thrown not-found error.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id; exact ids avoid ambiguous bw lookups.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint annotation already signals this is a safe read operation. The description adds valuable behavioral detail beyond this: not-found results return a null scalar rather than throwing an error, and lookups may be ambiguous. This is useful context for agent error handling.

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

Conciseness5/5

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

The description is three sentences with no fluff. The primary action is stated first, followed by practical usage guidance and error behavior, each sentence earning its place.

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

Completeness5/5

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

For a single-parameter read-only tool with an output schema, the description covers the purpose, lookup semantics, ambiguity caveat, and not-found behavior. Nothing critical is missing for an agent to invoke this tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the 'term' parameter. The description adds meaning by explaining that terms follow bw lookup behavior and may be ambiguous, and by recommending exact ids to avoid ambiguity, which goes beyond the schema's bare definition.

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

Purpose5/5

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

The description clearly states the tool checks the exposed-password count returned by 'bw get exposed' for a search term. This names a specific verb, resource, and result type, and the operation is distinct from sibling keychain getters.

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

Usage Guidelines4/5

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

The description gives clear usage context: it checks exposed-password counts and warns that terms follow bw lookup behavior and may be ambiguous, recommending exact item ids or precise selectors. It does not explicitly name alternatives or exclusion criteria, but the tool's purpose is specific enough that the guidance is sufficient.

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

keychain_get_folderGet FolderA
Read-only

Get one personal Bitwarden folder by stable folder id via bw get folder. Use this to verify a folder id before item updates; returns safe folder metadata only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds context by stating 'returns safe folder metadata only,' which clarifies the non-sensitive nature of the output and goes beyond the annotation.

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

Conciseness5/5

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

The description is two sentences long, front-loads the core action, and includes a usage hint without unnecessary words. Every sentence adds value.

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

Completeness4/5

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

Given low complexity (one param, no output schema, annotations present), the description covers purpose, usage hint, and return nature. It lacks mention of error handling (e.g., invalid id), but that is minor for this simple tool.

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

Parameters4/5

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

Input schema has 100% coverage with a description for the 'id' parameter. The description adds the nuance that the id is 'stable', which is not in the schema, helping the agent understand the identifier's persistence.

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

Purpose5/5

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

The description clearly states the action ('Get one personal Bitwarden folder') and the resource ('by stable folder id'), distinguishing it from sibling tools like list_folders or create_folder. The verb 'get' and resource 'folder' 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.

Usage Guidelines4/5

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

The description provides a concrete usage scenario: 'Use this to verify a folder id before item updates.' This tells the agent when to invoke the tool, though it does not explicitly exclude scenarios where other tools (e.g., list_folders) would be more appropriate.

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

keychain_get_itemGet ItemA
Read-only

Get the full vault item by stable item id. Secret fields and signed attachment URLs are redacted by default; pass reveal=true only when the caller is allowed to receive secrets. When attachments are present, use keychain_get_attachment with this item id plus the listed attachment id or filename to download file bytes. If an expected recently-added attachment is missing, run keychain_sync and call keychain_get_item again before retrying.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses that secrets and signed attachment URLs are redacted by default, and that reveal=true can return secrets when permitted. Also explains attachment retrieval workflow. Annotations already declare readOnlyHint=true, and description does not contradict.

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

Conciseness5/5

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

Three focused sentences: first states purpose, second explains reveal, third details attachment handling. No wasted words, front-loaded with main action.

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

Completeness3/5

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

Adequately covers key behaviors (redaction, attachments, sync), but without an output schema, it lacks description of the returned item structure or fields. Could be more complete for a retrieval tool.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline of 3. The description adds value by explaining the reveal parameter's permission context ('pass reveal=true only when the caller is allowed to receive secrets'), going beyond the schema's description.

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

Purpose5/5

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

The description clearly states the verb ('get') and resource ('full vault item by stable item id'), and distinguishes from sibling tools like keychain_get_attachment by explaining when to 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.

Usage Guidelines4/5

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

Provides explicit guidance on when to use keychain_get_attachment and keychain_sync as alternatives, and mentions the reveal parameter's use. Lacks a direct 'when not to use' statement 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.

keychain_get_notesGet NotesA
Read-only

Get item notes matched by bw get notes for a search term. Notes are treated as secret output here: value is null unless reveal=true and NOREVEAL is not active. Terms can be ambiguous, so prefer an exact item id when possible.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id; exact ids avoid ambiguous bw lookups.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

ReadOnlyHint is already present, and the description adds meaningful behavior beyond it: notes are treated as secret output, value is null unless reveal=true, and NOREVEAL can force redaction. This is valuable disclosure for an agent deciding whether secrets will be exposed.

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

Conciseness5/5

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

Three focused sentences, front-loaded with purpose, followed by important secret-handling nuance and a clear usage tip. Every sentence earns its place and nothing feels redundant.

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

Completeness4/5

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

For a simple two-parameter tool with full schema coverage, an output schema, and readOnly annotation, the description is nearly complete. It covers purpose, secret behavior, and ambiguity guidance; only a named sibling alternative or explicit non-use condition is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds practical parameter meaning: exact ids avoid ambiguous bw lookups, and reveal=true can still be overridden by NOREVEAL. This goes beyond the schema's descriptions.

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

Purpose4/5

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

Description states a specific verb+resource: 'Get item notes' with search-term matching. It is clear and distinct from the clustered get_* siblings because it targets notes, but it does not explicitly differentiate itself from those siblings.

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

Usage Guidelines3/5

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

Provides practical context: terms can be ambiguous and exact item ids are preferred. However, it does not explicitly state when to use this tool versus alternatives such as keychain_get_item, nor when not to use it.

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

keychain_get_organizationGet OrganizationA
Read-only

Get one Bitwarden organization by stable organization id via bw get organization. Use list_organizations first when the id is unknown; returns organization metadata only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A4.7/5.0
Behavior5/5

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

The annotation indicates readOnlyHint true, and the description adds that the tool 'returns organization metadata only', clarifying the scope of output. No contradictions.

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

Conciseness5/5

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

Two sentences with no fluff. The purpose is stated first, followed by usage guidance. Every sentence adds value.

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

Completeness5/5

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

Given the simple input (one parameter), no output schema, and the need to differentiate from list_organizations, the description is complete. It covers what, how, and return type.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter description already explains the ID's origin. The description repeats 'by stable organization id' but adds no new semantic detail beyond the schema.

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

Purpose5/5

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

The description clearly states the tool gets a single Bitwarden organization by its stable ID, using the 'bw get organization' command. It distinguishes itself from sibling tools like 'list_organizations' and creation/deletion tools.

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

Usage Guidelines5/5

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

Explicitly advises to use 'list_organizations' first when the ID is unknown, providing clear guidance on when to use this tool versus alternatives.

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

keychain_get_org_collectionGet Org CollectionA
Read-only

Get an organization collection by id (bw get org-collection). organizationId is optional and narrows the org-scoped lookup when provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
organizationIdNoOptional organization id used to disambiguate the org collection lookup.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating safe read. The description adds that the lookup is org-scoped and organizationId is optional, but does not disclose error behavior or other traits beyond what annotations provide.

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

Conciseness5/5

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

Two sentences that are front-loaded with purpose and include a clarifying note. No wasted words; every sentence earns its place.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema, read-only), the description covers the essential purpose and parameter role. It omits error handling or return value details, but for a get-by-id tool, this is generally acceptable.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds little beyond the schema: 'organizationId is optional and narrows the org-scoped lookup' essentially repeats the schema description. No new parameter semantics are provided.

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

Purpose5/5

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

The description clearly states 'Get an organization collection by id', specifying the verb and resource. It distinguishes from sibling tools like keychain_get_collection (non-org) and keychain_list_org_collections (list vs single get).

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

Usage Guidelines3/5

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

The description implies usage (when you have an id), but does not explicitly state when to use this tool vs alternatives like keychain_get_collection or when-not scenarios. No exclusions are provided.

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

keychain_get_passwordGet PasswordA
Read-only

Get a login password by search term (bw get password). The value is null unless reveal=true, and NOREVEAL or KEYCHAIN_NOREVEAL can still force redaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id used for bw get password.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses important runtime behavior beyond the readOnlyHint annotation: the value is null unless reveal=true, and NOREVEAL/KEYCHAIN_NOREVEAL can force redaction. This is essential, non-obvious behavioral context for a secret-retrieval tool.

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

Conciseness5/5

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

Two tight sentences with no filler. The core action is front-loaded, and the critical caveat about reveal/redaction is included without unnecessary detail.

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

Completeness4/5

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

For a simple two-parameter getter with an output schema and readOnlyHint annotation, the description is nearly complete. The only gap is explicit guidance on when to choose this over closely related sibling getters.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents both parameters well. The description adds value by clarifying the null-result behavior when reveal is false, which goes slightly beyond the schema's phrasing.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get a login password by search term', and references the underlying 'bw get password' command. This clearly distinguishes it from sibling getters like keychain_get_password_history or keychain_get_item.

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

Usage Guidelines3/5

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

The description implies use for retrieving a login password via a search term or ID, but it does not explicitly state when to prefer this over alternatives such as keychain_get_item or keychain_get_password_history. Usage context is present but left to inference.

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

keychain_get_password_historyGet Password HistoryA
Read-only

Get an item password history (if any). Returning passwords requires reveal=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

The description adds value beyond the readOnlyHint annotation by noting that returning passwords requires reveal=true. This is important behavioral context that helps the agent understand the parameter's effect and potential security implications.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences that directly convey the purpose and a key behavioral note. There is no superfluous text.

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

Completeness4/5

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

Given that an output schema exists, the description does not need to detail return values. The tool's purpose is simple, and the description covers the essential behavioral note about reveal. It could be improved by hinting at what happens when no history exists, but it is still adequate.

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

Parameters3/5

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

The input schema already provides detailed descriptions for both parameters, with 100% coverage. The description's mention of reveal=true adds no new information beyond what the schema states, 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.

Purpose4/5

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

The description clearly states the action ('Get') and the resource ('item password history'), which is specific and well-defined. However, it does not explicitly differentiate this tool from sibling tools that also retrieve password-related data, such as keychain_get_password or keychain_get_item.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description does not mention any prerequisites, exclusion criteria, or recommended usage scenarios.

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

keychain_get_totpGet TOTPA
Read-only

Get the current TOTP code by search term (bw get totp). The value is null unless reveal=true, and NOREVEAL or KEYCHAIN_NOREVEAL can still force redaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id used for bw get totp.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses a key behavioral nuance: the value is null unless reveal=true, and NOREVEAL/KEYCHAIN_NOREVEAL can still force redaction. This is valuable context that the annotation alone does not convey.

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

Conciseness5/5

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

Two focused sentences, front-loaded with the core purpose and followed by the most important behavioral caveat. No wasted words.

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

Completeness5/5

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

Given the simple two-parameter schema, readOnly annotation, and available output schema, this description covers the essential invocation behavior and redaction caveat. Nothing critical is missing 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.

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds meaning by explaining the conditional null behavior tied to reveal and the environment variable redaction, going beyond the schema's default description.

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

Purpose5/5

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

The description clearly states the action (Get), the resource (current TOTP code), and the lookup method (by search term). It also references the underlying 'bw get totp' command, distinguishing it from sibling getter tools.

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

Usage Guidelines4/5

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

The description provides clear context for when this tool is used: to retrieve a TOTP code by search term. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous and the sibling getter tools are already differentiated by resource type.

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

keychain_get_uriGet URIA
Read-only

Get the first login URI matched by bw get uri for a search term. Terms can be names, ids, or other bw-supported selectors and may be ambiguous, so use an exact item id when possible. URI values are returned as non-secret scalar results.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id; exact ids avoid ambiguous bw lookups.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes beyond the readOnlyHint annotation by disclosing that only the first login URI is returned, that the match may be ambiguous, and that URI values are non-secret scalar results. This gives useful behavioral expectations without contradicting the annotation.

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

Conciseness5/5

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

Three tight sentences with no filler. The core behavior is front-loaded, the ambiguity warning is directly actionable, and the output-type note is the last sentence. Every sentence earns its place.

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

Completeness5/5

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

For a single-parameter read-only tool with an output schema, the description covers what the tool does, how to select the term, the ambiguity risk, and the nature of the result. Nothing important 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.

Parameters4/5

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

Schema coverage is 100%, so the description does not need to re-document the parameter. It adds value by clarifying that the term may be a name, id, or bw-supported selector and that ambiguity is possible, reinforcing the exact-id guidance.

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

Purpose5/5

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

States a specific verb and resource: it retrieves the first login URI matched by 'bw get uri' for a search term. This clearly distinguishes it from sibling tools like keychain_get_item, keychain_get_notes, or keychain_get_username.

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

Usage Guidelines4/5

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

Provides clear context on how to invoke the tool: terms can be names, ids, or other bw selectors, and exact item ids should be preferred to avoid ambiguity. It does not explicitly name alternatives or exclusion conditions, but the purpose is specific enough that an agent can tell when this tool applies.

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

keychain_get_usernameGet UsernameA
Read-only

Get a login username matched by bw get username for a search term. Usernames are treated as non-secret scalar output, but exact item ids are safest for ambiguous names.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesSearch term or exact item id used for bw get username.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint already true, the description adds meaningful behavioral context: usernames are treated as non-secret scalar output, and exact item IDs are safer for ambiguous names. This gives expectations beyond annotations. No contradiction with the read-only annotation.

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

Conciseness5/5

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

Two dense sentences: the first states the action and matching behavior, the second warns about ambiguity and exact IDs. No filler or repetition beyond minor overlap with the schema.

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

Completeness4/5

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

For a single-parameter, read-only getter with an output schema, the description is sufficient: it explains what is returned, how the term is matched, and the safest usage caveat. Explicit sibling routing would improve completeness but is not strictly required for such a simple tool.

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

Parameters4/5

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

Schema coverage is 100% and the parameter description already defines 'term'. The tool description reinforces that term is a search term or exact item ID and links it to the bw get username behavior, adding retrieval semantics. It doesn't provide examples or formats, but the schema already carries the needed detail.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get a login username' matched by 'bw get username' for a search term. This clearly distinguishes it from sibling getters like keychain_get_password, keychain_get_uri, or keychain_get_notes by naming the exact field returned.

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

Usage Guidelines3/5

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

The description implies the tool is used to fetch a username by search term and recommends exact item IDs for ambiguous names, but it never explicitly states when to prefer this over get_item or search_items, nor does it name any alternatives or exclusions.

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

keychain_list_collectionsList CollectionsA
Read-only

List collections in the current vault, optionally filtered by organizationId. Use list_org_collections when you already know the organization and only want organization-scoped collections.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum returned rows (1-500).
searchNoOptional text filter; empty means no text filter.
organizationIdNoOptional organization id filter for collections.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. Description adds the filtering behavior based on organizationId and clarifies vault scope, which provides useful context beyond annotations.

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

Conciseness5/5

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

Two efficient sentences: first states purpose and optional filter, second gives sibling alternative. No waste.

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

Completeness4/5

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

Adequate for a simple list tool with optional filters. No output schema, but return format is typical for a list. Missing pagination mention, but limit parameter covers that.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description only reiterates 'optionally filtered by organizationId' without adding extra detail beyond schema descriptions.

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

Purpose5/5

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

Clear verb+resource: 'List collections in the current vault'. Differentiates from sibling 'list_org_collections' via scope mention.

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

Usage Guidelines5/5

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

Explicitly states when to use alternative (list_org_collections) and optional filtering by organizationId, giving clear context.

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

keychain_list_foldersList FoldersA
Read-only

List personal Bitwarden folders visible to the current user. Use this to discover folder ids for item organization; returns safe folder id/name summaries only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum returned rows (1-500).
searchNoOptional text filter; empty means no text filter.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true. Description adds that it returns 'safe folder id/name summaries only', implying no sensitive data, consistent with read-only behavior.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with purpose and outcome.

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

Completeness5/5

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

Simple read tool with 2 optional params. Description explains what is returned (folder id/name summaries). No output schema needed.

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

Parameters3/5

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

Schema has 100% coverage for both parameters. Description does not add extra meaning beyond schema descriptions, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states verb 'list', resource 'folders', scope 'visible to current user', and purpose 'discover folder ids'. Distinguishes from siblings like keychain_list_collections.

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

Usage Guidelines4/5

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

Explicitly says when to use: to discover folder ids for item organization. No explicit exclusions, 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.

keychain_list_organizationsList OrganizationsA
Read-only

List organizations available to the current Bitwarden user so you can discover the organizationId required for org-scoped tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum returned rows (1-500).
searchNoOptional text filter; empty means no text filter.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so no safety contradiction. The description adds context (available to current user) but does not disclose pagination behavior or ordering despite schema having a limit parameter.

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

Conciseness5/5

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

Single sentence, front-loaded with verb and resource, no fluff.

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

Completeness4/5

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

Given no output schema, the description explains the purpose well but does not mention return structure or fields (e.g., that it returns id, name). However, as a simple list tool, the description is reasonably complete.

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

Parameters3/5

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

Schema coverage is 100%, so description carries minimal burden. The description adds no parameter-specific meaning beyond the schema's own descriptions for search and limit.

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

Purpose5/5

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

Clearly states the action (list), resource (organizations), and specific purpose (discover organizationId for org-scoped tools). This distinguishes it from sibling tools like keychain_get_organization which retrieves a single org by ID.

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

Usage Guidelines3/5

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

The description implies when to use (when you need an organization ID for org-scoped tools) but does not provide when-not-to-use or explicitly name alternatives among siblings.

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

keychain_list_org_collectionsList Org CollectionsA
Read-only

List organization-scoped collections for the required organizationId. Use this after discovering an organization to find collection ids; returns safe id/name summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum returned rows (1-500).
searchNoOptional text filter; empty means no text filter.
organizationIdYesBitwarden organization id; required for org-scoped collection operations.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, and the description adds 'returns safe id/name summaries', which informs the agent about output nature and safety. This complements the annotation well.

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

Conciseness5/5

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

The description is two sentences, no wasted words. It immediately conveys purpose, usage context, and output nature, front-loading key information.

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

Completeness4/5

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

Given the lack of output schema, the description partially compensates by stating return type. It could elaborate on limit and search behavior, but those are in the schema parameters. Overall adequate for a list operation.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described. The description does not add new semantic meaning beyond the schema, meeting the baseline for a well-documented schema.

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

Purpose5/5

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

The description clearly states 'List organization-scoped collections for the required organizationId', specifying verb, resource, and scope. This distinguishes it from siblings like keychain_list_collections (general) and keychain_get_org_collection (single).

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

Usage Guidelines4/5

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

The description advises 'Use this after discovering an organization to find collection ids', providing clear context for when to use. However, it does not explicitly exclude other alternatives or state 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.

keychain_move_item_to_organizationMove Item To OrganizationA

Move an existing vault item into the required organizationId. Optionally pass collectionIds to assign organization collections during the move; collection ids are organization collections, not personal folders. Returns the moved item summary with normal redaction rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
collectionIdsNoBitwarden collection ids, not folder ids.
organizationIdYesBitwarden organization id; required for org-scoped collection operations.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds that the tool returns a summary with normal redaction rules, but it does not clarify whether the original item is removed or copied (though 'move' implies removal). No mention of required permissions or side effects beyond the return value. The description adds some context but could be more explicit.

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

Conciseness5/5

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

The description is three concise sentences: purpose, optional parameter clarification, and return summary. No redundant or extraneous information. Front-loaded with the core action.

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

Completeness5/5

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

Given the tool's simplicity (3 params, no output schema, no nested objects), the description fully covers what the tool does, how parameters are used, and what to expect from the return value. No additional context is necessary 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.

Parameters4/5

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

With 100% schema coverage, the description adds value beyond schema definitions by clarifying that collectionIds are 'organization collections, not personal folders' and explaining the return behavior. This helps an agent correctly interpret the optional parameter and the tool's output.

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

Purpose5/5

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

The description explicitly states the action: 'Move an existing vault item into the required organizationId.' It clearly identifies the resource (vault item) and the required parameter (organizationId). This distinguishes it from siblings like keychain_update_item or keychain_delete_item, which perform different operations.

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

Usage Guidelines4/5

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

The description indicates when to use the tool (to move an item to an organization) and mentions optional collectionIds. It does not explicitly state when not to use it or suggest alternatives, but the purpose is clear enough that an agent can infer appropriate usage from the sibling tool names (e.g., using keychain_update_item for edits instead).

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

keychain_receiveReceiveA
Read-only

Receive a Bitwarden Send from an HTTPS url. Provide password when the Send is protected; obj=true returns the parsed JSON object, downloadFile=true downloads file bytes as base64, and the default returns received text. This reads a shared Send and does not create or modify vault items.

ParametersJSON Schema
NameRequiredDescriptionDefault
objNoReturn the full parsed Send JSON object instead of raw text.
urlYesHTTPS Bitwarden Send URL to receive.
passwordNoPassword required by the Send, when one was configured.
downloadFileNoDownload a file Send and return filename, bytes, and contentBase64.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and openWorldHint. Description reinforces that it reads a shared Send without modifying vault items, and details behavior for different modes. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with main purpose, no unnecessary words. Efficient and easy to parse.

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

Completeness4/5

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

Covers return value types for all modes (text, JSON, file bytes). No output schema exists, so description compensates. Missing error handling details, but adequate given annotations and schema.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for each parameter. Description adds natural language context but does not significantly expand beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool receives a Bitwarden Send from an HTTPS URL, using specific verbs and resource. It distinguishes from siblings like keychain_send_get which retrieves own Sends, and vault item tools.

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

Usage Guidelines4/5

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

Provides clear guidance on when to use each flag (obj, downloadFile) and when to provide password. Implicitly contrasts with keychain_send_get for retrieving self-created Sends, but does not explicitly state alternatives.

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

keychain_restore_itemRestore ItemA

Restore a soft-deleted vault item from trash by id. Use this after delete_item or delete_items when permanent was omitted or false; hard-deleted items cannot be restored. Returns the restored item summary with normal redaction rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate non-read-only and non-destructive behavior. The description adds that the tool returns 'the restored item summary with normal redaction rules', providing return behavior beyond annotations.

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

Conciseness5/5

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

Two sentences effectively cover purpose, usage context, and return value with no redundant information. Front-loaded with the core action.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description thoroughly explains preconditions (soft-deleted), limitations (hard-deleted cannot be restored), and output summary, making it fully self-contained.

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

Parameters3/5

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

With 100% schema description coverage for the single parameter 'id', the description does not add extra semantic value beyond the schema, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states the action 'restore', the resource 'soft-deleted vault item from trash', and specifies it works 'by id'. It differentiates from sibling deletion tools by indicating the context after delete operations.

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

Usage Guidelines5/5

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

Explicitly states when to use: after delete_item or delete_items when permanent was omitted or false. Also clarifies that hard-deleted items cannot be restored, providing clear exclusion criteria.

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

keychain_sdk_versionCLI VersionA
Read-only

Return the Bitwarden CLI version reported by bw --version. Use this read-only check when diagnosing CLI/runtime compatibility without touching vault data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
versionYes

TDQS

A4.9/5.0
Behavior5/5

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

Description adds context beyond the readOnlyHint annotation by specifying it runs 'bw --version' and does not touch vault data, enhancing transparency.

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

Conciseness5/5

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

Two sentences, front-loaded with the main action and purpose, with no wasted words.

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

Completeness5/5

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

For a simple version check with no parameters and an output schema present, the description fully covers what the tool does and when to use it.

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

Parameters4/5

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

No parameters exist, so the description does not need to add parameter info; baseline 4 is appropriate.

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

Purpose5/5

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

Description clearly states the tool returns the Bitwarden CLI version using a specific command, uniquely distinguishing it from sibling tools that interact with vault data.

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

Usage Guidelines5/5

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

Explicitly advises using this read-only check for diagnosing CLI/runtime compatibility, implying no vault data is touched, which differentiates it from other tools.

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

keychain_search_itemsSearch ItemsA
Read-only

Search vault items by text and filters (org/folder/collection/url). This wraps bw list items --search, which does not reliably search custom field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional URL filter for item lookup.
textNoOptional text filter for item names, usernames, URIs, and other indexed fields. Custom field values are not reliably searched.
typeNoOptional item type filter: login, note, ssh_key, card, or identity.
limitNoMaximum returned rows (1-500).
trashNoSearch items in trash when true.
folderIdNoPersonal folder id, not an organization collection id.
collectionIdNoBitwarden collection id, not a folder id.
organizationIdNoBitwarden organization id filter for org-scoped item search.

TDQS

A4.4/5.0
Behavior5/5

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

The description provides valuable behavioral context beyond the readOnlyHint annotation, including the underlying CLI command and the unreliability of custom field searches.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the core functionality, and every sentence adds value.

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

Completeness4/5

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

For a search tool with 8 optional parameters, the description covers the main purpose and a key limitation. It could mention pagination or result format, but schema covers parameters well.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. The schema already describes all parameters adequately.

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

Purpose5/5

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

The description clearly states it searches vault items by text and filters, and distinguishes itself from siblings by mentioning the underlying CLI command and a specific limitation about custom field values.

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

Usage Guidelines4/5

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

The description explicitly mentions the limitation regarding custom field search, guiding when not to rely on it. However, it does not directly contrast with alternatives like keychain_get_item.

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

keychain_send_createSend CreateA

Quick-create a Bitwarden Send through bw send. Use type=text with text, or type=file with filename plus contentBase64; deleteInDays controls expiration deletion, maxAccessCount limits accesses, password protects the Send, and emails grant email-gated access. For advanced JSON templates or edits, use send_create_encoded and send_edit instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional Send display name.
textNoText content for type=text Sends.
typeYesSend payload type: text uses text; file uses filename plus contentBase64.
notesNoOptional private notes on the Send.
emailsNoRecipient email addresses for Bitwarden Send email-gated access. Mutually exclusive with password; callers still need to share the Send URL.
hiddenNoHide text Send content by default when recipients open it.
filenameNoVisible filename required with contentBase64 for file sends.
passwordNoOptional Send access password required by recipients.
fullObjectNoAsk bw send to return the full Send object when supported.
deleteInDaysNoDays until Bitwarden automatically deletes the Send (1-3650).
contentBase64NoBase64-encoded file bytes for file sends, not a filesystem path.
maxAccessCountNoMaximum number of Send accesses before it becomes unavailable.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false and destructiveHint=false, confirming mutation but not destruction. The description adds behavioral context: deleteInDays controls deletion, maxAccessCount limits accesses, password protects, emails grant email-gated access. This adds value beyond annotations without contradiction.

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

Conciseness5/5

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

The description is two sentences: the first sentence covers core behavior and key parameters, the second sentence directs to alternatives. It is front-loaded, concise, and includes no redundant information.

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

Completeness5/5

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

Despite 12 parameters and no output schema, the description covers the type dichotomy, key constraints (deleteInDays, maxAccessCount, password, emails), and references alternatives. It addresses the complexity well and leaves no major gaps.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds relational context (type=text with text; type=file with filename+contentBase64; emails mutually exclusive with password) that clarifies parameter interactions beyond the schema. This justifies a higher score.

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

Purpose5/5

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

The description clearly states the tool creates a Bitwarden Send ('Quick-create a Bitwarden Send') and distinguishes it from siblings by mentioning send_create_encoded and send_edit for advanced JSON/edits. The verb and resource are specific, and sibling differentiation is explicit.

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

Usage Guidelines4/5

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

The description explicitly mentions alternatives for advanced cases (send_create_encoded, send_edit), providing clear guidance on when to use this tool vs others. It lacks explicit when-not-to use 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.

keychain_send_create_encodedSend Create (Encoded JSON)A

Create a Send with the advanced bw send create flow. Provide an encodedJson template or raw json to encode, or create directly from text/file fields; file uses filename plus contentBase64 and hidden only affects text Sends. Use this when you need template-level fields beyond the quick send_create options.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoDirect file payload alternative using filename and contentBase64.
jsonNoRaw Send JSON template; the server encodes it before bw send create.
textNoDirect text payload alternative to encodedJson/json.
hiddenNoHide direct text Send content by default when true.
encodedJsonNoBase64-encoded Send JSON template passed to bw send create.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate non-readOnly and non-destructive. Description adds that file uses contentBase64 (not filesystem), but does not detail side effects, permissions needed, or error behavior.

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

Conciseness5/5

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

Two sentences, no unnecessary words, front-loaded with action and then usage condition. Efficient and clear.

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

Completeness4/5

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

Covers main input methods and sibling differentiation, but lacks mention of return value (e.g., created Send ID) and any validation constraints, given no output schema. Almost complete.

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

Parameters4/5

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

Schema coverage is 100%, and description adds value by clarifying the three input methods (encodedJson, json, text/file), the relationship between hidden and text, and that file's contentBase64 is not a path.

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

Purpose5/5

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

Clearly states it creates a Send using advanced flow, distinguishes from quick send_create sibling by noting it supports template-level fields.

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

Usage Guidelines4/5

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

Explicitly says when to use (for template-level fields beyond quick options). Provides brief usage hints for file and hidden fields, but doesn't specify when to avoid or list alternatives beyond quick send_create.

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

keychain_send_deleteSend DeleteA
Destructive

Delete a Bitwarden Send by id through bw send delete. This is destructive for the Send and its shared content; it does not delete any vault item that may have been used to create it. The visible text includes the requested Send id, and structured output includes both that id and the bw result payload when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate destructiveness, but description adds nuance: it destroys the Send and its shared content, but not vault items. No contradiction.

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

Conciseness4/5

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

Three sentences, front-loaded with action. Efficient but slightly verbose in qualification.

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

Completeness4/5

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

Adequate for a simple delete tool with one param. Mentions destructiveness and what it doesn't affect, but lacks edge cases like invalid id.

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

Parameters3/5

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

Schema covers id param 100%. Description adds no additional param info beyond schema.

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

Purpose5/5

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

Clear verb+resource: 'Delete a Bitwarden Send by id'. Distinguishes from sibling delete tools by specifying it's for Sends, not vault items.

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

Usage Guidelines3/5

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

No explicit when/when-not or alternatives. Implicitly for deleting Sends, but no guidance vs. sibling delete tools.

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

keychain_send_editSend Edit (Encoded JSON)B

Edit an existing Send with the advanced bw send edit flow. Provide encodedJson or raw json containing the Send edit payload; raw json is encoded before invoking bw. Optional itemId maps to --itemid for item-linked Send edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonNoRaw Send edit JSON payload; the server encodes it before bw send edit.
itemIdNoOptional parent item id passed to bw send edit as --itemid.
encodedJsonNoBase64-encoded Send edit JSON payload passed to bw send edit.

TDQS

B3.4/5.0
Behavior2/5

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

With annotations providing readOnlyHint=false and destructiveHint=false, the description does not add behavioral details such as side effects, authentication requirements, or rate limits. It mentions encoding but lacks deeper context.

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

Conciseness4/5

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

The description is two sentences with no redundant information, but could be more structured for quick scanning.

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

Completeness3/5

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

Given the tool has no output schema and annotations indicate an open world, the description covers input options but omits expected output, error states, or usage constraints.

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

Parameters3/5

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

Schema coverage is 100%, and the description clarifies the relationship between 'encodedJson' and 'json' (encoding process) and the 'itemId' mapping. This adds some value beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool edits an existing Send using the advanced 'bw send edit' flow. This distinguishes it from sibling tools like 'keychain_send_create' and 'keychain_send_delete'.

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

Usage Guidelines3/5

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

The description explains when to use 'encodedJson' vs 'json' and mentions the optional 'itemId', but does not explicitly state when not to use the tool or compare it to alternatives.

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

keychain_send_getSend GetA
Read-only

Get Sends owned by you. Use text=true to return text content; file Sends return metadata including accessUrl. To download file Send bytes, call receive with that accessUrl and downloadFile=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
textNoReturn the Send text content instead of JSON metadata.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only and open-world behavior. The description adds useful behavioral details: returns text content or file metadata with accessUrl, and directs to receive for downloads. No contradictions with annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, no extraneous words. Every sentence adds value: purpose, behavior with text, and next step for files.

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

Completeness4/5

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

No output schema exists, so the description adequately covers return types (text or file metadata) and provides a workflow hint (use receive). Could mention error cases, but for a read-only tool with good annotations, it's fairly complete.

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

Parameters4/5

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

Schema coverage is 100% with clear parameter descriptions. The description reinforces the meaning of the text parameter and adds that file Sends return metadata including accessUrl, providing extra context beyond the schema.

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

Purpose5/5

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

The description clearly states it retrieves Sends owned by you, with a specific verb 'Get' and resource 'Sends'. It differentiates from sibling tools like keychain_send_list (list vs single get) and keychain_receive (for downloading file bytes).

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

Usage Guidelines4/5

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

Provides explicit guidance on using text=true for text content and default for file metadata, and directs to keychain_receive for downloading file bytes. Missing explicit contrast with keychain_send_list, 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.

keychain_send_listSend ListA
Read-only

List all the Sends owned by you (bw send list). This is read-only and does not mutate the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

The description states 'This is read-only and does not mutate the vault', which aligns with the readOnlyHint annotation but adds no new behavioral context beyond what the annotation already provides. For a tool with annotations, the description adds minimal value.

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

Conciseness5/5

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

The description consists of two concise sentences. The first sentence states the main purpose, and the second clarifies the read-only nature. No unnecessary words or redundancy.

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

Completeness3/5

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

Given the tool's simplicity (no parameters, no output schema), the description is adequate but lacks details about the output format, expected fields, or any limitations like pagination. It meets minimum viability but has gaps.

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

Parameters4/5

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

The tool has no parameters, so schema coverage is effectively 100%. The description correctly omits parameter details. Per guidelines, baseline for zero parameters is 4.

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

Purpose5/5

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

The description clearly states the tool lists all Sends owned by the user, using the verb 'List' and specifying the resource 'Sends owned by you'. It distinguishes itself from sibling tools like keychain_send_get and keychain_send_create by focusing on listing all sends.

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

Usage Guidelines3/5

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

The description implies usage when a user wants to list all sends, but provides no explicit guidance on when to use it versus other tools like keychain_send_get or keychain_list_collections. No alternatives or exclusions are mentioned.

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

keychain_send_remove_passwordSend Remove PasswordA
Destructive

Remove a Send's saved password so recipients no longer need that password. This is destructive for the Send password only; it does not delete the Send content. Use send_delete when the entire Send should be removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds nuance by specifying the destruction is limited to the password, not the Send content. No contradictions.

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

Conciseness5/5

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

Two sentences, front-loaded with action and distinction, no fluff. Every sentence adds value.

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

Completeness5/5

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

For a simple, single-parameter tool with no output schema, the description fully covers its effect, boundary, and relation to sibling tool, making it complete.

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

Parameters3/5

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

With 100% schema description coverage, the description does not add extra meaning to the single 'id' parameter beyond what the schema provides. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool removes a Send's saved password and distinguishes itself from send_delete, which deletes the entire Send. It specifies verb and resource.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (remove password only) and directly names the alternative (send_delete for full removal), guiding the agent correctly.

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

keychain_send_templateSend TemplateA
Read-only

Get a Bitwarden Send JSON template from bw send template. Choose a text or file template with object values send.text/text or send.file/file before using encoded create/edit flows. This is read-only and does not create a Send.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectYesTemplate object to fetch: text/send.text for text Sends or file/send.file for file Sends.

TDQS

A4.3/5.0
Behavior4/5

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

The description explicitly states it is read-only and does not create a Send, matching the annotations. It adds value by clarifying the no-creation behavior, though annotations already indicate read-only.

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

Conciseness5/5

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

The description is three concise sentences with no wasted words. It front-loads the purpose, then provides usage context and behavioral transparency.

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

Completeness5/5

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

For a simple tool with one parameter, clear annotations, and no output schema, the description covers purpose, usage, and behavior sufficiently. The agent can understand when and how to use it.

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

Parameters3/5

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

The input schema fully describes the parameter with 100% coverage, including enum values and descriptions. The tool description reiterates the parameter's role but does not add new semantic meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it retrieves a Bitwarden Send JSON template, specifying verb 'get' and resource 'template'. It distinguishes from sibling send tools by noting it is a preparatory step before using encoded create/edit flows.

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

Usage Guidelines4/5

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

The description advises using this tool before encoded create/edit flows, providing context on when to use it. However, it lacks explicit exclusions or alternatives, so it's clear but not fully comprehensive.

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

keychain_set_login_urisSet Login URIsA

Set or update the URI list on a login item. mode=replace overwrites the full list; mode=merge updates existing URIs and adds new ones by URI. Match values can be domain, host, startsWith, exact, regex, or never.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
modeNoURI merge behavior: replace overwrites the full list; merge updates existing URIs and adds new ones by URI.
urisYesURI entries to store or update on the login item.
revealNoWhether secret values are returned; default false and can be forced false by NOREVEAL.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false) indicate a non-read, non-destructive write operation. The description adds value by explaining the behavior of 'replace' and 'merge' modes and the allowed match values, which goes beyond the annotations. However, it doesn't mention side effects like confirmation or permission requirements.

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

Conciseness5/5

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

The description consists of two concise sentences. The first sentence clearly states the function and the two modes, and the second lists the valid match values. No unnecessary words or repetition.

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

Completeness3/5

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

The tool has no output schema, so the description should mention what the tool returns (e.g., success, updated item). It also lacks context about prerequisites (e.g., id must refer to an existing item) or error handling. The description is adequate for simple usage but incomplete for a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description provides a brief translation: 'mode=replace overwrites the full list; mode=merge updates existing URIs and adds new ones by URI' and lists match values, but these add minimal meaning beyond the schema's own descriptions.

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

Purpose5/5

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

The description states 'Set or update the URI list on a login item', which is a specific verb and resource. It clearly differentiates from siblings like keychain_update_item by focusing solely on URIs, and the additional details on modes and match values reinforce its purpose.

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

Usage Guidelines3/5

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

The description implies when to use the tool (for setting or updating URIs with two modes) but does not explicitly state when to prefer it over alternatives like keychain_create_login or keychain_update_item. No exclusions or '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.

keychain_statusVault StatusA
Read-only

Returns Bitwarden CLI status (locked/unlocked, server, user). This is a lazy check: not-ready status does not mean later keychain tool calls cannot unlock or recover on demand.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes

TDQS

A4.7/5.0
Behavior5/5

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

The annotation readOnlyHint=true already indicates no mutations. The description adds the valuable behavioral detail that the check is lazy and non-blocking, which is beyond what annotations provide. It also specifies the return information (locked/unlocked, server, user). No contradictions.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The first sentence states the core functionality, and the second adds an important caveat. It is front-loaded and efficient.

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

Completeness5/5

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

Given the tool has no parameters and an output schema exists, the description is complete. It mentions the key output fields and adds behavioral context. There are no gaps.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100%. The description does not need to add parameter details. Following the baseline recommendation for 0 parameters, a score of 4 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool returns Bitwarden CLI status (locked/unlocked, server, user). It uses a specific verb ('Returns') and resource ('status'), which distinguishes it from the many sibling tools that perform mutations or retrievals of specific items.

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

Usage Guidelines4/5

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

The description provides context that this is a 'lazy check' and warns that a 'not-ready status does not mean later keychain tool calls cannot unlock or recover on demand.' This helps the agent avoid premature conclusions. While it doesn't explicitly list alternatives or when not to use, the sibling context makes its role clear.

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

keychain_syncSync VaultA
Read-only

Pull the latest vault data from the server (bw sync). Returns the last sync timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and description confirms read operation ('pull') and specifies return value. No contradictions; adds useful context about behavior.

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

Conciseness5/5

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

Two sentences, no waste. First sentence states action, second clarifies return. Ideal length for a simple tool.

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

Completeness4/5

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

Covers action and return value. With no output schema, includes essential info. Could mention effect on local cache, but adequate for sync tool.

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

Parameters4/5

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

No parameters exist, so description cannot add value beyond schema. Baseline score of 4 for zero-parameter tools.

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

Purpose5/5

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

Description uses verb 'pull' and resource 'vault data', specifies operation 'sync', and distinguishes from siblings by being the only sync tool. Clear and unambiguous.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives like keychain_status or when not to sync. Implied that it updates data, but lacks context.

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

keychain_update_itemUpdate ItemA

Update selected fields of an item by id. The patch is applied to the current item, so omitted fields stay unchanged while explicit nulls and empty arrays overwrite the stored folder, collection, login URI, or custom-field values. Use this for partial edits instead of reconstructing the full item.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStable Bitwarden object id returned by list/search/get/create tools.
patchYesPartial item fields to update on the current item.

TDQS

A4.3/5.0
Behavior5/5

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

The description discloses nuanced patch semantics beyond the annotations: omitted fields stay unchanged, while explicit nulls and empty arrays overwrite folder, collection, login URI, or custom-field values. This is critical for avoiding accidental data loss and is not fully captured by readOnlyHint/destructiveHint.

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

Conciseness5/5

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

Three sentences with no filler. The first sentence states the action, the second explains key semantics, and the third gives usage direction. Information is front-loaded and every sentence earns its place.

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

Completeness4/5

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

The description is largely complete for a patch tool: it explains scope, semantics, and usage, and the input schema documents all fields. It does not describe the return value or success/error behavior, but no output schema exists and the core invocation details are well covered.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful behavior on top of the schema by explaining how omitted vs. explicit null/empty values are treated, which directly affects correct use of the patch object.

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

Purpose4/5

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

Description clearly states the operation: 'Update selected fields of an item by id' with a specific verb and resource. It also conveys partial-update scope, but does not explicitly differentiate from siblings like keychain_set_login_uris that can also modify login URIs.

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

Usage Guidelines4/5

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

The description provides actionable guidance: 'Use this for partial edits instead of reconstructing the full item.' This establishes when the tool is appropriate, though it does not mention specific alternatives or exclusion cases beyond the general partial-edit scenario.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.2.35
    • Changedkeychain_generate2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_generate_username2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_exposed2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_notes2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_password2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_totp6 fields changed
      • removedOutput schema / properties / result / properties / period / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / period / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / result / properties / timeLeft / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / timeLeft / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_uri2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_get_username2 fields changed
      • removedOutput schema / properties / result / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / result / properties / value / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedkeychain_update_item2 fields changed
      • removedInput schema / properties / patch / properties / folderId / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / patch / properties / folderId / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  2. 2 tool updatesv0.2.26
    • Changedkeychain_send_create1 field changed
      • addedInput schema / properties / emails
        Added value: +{
        +  "description": "Recipient email addresses for Bitwarden Send email-gated access. Mutually exclusive with password; callers still need to share the Send URL.",
        +  "items": {
        +    "format": "email",
        +    "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedkeychain_send_get1 field changed
      • removedInput schema / properties / downloadFile
        Removed value: -{
        -  "description": "Download a file Send and return its file bytes.",
        -  "type": "boolean"
        -}
  3. 51 tool updatesv0.2.19
    • Changedkeychain_create_attachment4 fields changed
      • addedInput schema / properties / contentBase64 / description
        Added value: +"Base64-encoded file bytes, not a filesystem path."
      • addedInput schema / properties / filename / description
        Added value: +"Visible attachment or send filename stored in Bitwarden metadata."
      • addedInput schema / properties / itemId / description
        Added value: +"Parent Bitwarden item id for attachment or item-specific operations."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
    • Changedkeychain_create_card17 fields changed
      • addedInput schema / properties / brand / description
        Added value: +"Card brand, such as visa or mastercard."
      • addedInput schema / properties / cardholderName / description
        Added value: +"Cardholder name to store on the card."
      • addedInput schema / properties / code / description
        Added value: +"Card security code or CVV."
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / expMonth / description
        Added value: +"Card expiration month."
      • addedInput schema / properties / expYear / description
        Added value: +"Card expiration year."
      • addedInput schema / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / fields / description
        Added value: +"Custom fields to store on the item. Hidden fields are redacted in summaries."
      • addedInput schema / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / name / description
        Added value: +"Display name for the payment card item."
      • addedInput schema / properties / notes / description
        Added value: +"Optional note text stored on the item."
      • addedInput schema / properties / number / description
        Added value: +"Primary card number to store on the card."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
    • Changedkeychain_create_folder1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Display name for the personal folder."
    • Changedkeychain_create_identity30 fields changed
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / fields / description
        Added value: +"Custom fields to store on the item. Hidden fields are redacted in summaries."
      • addedInput schema / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / identity / description
        Added value: +"Structured identity profile data to store on the item."
      • addedInput schema / properties / identity / properties / address1 / description
        Added value: +"Primary street address line."
      • addedInput schema / properties / identity / properties / address2 / description
        Added value: +"Secondary street address line."
      • addedInput schema / properties / identity / properties / address3 / description
        Added value: +"Tertiary street address line."
      • addedInput schema / properties / identity / properties / city / description
        Added value: +"City for the identity."
      • addedInput schema / properties / identity / properties / company / description
        Added value: +"Company or organization name."
      • addedInput schema / properties / identity / properties / country / description
        Added value: +"Country for the identity."
      • addedInput schema / properties / identity / properties / email / description
        Added value: +"Email address for the identity."
      • addedInput schema / properties / identity / properties / firstName / description
        Added value: +"Given name for the identity."
      • addedInput schema / properties / identity / properties / lastName / description
        Added value: +"Family name for the identity."
      • addedInput schema / properties / identity / properties / licenseNumber / description
        Added value: +"Driver license or similar id number for the identity."
      • addedInput schema / properties / identity / properties / middleName / description
        Added value: +"Middle name for the identity."
      • addedInput schema / properties / identity / properties / passportNumber / description
        Added value: +"Passport number associated with the identity."
      • addedInput schema / properties / identity / properties / phone / description
        Added value: +"Phone number for the identity."
      • addedInput schema / properties / identity / properties / postalCode / description
        Added value: +"Postal or ZIP code for the identity."
      • addedInput schema / properties / identity / properties / ssn / description
        Added value: +"Social security number or equivalent national id."
      • addedInput schema / properties / identity / properties / state / description
        Added value: +"State, province, or region for the identity."
      • addedInput schema / properties / identity / properties / title / description
        Added value: +"Honorific or title for the identity."
      • addedInput schema / properties / identity / properties / username / description
        Added value: +"Username associated with the identity."
      • addedInput schema / properties / name / description
        Added value: +"Display name for the identity item."
      • addedInput schema / properties / notes / description
        Added value: +"Optional note text stored on the item."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
    • Changedkeychain_create_login22 fields changed
      • addedInput schema / properties / attachments / description
        Added value: +"Attachments to add to the item."
      • addedInput schema / properties / attachments / items / description
        Added value: +"Attachment file payload to add to the item."
      • addedInput schema / properties / attachments / items / properties / contentBase64 / description
        Added value: +"Base64-encoded file bytes, not a filesystem path."
      • addedInput schema / properties / attachments / items / properties / filename / description
        Added value: +"Visible attachment or send filename stored in Bitwarden metadata."
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / fields / description
        Added value: +"Custom fields to store on the item. Hidden fields are redacted in summaries."
      • addedInput schema / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / name / description
        Added value: +"Display name for the login item."
      • addedInput schema / properties / notes / description
        Added value: +"Optional free-form notes for the login item."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
      • addedInput schema / properties / password / description
        Added value: +"Password to store on the login item."
      • addedInput schema / properties / totp / description
        Added value: +"TOTP secret or otpauth value for the login item."
      • addedInput schema / properties / uris / description
        Added value: +"URI entries to store or update on the login item."
      • addedInput schema / properties / uris / items / description
        Added value: +"URI entry with match semantics for a login item."
      • addedInput schema / properties / uris / items / properties / match / description
        Added value: +"URI match semantics: domain, host, startsWith, exact, regex, or never; aliases and numeric values are normalized."
      • addedInput schema / properties / uris / items / properties / uri / description
        Added value: +"URI value to store on the login item."
      • addedInput schema / properties / username / description
        Added value: +"Login username or email address."
    • Changedkeychain_create_logins24 fields changed
      • addedInput schema / properties / continueOnError / description
        Added value: +"Continue after failures and return per-item ok/error results when true."
      • addedInput schema / properties / items / description
        Added value: +"Login item payloads to create; each item follows create_login fields and returns its own ok/error result."
      • addedInput schema / properties / items / items / properties / attachments / description
        Added value: +"Attachments to add to the item."
      • addedInput schema / properties / items / items / properties / attachments / items / description
        Added value: +"Attachment file payload to add to the item."
      • addedInput schema / properties / items / items / properties / attachments / items / properties / contentBase64 / description
        Added value: +"Base64-encoded file bytes, not a filesystem path."
      • addedInput schema / properties / items / items / properties / attachments / items / properties / filename / description
        Added value: +"Visible attachment or send filename stored in Bitwarden metadata."
      • addedInput schema / properties / items / items / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / items / items / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / items / items / properties / fields / description
        Added value: +"Custom fields to store on the item. Hidden fields are redacted in summaries."
      • addedInput schema / properties / items / items / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / items / items / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / items / items / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / items / items / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / items / items / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / items / items / properties / name / description
        Added value: +"Display name for the login item."
      • addedInput schema / properties / items / items / properties / notes / description
        Added value: +"Optional free-form notes for the login item."
      • addedInput schema / properties / items / items / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
      • addedInput schema / properties / items / items / properties / password / description
        Added value: +"Password to store on the login item."
      • addedInput schema / properties / items / items / properties / totp / description
        Added value: +"TOTP secret or otpauth value for the login item."
      • addedInput schema / properties / items / items / properties / uris / description
        Added value: +"URI entries to store or update on the login item."
      • addedInput schema / properties / items / items / properties / uris / items / description
        Added value: +"URI entry with match semantics for a login item."
      • addedInput schema / properties / items / items / properties / uris / items / properties / match / description
        Added value: +"URI match semantics: domain, host, startsWith, exact, regex, or never; aliases and numeric values are normalized."
      • addedInput schema / properties / items / items / properties / uris / items / properties / uri / description
        Added value: +"URI value to store on the login item."
      • addedInput schema / properties / items / items / properties / username / description
        Added value: +"Login username or email address."
    • Changedkeychain_create_note11 fields changed
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / fields / description
        Added value: +"Custom fields to store on the item. Hidden fields are redacted in summaries."
      • addedInput schema / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / name / description
        Added value: +"Display name for the secure note item."
      • addedInput schema / properties / notes / description
        Added value: +"Optional note text stored on the item."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
    • Changedkeychain_create_org_collection2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Display name for the organization collection."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; required for org-scoped collection operations."
    • Changedkeychain_create_ssh_key10 fields changed
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / comment / description
        Added value: +"Optional SSH key comment or label."
      • addedInput schema / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / fingerprint / description
        Added value: +"Optional SSH key fingerprint."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / name / description
        Added value: +"Display name for the SSH key item."
      • addedInput schema / properties / notes / description
        Added value: +"Optional note text stored on the item."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; used for org-scoped collection operations."
      • addedInput schema / properties / privateKey / description
        Added value: +"SSH private key material to store on the item."
      • addedInput schema / properties / publicKey / description
        Added value: +"SSH public key material to store on the item."
    • Changedkeychain_delete_attachment3 fields changed
      • addedInput schema / properties / attachmentId / description
        Added value: +"Attachment id returned by item metadata, or an unambiguous filename selector for downloads."
      • addedInput schema / properties / itemId / description
        Added value: +"Parent Bitwarden item id for attachment or item-specific operations."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
    • Changedkeychain_delete_folder1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_delete_item2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / permanent / description
        Added value: +"Hard delete immediately when true; omit or false to soft-delete to trash."
    • Changedkeychain_delete_items2 fields changed
      • addedInput schema / properties / ids / description
        Added value: +"Vault item ids to delete; returns one result per id."
      • addedInput schema / properties / permanent / description
        Added value: +"Hard delete each id immediately when true; omit or false to soft-delete to trash."
    • Changedkeychain_delete_org_collection2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; required for org-scoped collection operations."
    • Changedkeychain_edit_folder2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / name / description
        Added value: +"New display name for the personal folder."
    • Changedkeychain_edit_org_collection3 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / name / description
        Added value: +"New display name for the organization collection."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; required for org-scoped collection operations."
    • Changedkeychain_encode2 fields changed
      • addedInput schema / properties / value / description
        Added value: +"Plain text value to base64-encode."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "encoded": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "encoded"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_generate15 fields changed
      • addedInput schema / properties / ambiguous / description
        Added value: +"Allow ambiguous characters in generated passwords."
      • addedInput schema / properties / capitalize / description
        Added value: +"Capitalize passphrase words when supported by bw."
      • addedInput schema / properties / includeNumber / description
        Added value: +"Include a number in passphrase mode when supported by bw."
      • addedInput schema / properties / length / description
        Added value: +"Password length in characters, between 5 and 256."
      • addedInput schema / properties / lowercase / description
        Added value: +"Include lowercase letters when generating a password."
      • addedInput schema / properties / minNumber / description
        Added value: +"Minimum number of digits to include."
      • addedInput schema / properties / minSpecial / description
        Added value: +"Minimum number of special characters to include."
      • addedInput schema / properties / number / description
        Added value: +"Include numeric digits when generating a password."
      • addedInput schema / properties / passphrase / description
        Added value: +"Generate a word-based passphrase instead of a password."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / separator / description
        Added value: +"Separator to use between words in passphrase mode."
      • addedInput schema / properties / special / description
        Added value: +"Include special characters when generating a password."
      • addedInput schema / properties / uppercase / description
        Added value: +"Include uppercase letters when generating a password."
      • addedInput schema / properties / words / description
        Added value: +"Passphrase word count, between 3 and 50."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "generated",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_generate_username7 fields changed
      • addedInput schema / properties / capitalize / description
        Added value: +"Capitalize the generated random word when supported."
      • addedInput schema / properties / domain / description
        Added value: +"Domain for catch-all email username generation."
      • addedInput schema / properties / email / description
        Added value: +"Base email address for plus-addressed username generation."
      • addedInput schema / properties / includeNumber / description
        Added value: +"Append a number to generated usernames when supported."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / type / description
        Added value: +"Username generation strategy: random word, plus-addressed email, catch-all email, or forwarded alias."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "generated",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_attachment2 fields changed
      • addedInput schema / properties / attachmentId / description
        Added value: +"Attachment id returned by item metadata, or an unambiguous filename selector for downloads."
      • addedInput schema / properties / itemId / description
        Added value: +"Parent Bitwarden item id for attachment or item-specific operations."
    • Changedkeychain_get_collection2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / organizationId / description
        Added value: +"Optional organization id used to disambiguate the lookup."
    • Changedkeychain_get_exposed2 fields changed
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id; exact ids avoid ambiguous bw lookups."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "exposed",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_folder1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_get_item2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
    • Changedkeychain_get_notes3 fields changed
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id; exact ids avoid ambiguous bw lookups."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "notes",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_org_collection2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / organizationId / description
        Added value: +"Optional organization id used to disambiguate the org collection lookup."
    • Changedkeychain_get_organization1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_get_password3 fields changed
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id used for bw get password."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "password",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_password_history3 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "password_history",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "items": {},
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_totp3 fields changed
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id used for bw get totp."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "totp",
        +          "type": "string"
        +        },
        +        "period": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "timeLeft": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed",
        +        "period",
        +        "timeLeft"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_uri2 fields changed
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id; exact ids avoid ambiguous bw lookups."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "uri",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_get_username2 fields changed
      • addedInput schema / properties / term / description
        Added value: +"Search term or exact item id used for bw get username."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "result": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "kind": {
        +          "const": "username",
        +          "type": "string"
        +        },
        +        "revealed": {
        +          "type": "boolean"
        +        },
        +        "value": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "value",
        +        "revealed"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_list_collections3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned rows (1-500)."
      • addedInput schema / properties / organizationId / description
        Added value: +"Optional organization id filter for collections."
      • addedInput schema / properties / search / description
        Added value: +"Optional text filter; empty means no text filter."
    • Changedkeychain_list_folders2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned rows (1-500)."
      • addedInput schema / properties / search / description
        Added value: +"Optional text filter; empty means no text filter."
    • Changedkeychain_list_org_collections3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned rows (1-500)."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; required for org-scoped collection operations."
      • addedInput schema / properties / search / description
        Added value: +"Optional text filter; empty means no text filter."
    • Changedkeychain_list_organizations2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned rows (1-500)."
      • addedInput schema / properties / search / description
        Added value: +"Optional text filter; empty means no text filter."
    • Changedkeychain_move_item_to_organization3 fields changed
      • addedInput schema / properties / collectionIds / description
        Added value: +"Bitwarden collection ids, not folder ids."
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id; required for org-scoped collection operations."
    • Changedkeychain_receive4 fields changed
      • addedInput schema / properties / downloadFile / description
        Added value: +"Download a file Send and return filename, bytes, and contentBase64."
      • addedInput schema / properties / obj / description
        Added value: +"Return the full parsed Send JSON object instead of raw text."
      • addedInput schema / properties / password / description
        Added value: +"Password required by the Send, when one was configured."
      • addedInput schema / properties / url / description
        Added value: +"HTTPS Bitwarden Send URL to receive."
    • Changedkeychain_restore_item1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_sdk_version1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "version"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_search_items8 fields changed
      • addedInput schema / properties / collectionId / description
        Added value: +"Bitwarden collection id, not a folder id."
      • addedInput schema / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned rows (1-500)."
      • addedInput schema / properties / organizationId / description
        Added value: +"Bitwarden organization id filter for org-scoped item search."
      • addedInput schema / properties / text / description
        Added value: +"Optional text filter for item names, usernames, URIs, and other indexed fields. Custom field values are not reliably searched."
      • addedInput schema / properties / trash / description
        Added value: +"Search items in trash when true."
      • addedInput schema / properties / type / description
        Added value: +"Optional item type filter: login, note, ssh_key, card, or identity."
      • addedInput schema / properties / url / description
        Added value: +"Optional URL filter for item lookup."
    • Changedkeychain_send_create11 fields changed
      • addedInput schema / properties / contentBase64 / description
        Added value: +"Base64-encoded file bytes for file sends, not a filesystem path."
      • addedInput schema / properties / deleteInDays / description
        Added value: +"Days until Bitwarden automatically deletes the Send (1-3650)."
      • addedInput schema / properties / filename / description
        Added value: +"Visible filename required with contentBase64 for file sends."
      • addedInput schema / properties / fullObject / description
        Added value: +"Ask bw send to return the full Send object when supported."
      • addedInput schema / properties / hidden / description
        Added value: +"Hide text Send content by default when recipients open it."
      • addedInput schema / properties / maxAccessCount / description
        Added value: +"Maximum number of Send accesses before it becomes unavailable."
      • addedInput schema / properties / name / description
        Added value: +"Optional Send display name."
      • addedInput schema / properties / notes / description
        Added value: +"Optional private notes on the Send."
      • addedInput schema / properties / password / description
        Added value: +"Optional Send access password required by recipients."
      • addedInput schema / properties / text / description
        Added value: +"Text content for type=text Sends."
      • addedInput schema / properties / type / description
        Added value: +"Send payload type: text uses text; file uses filename plus contentBase64."
    • Changedkeychain_send_create_encoded7 fields changed
      • addedInput schema / properties / encodedJson / description
        Added value: +"Base64-encoded Send JSON template passed to bw send create."
      • addedInput schema / properties / file / description
        Added value: +"Direct file payload alternative using filename and contentBase64."
      • addedInput schema / properties / file / properties / contentBase64 / description
        Added value: +"Base64-encoded file bytes, not a filesystem path."
      • addedInput schema / properties / file / properties / filename / description
        Added value: +"Visible attachment or send filename stored in Bitwarden metadata."
      • addedInput schema / properties / hidden / description
        Added value: +"Hide direct text Send content by default when true."
      • addedInput schema / properties / json / description
        Added value: +"Raw Send JSON template; the server encodes it before bw send create."
      • addedInput schema / properties / text / description
        Added value: +"Direct text payload alternative to encodedJson/json."
    • Changedkeychain_send_delete1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_send_edit3 fields changed
      • addedInput schema / properties / encodedJson / description
        Added value: +"Base64-encoded Send edit JSON payload passed to bw send edit."
      • addedInput schema / properties / itemId / description
        Added value: +"Optional parent item id passed to bw send edit as --itemid."
      • addedInput schema / properties / json / description
        Added value: +"Raw Send edit JSON payload; the server encodes it before bw send edit."
    • Changedkeychain_send_get3 fields changed
      • addedInput schema / properties / downloadFile / description
        Added value: +"Download a file Send and return its file bytes."
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / text / description
        Added value: +"Return the Send text content instead of JSON metadata."
    • Changedkeychain_send_remove_password1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
    • Changedkeychain_send_template1 field changed
      • addedInput schema / properties / object / description
        Added value: +"Template object to fetch: text/send.text for text Sends or file/send.file for file Sends."
    • Changedkeychain_set_login_uris7 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / mode / description
        Added value: +"URI merge behavior: replace overwrites the full list; merge updates existing URIs and adds new ones by URI."
      • addedInput schema / properties / reveal / description
        Added value: +"Whether secret values are returned; default false and can be forced false by NOREVEAL."
      • addedInput schema / properties / uris / description
        Added value: +"URI entries to store or update on the login item."
      • addedInput schema / properties / uris / items / description
        Added value: +"URI entry with match semantics for a login item."
      • addedInput schema / properties / uris / items / properties / match / description
        Added value: +"URI match semantics: domain, host, startsWith, exact, regex, or never; aliases and numeric values are normalized."
      • addedInput schema / properties / uris / items / properties / uri / description
        Added value: +"URI value to store on the login item."
    • Changedkeychain_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "status": {}
        +  },
        +  "required": [
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedkeychain_update_item20 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Stable Bitwarden object id returned by list/search/get/create tools."
      • addedInput schema / properties / patch / description
        Added value: +"Partial item fields to update on the current item."
      • addedInput schema / properties / patch / properties / collectionIds / description
        Added value: +"Collection ids to replace on the item."
      • addedInput schema / properties / patch / properties / favorite / description
        Added value: +"Mark the item as a favorite when true."
      • addedInput schema / properties / patch / properties / fields / description
        Added value: +"Custom fields to replace on the item."
      • addedInput schema / properties / patch / properties / fields / items / description
        Added value: +"Custom field stored on the item."
      • addedInput schema / properties / patch / properties / fields / items / properties / hidden / description
        Added value: +"Hide the field value in summaries when true."
      • addedInput schema / properties / patch / properties / fields / items / properties / name / description
        Added value: +"Custom field name stored on the item."
      • addedInput schema / properties / patch / properties / fields / items / properties / value / description
        Added value: +"Custom field value stored on the item."
      • addedInput schema / properties / patch / properties / folderId / description
        Added value: +"Personal folder id, not an organization collection id."
      • addedInput schema / properties / patch / properties / login / description
        Added value: +"Login-specific fields to patch on the item."
      • addedInput schema / properties / patch / properties / login / properties / password / description
        Added value: +"Login password to update."
      • addedInput schema / properties / patch / properties / login / properties / totp / description
        Added value: +"TOTP secret or otpauth value to update."
      • addedInput schema / properties / patch / properties / login / properties / uris / description
        Added value: +"Login URIs to replace on the existing item."
      • addedInput schema / properties / patch / properties / login / properties / uris / items / description
        Added value: +"URI entry with match semantics for a login item."
      • addedInput schema / properties / patch / properties / login / properties / uris / items / properties / match / description
        Added value: +"URI match semantics: domain, host, startsWith, exact, regex, or never; aliases and numeric values are normalized."
      • addedInput schema / properties / patch / properties / login / properties / uris / items / properties / uri / description
        Added value: +"URI value to store on the login item."
      • addedInput schema / properties / patch / properties / login / properties / username / description
        Added value: +"Login username to update."
      • addedInput schema / properties / patch / properties / name / description
        Added value: +"New item name."
      • addedInput schema / properties / patch / properties / notes / description
        Added value: +"New notes text for the item."
  4. 2 tool updatesv0.2.18
    • Addedkeychain_sdk_version
    • Addedkeychain_sync
  5. 102 tool updatesv0.1.20
    • Addedkeychain_create_attachment
    • Addedkeychain_create_card
    • Addedkeychain_create_folder
    • Addedkeychain_create_identity
    • Addedkeychain_create_login
    • Addedkeychain_create_logins
    • Addedkeychain_create_note
    • Addedkeychain_create_org_collection
    • Addedkeychain_create_ssh_key
    • Addedkeychain_delete_attachment
    • Addedkeychain_delete_folder
    • Addedkeychain_delete_item
    • Addedkeychain_delete_items
    • Addedkeychain_delete_org_collection
    • Addedkeychain_edit_folder
    • Addedkeychain_edit_org_collection
    • Addedkeychain_encode
    • Addedkeychain_generate
    • Addedkeychain_generate_username
    • Addedkeychain_get_attachment
    • Addedkeychain_get_collection
    • Addedkeychain_get_exposed
    • Addedkeychain_get_folder
    • Addedkeychain_get_item
    • Addedkeychain_get_notes
    • Addedkeychain_get_org_collection
    • Addedkeychain_get_organization
    • Addedkeychain_get_password
    • Addedkeychain_get_password_history
    • Addedkeychain_get_totp
    • Addedkeychain_get_uri
    • Addedkeychain_get_username
    • Addedkeychain_list_collections
    • Addedkeychain_list_folders
    • Addedkeychain_list_org_collections
    • Addedkeychain_list_organizations
    • Addedkeychain_move_item_to_organization
    • Addedkeychain_receive
    • Addedkeychain_restore_item
    • Addedkeychain_search_items
    • Addedkeychain_send_create
    • Addedkeychain_send_create_encoded
    • Addedkeychain_send_delete
    • Addedkeychain_send_edit
    • Addedkeychain_send_get
    • Addedkeychain_send_list
    • Addedkeychain_send_remove_password
    • Addedkeychain_send_template
    • Addedkeychain_set_login_uris
    • Addedkeychain_status
    • Addedkeychain_update_item
    • Removedkeychain.create_attachment
    • Removedkeychain.create_card
    • Removedkeychain.create_folder
    • Removedkeychain.create_identity
    • Removedkeychain.create_login
    • Removedkeychain.create_logins
    • Removedkeychain.create_note
    • Removedkeychain.create_org_collection
    • Removedkeychain.create_ssh_key
    • Removedkeychain.delete_attachment
    • Removedkeychain.delete_folder
    • Removedkeychain.delete_item
    • Removedkeychain.delete_items
    • Removedkeychain.delete_org_collection
    • Removedkeychain.edit_folder
    • Removedkeychain.edit_org_collection
    • Removedkeychain.encode
    • Removedkeychain.generate
    • Removedkeychain.generate_username
    • Removedkeychain.get_attachment
    • Removedkeychain.get_collection
    • Removedkeychain.get_exposed
    • Removedkeychain.get_folder
    • Removedkeychain.get_item
    • Removedkeychain.get_notes
    • Removedkeychain.get_org_collection
    • Removedkeychain.get_organization
    • Removedkeychain.get_password
    • Removedkeychain.get_password_history
    • Removedkeychain.get_totp
    • Removedkeychain.get_uri
    • Removedkeychain.get_username
    • Removedkeychain.list_collections
    • Removedkeychain.list_folders
    • Removedkeychain.list_org_collections
    • Removedkeychain.list_organizations
    • Removedkeychain.move_item_to_organization
    • Removedkeychain.receive
    • Removedkeychain.restore_item
    • Removedkeychain.search_items
    • Removedkeychain.send_create
    • Removedkeychain.send_create_encoded
    • Removedkeychain.send_delete
    • Removedkeychain.send_edit
    • Removedkeychain.send_get
    • Removedkeychain.send_list
    • Removedkeychain.send_remove_password
    • Removedkeychain.send_template
    • Removedkeychain.set_login_uris
    • Removedkeychain.status
    • Removedkeychain.update_item
  6. 51 tool updatesv0.1.19
    • First observedkeychain.create_attachment
    • First observedkeychain.create_card
    • First observedkeychain.create_folder
    • First observedkeychain.create_identity
    • First observedkeychain.create_login
    • First observedkeychain.create_logins
    • First observedkeychain.create_note
    • First observedkeychain.create_org_collection
    • First observedkeychain.create_ssh_key
    • First observedkeychain.delete_attachment
    • First observedkeychain.delete_folder
    • First observedkeychain.delete_item
    • First observedkeychain.delete_items
    • First observedkeychain.delete_org_collection
    • First observedkeychain.edit_folder
    • First observedkeychain.edit_org_collection
    • First observedkeychain.encode
    • First observedkeychain.generate
    • First observedkeychain.generate_username
    • First observedkeychain.get_attachment
    • First observedkeychain.get_collection
    • First observedkeychain.get_exposed
    • First observedkeychain.get_folder
    • First observedkeychain.get_item
    • First observedkeychain.get_notes
    • First observedkeychain.get_org_collection
    • First observedkeychain.get_organization
    • First observedkeychain.get_password
    • First observedkeychain.get_password_history
    • First observedkeychain.get_totp
    • First observedkeychain.get_uri
    • First observedkeychain.get_username
    • First observedkeychain.list_collections
    • First observedkeychain.list_folders
    • First observedkeychain.list_org_collections
    • First observedkeychain.list_organizations
    • First observedkeychain.move_item_to_organization
    • First observedkeychain.receive
    • First observedkeychain.restore_item
    • First observedkeychain.search_items
    • First observedkeychain.send_create
    • First observedkeychain.send_create_encoded
    • First observedkeychain.send_delete
    • First observedkeychain.send_edit
    • First observedkeychain.send_get
    • First observedkeychain.send_list
    • First observedkeychain.send_remove_password
    • First observedkeychain.send_template
    • First observedkeychain.set_login_uris
    • First observedkeychain.status
    • First observedkeychain.update_item

TDQS

A4/5.0
Disambiguation4/5

Most tools have clearly distinct purposes with descriptive names and detailed explanations. A few pairs, like keychain_send_create and keychain_send_create_encoded, or multiple 'get' tools, could be confused, but descriptions effectively differentiate them.

Naming Consistency5/5

All tools follow a consistent 'keychain_verb_noun' pattern in snake_case. The naming is predictable and clearly indicates the action and target resource.

Tool Count3/5

53 tools is high, but the Bitwarden vault domain is broad, covering items, folders, collections, organizations, sends, and utilities. The count is borderline excessive, but each tool serves a specific purpose and is justified by the scope.

Completeness5/5

The tool surface covers CRUD operations for all major vault entities, plus search, sync, generation, and encoding. There are no obvious gaps; the set provides a complete lifecycle for vault management.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Secret management MCP server for AI coding agents that prevents secrets from entering the LLM context window by returning metadata only and using side-channel injection. Integrates with Bitwarden and offers hooks for auto-capture and leak prevention.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Wundervault zero-knowledge secret management. Exposes vault secrets to AI agents via the Model Context Protocol — secrets are decrypted server-side and never returned to the agent in plaintext.
    6
    92
    2
    AGPL 3.0
  • F
    license
    B
    quality
    D
    maintenance
    MCP server that enables AI models to securely interact with a Bitwarden password manager vault via the rbw CLI.
    11
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/icoretech/warden-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server