Skip to main content
Glama
AIWerk

@aiwerk/mcp-server-vault

by AIWerk

@aiwerk/mcp-server-vault

Bitwarden / Vaultwarden MCP server — BYOK vault access for AI agents.

WARNING

Security: do not use 0.2.2 or earlier. Those versions returned item notes through list_vault_items (first 80 characters) and get_vault_metadata (full notes) for secure notes and login items. On a secure note the notes are the secret itself. Fixed in 0.2.3, which returns only has_notes. If you ran either tool on an older version, treat the secrets kept in notes as exposed to your agent's context and its model provider.

0.2.3 is on npm (published with provenance) and is the latest tag, so a plain npx -y @aiwerk/mcp-server-vault gets the fixed version. Only an explicit @0.2.2 pin still gets the vulnerable one.

Exposes 6 tools over stdio. Secret values and note contents are never sent in plaintext through list_vault_items or get_vault_metadata. Secrets are delivered only through Bitwarden Sends (E2E-encrypted one-time URLs).

Install

npx -y @aiwerk/mcp-server-vault

Related MCP server: VaultBridge

Configure

Variable

Required

Default

Description

VAULT_API_BASE

✅

—

Base URL of your Bitwarden/Vaultwarden instance (no trailing slash), e.g. https://pass.aiwerk.ch

VAULT_CLIENT_ID

✅

—

Personal API key client_id (e.g. user.abc-def-1234)

VAULT_CLIENT_SECRET

✅

—

Personal API key client_secret

VAULT_MASTER_PASSWORD

✅

—

Vault master password (used for E2E decryption key derivation)

VAULT_EXPOSED_COLLECTION

—

mcp-exposed

Name of the collection visible to agents

VAULT_AGENT_CREATED_COLLECTION

—

mcp-agent-created

Name of the collection for agent-created secrets

VAULT_API_TIMEOUT_MS

—

15000

HTTP timeout in milliseconds

DRY_RUN

—

0

Set 1 to log write operations without executing them

READ_ONLY

—

0

Set 1 to block all write operations (Send creation and save)

Auth — Personal API Key

  1. Log in to your Bitwarden/Vaultwarden instance

  2. Go to Account Settings → Security → Keys → API Key

  3. Note the client_id and client_secret

  4. Reference: https://bitwarden.com/help/personal-api-key/

Vault Setup

Before using this server, create two collections in your Vaultwarden organization:

  • mcp-exposed — items you want to expose to agents (your existing secrets: API keys, passwords, etc.)

  • mcp-agent-created — items written by agents via save_generated_secret

Add items to mcp-exposed via the Vaultwarden web UI.

Custom fields

Optionally add these custom fields to items in mcp-exposed for fine-grained control:

Field

Type

Purpose

mcp-scope

text

Comma-separated glob list of tool/server names allowed to use this item (e.g. stripe.*,openai)

mcp-chat-reveal-allowed

text

"true" to allow chat delivery of the Send URL

mcp-delivery-channel

text

"chat" (default), "telegram", or "email"

Tools

Tool

Description

list_vault_items

List items from mcp-exposed and mcp-agent-created. Returns metadata only — no secret values.

get_vault_metadata

Get full metadata for a named item (name, type, username, URIs, custom fields, expiry). No password/secret.

reveal_secret_via_send

Reveal a secret via a Bitwarden Send (E2E-encrypted one-time URL with configurable TTL and max-views).

get_totp_code

Get the current TOTP code for a login item, including remaining seconds in the period.

save_generated_secret

Save an agent-generated secret (password / api-key) into mcp-agent-created as a secure note. CREATE-only — no overwrite.

save_login_item

Save sign-in credentials (username + password + optional URL + TOTP seed) into mcp-agent-created as a real login item. CREATE-only — no overwrite.

health_check

Check connectivity: auth status, API version, collection visibility, item counts, latency.

Security model

  • Opt-in exposure: only items in mcp-exposed or mcp-agent-created are accessible; all other items return item_not_visible

  • Read-only existing items: no update_*, delete_*, or change_* tools exist

  • Secret value delivery via Send only: list_vault_items and get_vault_metadata never return passwords, TOTP seeds, or api-key values

  • E2E encryption preserved: the server decrypts vault data locally (master password stays in env vars, never sent over the wire)

  • Constrained agent writes: save_generated_secret and save_login_item are CREATE-only into the dedicated mcp-agent-created collection

Note: Actual {{vault:NAME}} placeholder resolution in tool call arguments happens in the AIWerk hosted bridge, not in this server. The bridge's resolution uses the same BYOC credentials. See the bridge-patch companion document for details.

License

MIT — AIWerk kontakt@aiwerk.ch

Homepage: https://aiwerkmcp.com

Available Tools

7 tools
get_totp_codeA
Read-only

Get the current TOTP code for a vault login item with TOTP configured. Returns the 6-digit code, the remaining seconds in the current period, and the algorithm. Use the remaining_seconds field to decide whether to use the code immediately or wait for a fresh period.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact item name (case-sensitive) of a vault login item with TOTP configured.

TDQS

A4/5.0
Behavior3/5

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

The description adds useful context about the return values and how to interpret remaining_seconds, but beyond that it mainly restates the read-only nature already captured by readOnlyHint=true. No hidden side effects, permissions, or rate limits are disclosed, so it adds limited extra value beyond annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core function and includes only actionable information. It is appropriately sized 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?

For a single-parameter read tool with readOnlyHint and no output schema, the description adequately covers the return values and provides actionable guidance on using remaining_seconds. It lacks error handling details, but that is not critical for basic 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?

The input schema already fully describes the name parameter with details on exact, case-sensitive matching. The description reinforces this but does not add new meaning beyond the schema, aligning with the baseline for 100% schema coverage.

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

Purpose5/5

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

The description clearly states 'Get the current TOTP code for a vault login item with TOTP configured,' specifying the verb, resource, and condition. It also lists the return fields, distinguishing it from sibling tools like save_login_item or reveal_secret_via_send.

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: it is for vault login items with TOTP configured, and advises using remaining_seconds to decide when to use the code. However, it does not explicitly mention alternatives or when-not-to-use, so it falls short of a full 5.

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

get_vault_metadataA
Read-only

Get full metadata for a named vault item. Returns name, type, username (for login items), URIs, custom fields, scope, expiry, and whether the item has notes. Password, TOTP seed, api-key values and note contents are NEVER returned. Use reveal_secret_via_send (field "notes" for the notes) or get_totp_code instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact item name (case-sensitive) as it appears in the vault.

TDQS

A4.5/5.0
Behavior5/5

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

The annotations only declare readOnlyHint and openWorldHint; the description goes well beyond them by disclosing the exact returned field set and, critically, the fields that are deliberately withheld. That security-relevant disclosure is the kind of behavioral context an agent cannot infer from structured data.

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: capability first, return contents second, exclusions and alternatives last. Every clause carries information and nothing is repeated from the schema or annotations.

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 no output schema, the description compensates by enumerating the returned fields and the withheld ones, and it names the escape hatches for secrets. There is nothing further an agent needs in order to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents that 'name' must be the exact, case-sensitive vault name. The description adds only 'named vault item', which contributes no syntax or matching detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Get full metadata for a named vault item') and immediately enumerates exactly which fields come back. It also carves out the secret-reading territory by pointing at reveal_secret_via_send and get_totp_code, so an agent can separate it from the siblings without opening a schema.

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 gives a clear negative boundary ('Password, TOTP seed, api-key values and note contents are NEVER returned') and routes the agent to the correct alternatives for those cases, including the exact field name for notes. It does not say when to reach for this versus list_vault_items, so the enumeration-vs-single-item choice is left implicit.

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

health_checkA
Read-only

Check connectivity and configuration of the Bitwarden/Vaultwarden vault. Authenticates, syncs, and reports: auth status, API version, collection visibility, item counts, latency. Run this first after a new install or after rotating credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows it is a safe read operation that may access external systems. The description adds behavioral details beyond annotations: it 'Authenticates, syncs, and reports' specific metrics, implying network calls and credential verification. It doesn't describe error behavior or side effects, but for a health check with annotations, this is adequate.

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

Conciseness5/5

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

The description is two sentences: the first states what it does and what it reports, the second gives when to use it. Every word earns its place; there is no filler, redundancy, or irrelevant detail. The structure is front-loaded with the core purpose and outputs.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description covers the necessary context: what it checks, what it reports, and when to run it. It could be slightly more explicit about interpreting results or potential error states, but it is sufficient for an agent to understand the tool's role and invocation timing. The list of reported metrics adds completeness beyond a generic 'health check'.

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, so the schema already fully covers them (coverage 100%). Per the baseline for no params, a score of 4 is appropriate; the description doesn't need to document parameters. It does not add any param-specific semantics, but that's not a gap given there are none.

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 connectivity and configuration of the Bitwarden/Vaultwarden vault, with a specific verb ('Check') and resource. It enumerates concrete outputs (auth status, API version, collection visibility, item counts, latency), which distinguishes it from sibling tools that list, get, reveal, generate, or save items. This is a focused diagnostic tool, easily differentiated from the other 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?

The description explicitly says 'Run this first after a new install or after rotating credentials,' giving clear when-to-use guidance. Although it doesn't name alternatives, it establishes a recommended ordering (run first) and the context (new install, credential rotation), which is sufficient for an agent to decide when to invoke it.

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

list_vault_itemsA
Read-only

List vault items from the mcp-exposed and mcp-agent-created collections. Returns metadata only. Secret values and note contents are NEVER included (has_notes says whether notes exist). Use reveal_secret_via_send to obtain the actual value through a secure Bitwarden Send URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoCase-insensitive substring filter on item names. Omit to return all items.
collectionNoRestrict to one collection. Omit to return items from both mcp-exposed and mcp-agent-created.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries most of the behavioral burden. It does so well by disclosing that only metadata is returned, that secret values and note contents are NEVER included, and that has_notes indicates note existence — meaningful context beyond the annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with what is returned and what is excluded, then the redirect to the alternative tool. No sentence is wasted.

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 an output schema absent, the description compensates by describing the return shape (metadata only, has_notes field) and the security boundary. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both the filter and collection parameters are fully documented in the schema. The description adds no syntax or semantics beyond that, making the baseline of 3 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?

States a specific verb+resource (list vault items) and names the exact scope (mcp-exposed and mcp-agent-created collections), which an agent could not infer otherwise. It also implicitly separates itself from retrieval tools by declaring metadata-only output.

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 routes the agent to reveal_secret_via_send when the actual secret value is needed, which is the key usage decision. It does not, however, clarify when to prefer this over the sibling get_vault_metadata, so the alternative coverage is partial rather than complete.

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

reveal_secret_via_sendA

Reveal a vault secret through a Bitwarden Send, an E2E-encrypted one-time URL. Creates a temporary Send with a configurable TTL and max-views limit. The secret value is encrypted client-side; only the URL fragment (never sent to server) can decrypt it. Blocked when READ_ONLY=1. Logs to DRY_RUN without creating a real Send when DRY_RUN=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesExact item name (case-sensitive) of the vault item to reveal.
fieldNoField to reveal. Defaults to "value" (notes for api-key/password/note items, password for login items). Other options: "username", "password", "totp", "notes" (the item notes, e.g. on a login), "uri0" (or uri1, uri2, ...).
max_viewsNoMaximum number of times the Send URL can be accessed. Default 1, range [1, 100].
ttl_secondsNoBitwarden Send TTL in seconds. Default 300 (5 min), range [30, 86400].

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains client-side encryption, that the URL fragment is never sent to the server and is the only decryptor, and that the operation is blocked under READ_ONLY=1 and only logged under DRY_RUN=1. This resolves the apparent tension between the 'reveal' framing and readOnlyHint=false by clarifying it creates a temporary Send rather than mutating the vault item.

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

Conciseness5/5

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

Four tight sentences that front-load the purpose, then add security model, then gating flags. No filler; each sentence carries distinct, decision-relevant 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?

With no output schema, the description conveys what is produced (a temporary Send URL) and the encryption/expiry model, but does not explicitly state the return shape or where the decryptable fragment is surfaced. For a 4-param tool this is nearly complete.

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

Parameters3/5

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

Schema coverage is 100%, with field, max_views, and ttl_seconds all fully documented including ranges and defaults. The description references configurable TTL and max-views but adds no syntax or format meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (reveal), resource (vault secret), and mechanism (Bitwarden Send, an E2E-encrypted one-time URL). This clearly distinguishes it from siblings like get_vault_metadata and get_totp_code, which do not create shareable links.

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?

Describes what the tool does and notes the READ_ONLY=1 block and DRY_RUN behavior, but never states when to prefer this over alternatives such as get_vault_metadata or list_vault_items. Usage is implied rather than explicitly routed.

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

save_generated_secretA

Save an agent-generated secret into the mcp-agent-created collection. CREATE-only: cannot overwrite an existing item (name collision returns an error). The secret is E2E-encrypted with the vault org key before transmission. Sets mcp-created-by, mcp-created-at, mcp-expires-at, and mcp-used-in custom fields automatically. Blocked when READ_ONLY=1. Logs to DRY_RUN without creating a real cipher when DRY_RUN=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUnique name for this secret within the mcp-agent-created collection. Case-sensitive. Name collision returns an error. Pick a distinct name.
typeYesLogical type of this secret. "password" for user passwords, "api-key" for API tokens and keys.
notesNoOptional non-sensitive annotation (e.g. where this key is used). Not the secret itself.
valueYesThe secret value to store (max 4096 chars). Assumed already generated by the agent.
used_inNoFree-form context string, e.g. "publish_protected_html @ aiwerk.ch/press/2026-05". Stored as mcp-used-in custom field.
expires_in_daysNoDays until the secret expires (sets mcp-expires-at). Default 30, max 365.

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations, which only declare readOnlyHint=false and openWorldHint=true. The description discloses E2E encryption before transmission, auto-populated custom fields, blocking under READ_ONLY=1, and DRY_RUN logging behavior – rich operational context an agent cannot get from structured fields.

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

Conciseness4/5

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

Dense but front-loaded: the core action leads, followed by the CREATE-only constraint and behavioral caveats. Each clause carries a distinct fact, though the run-on stream of constraints is slightly dense.

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 write tool with full schema coverage and no output schema, the description covers creation semantics, overwrite behavior, encryption, auto-fields, and both READ_ONLY and DRY_RUN gating conditions. Nothing essential to correct invocation is missing.

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 six parameters thoroughly. The description adds only minor mapping detail (mcp-expires-at, mcp-used-in custom fields) that overlaps with the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

Specific verb+resource ('Save an agent-generated secret into the mcp-agent-created collection') with a clearly bounded scope. It distinguishes itself from the sibling save_login_item by specifying the agent-generated, mcp-created-collection target rather than a generic login 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?

It states the CREATE-only constraint and that name collisions error, which is useful context for invocation. However, it never names when to use this over save_login_item or the other siblings, leaving the primary routing decision to inference.

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

save_login_itemA

Save login credentials (username, password, URL, optional TOTP seed) as a Vaultwarden login item in the mcp-agent-created collection. Use this instead of save_generated_secret when the credential is a sign-in (username + password), so it surfaces as a real login item with get_totp_code support. CREATE-only: cannot overwrite an existing item (name collision returns an error). At least one of username or password is required. All fields are E2E-encrypted with the vault org key before transmission. Sets mcp-created-by, mcp-created-at, mcp-expires-at, and mcp-used-in custom fields automatically. Blocked when READ_ONLY=1. Logs to DRY_RUN without creating a real cipher when DRY_RUN=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoOptional login URL (e.g. "https://app.example.com/login"). Stored as the login URI.
nameYesUnique name for this login within the mcp-agent-created collection. Case-sensitive. Name collision returns an error. Pick a distinct name.
totpNoOptional TOTP seed (otpauth:// URI or raw base32 secret). Enables get_totp_code on this item.
notesNoOptional non-sensitive annotation. Not the credential itself.
used_inNoFree-form context string, e.g. "smallinvoice portal login". Stored as mcp-used-in custom field.
passwordNoLogin password (max 4096 chars). Optional, but at least one of username or password is required.
usernameNoLogin username / account identifier. Optional, but at least one of username or password is required.
expires_in_daysNoDays until the item expires (sets mcp-expires-at). Default 30, max 365.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only supply readOnlyHint=false and openWorldHint=true. The description adds substantial non-obvious behavior: CREATE-only with collision errors, at least one of username/password required, E2E encryption with the vault org key before transmission, auto-set custom fields (mcp-created-by/at/expires-at/used-in), and environment gating (blocked when READ_ONLY=1, logs to DRY_RUN when DRY_RUN=1). This is exactly the value-add the structured fields don't provide.

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

Conciseness4/5

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

Dense but front-loaded: purpose and the sibling comparison come first, then constraints (CREATE-only, field requirement), then encryption and environment behavior. Every clause carries signal, though the paragraph is long and slightly dense; minor trimming could improve flow without loss.

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 mutation tool with no output schema, the description covers what an agent needs: create-only semantics, failure mode (name collision), required-field rule, encryption, auto-set metadata, and READ_ONLY/DRY_RUN gating. Nothing material is missing given the rich schema and annotation coverage.

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 each field, giving a baseline of 3. The description adds a genuine cross-parameter constraint not encoded in the schema — 'At least one of username or password is required' (both are individually optional there) — and characterizes totp as enabling get_totp_code, which is useful semantics beyond the field list.

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

Purpose5/5

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

Opens with a specific verb+resource: saving login credentials (username/password/URL/TOTP) as a Vaultwarden login item in a defined collection. It explicitly distinguishes itself from the sibling save_generated_secret by name and by the sign-in use case. An agent can identify the tool without opening the schema.

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

Usage Guidelines5/5

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

Gives an explicit routing rule: 'Use this instead of save_generated_secret when the credential is a sign-in (username + password).' It also notes the downstream benefit (get_totp_code support) and the hard constraint (CREATE-only, name collision errors), so when-to-use and when-not-to-use are both covered.

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.

  1. 3 tool updatesv0.2.3
    • Changedreveal_secret_via_send1 field changed
      • changedInput schema / properties / field / description
        Previous value: -"Field to reveal. Defaults to \"value\" (notes for api-key/password/note items, password for login items). Other options: \"username\", \"password\", \"totp\", \"uri0\" (or uri1, uri2, ...)."New value: +"Field to reveal. Defaults to \"value\" (notes for api-key/password/note items, password for login items). Other options: \"username\", \"password\", \"totp\", \"notes\" (the item notes, e.g. on a login), \"uri0\" (or uri1, uri2, ...)."
    • Changedsave_generated_secret1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"Unique name for this secret within the mcp-agent-created collection. Case-sensitive. Name collision returns an error — pick a distinct name."New value: +"Unique name for this secret within the mcp-agent-created collection. Case-sensitive. Name collision returns an error. Pick a distinct name."
    • Changedsave_login_item1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"Unique name for this login within the mcp-agent-created collection. Case-sensitive. Name collision returns an error — pick a distinct name."New value: +"Unique name for this login within the mcp-agent-created collection. Case-sensitive. Name collision returns an error. Pick a distinct name."
  2. 7 tool updatesv0.2.2
    • First observedget_totp_code
    • First observedget_vault_metadata
    • First observedhealth_check
    • First observedlist_vault_items
    • First observedreveal_secret_via_send
    • First observedsave_generated_secret
    • First observedsave_login_item

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation4/5

Each tool has a largely distinct purpose, and descriptions explicitly cross-reference alternatives (e.g. save_login_item vs save_generated_secret, reveal_secret_via_send vs get_totp_code). The main overlap is list_vault_items vs get_vault_metadata, which both return metadata, though the descriptions clarify listing vs single-item detail.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (list_vault_items, get_vault_metadata, reveal_secret_via_send, save_generated_secret, save_login_item, get_totp_code). health_check is the only noun-style outlier, but it is a widely conventional name, so consistency is mostly maintained.

Tool Count5/5

Seven tools is well-scoped for a vault integration, covering listing, reading, revealing, writing, TOTP, and health. No tool appears redundant or filler.

Completeness3/5

Read and create operations are well covered (list, metadata, reveal, save secret, save login, TOTP, health), but the lifecycle is incomplete: there is no update, delete, or revoke operation for items or Sends. Agents cannot modify or clean up existing vault entries, which is a notable gap for a credential store.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Vaultwarden/Bitwarden vault management. Enables AI agents to securely create, search, read, and update vault items via the official Bitwarden CLI, with safe-by-default redaction and support for both stdio and SSE transports.
    53
    876 npm
    18
    MIT
  • 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
    C
    maintenance
    An MCP server for using Bitwarden Secrets Manager as durable credential storage for agent workflows, enabling secure secret storage, retrieval, and injection into trusted executables.
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server enabling AI agents to use secrets (API keys, tokens) via encrypted vault, executing HTTP/shell/SSH actions server-side while never exposing secret values to the AI.
    MIT