Skip to main content
Glama
AIWerk

@aiwerk/mcp-server-vault

by AIWerk

save_login_item

Save a login credential (username, password, URL, optional TOTP seed) as an encrypted Vaultwarden login item in the mcp-agent-created collection, enabling get_totp_code support.

Instructions

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.

Input Schema

TableJSON 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.
Behavior5/5

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

The description discloses important behavioral traits: it is CREATE-only and cannot overwrite, it requires at least one of username/password, it sets custom fields automatically, it encrypts all fields E2E, it is blocked under READ_ONLY, and it logs to DRY_RUN without creating a real cipher. The readOnlyHint: false annotation is consistent with the description's CREATE-only nature, and the description adds significant context 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.

Conciseness4/5

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

The description is dense but well-structured. It front-loads the core purpose, then provides usage guidance, constraints, security context, and environmental behavior in a logical order. It is slightly longer than ideal but every sentence adds value, covering purpose, sibling differentiation, CREATE-only limitations, field requirements, encryption, custom fields, and mode-specific behavior.

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 8 parameters and no output schema, the description covers all essential aspects: what it does, when to use it, what constraints apply, what happens in different modes (READ_ONLY, DRY_RUN), and how it integrates with other tools (get_totp_code). It also explains the custom fields it sets automatically, which is valuable context for the agent. No significant gaps remain.

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

Parameters5/5

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

Schema coverage is 100%, and the description enriches the parameters further. For example, it explains that 'uri' is the login URL, 'totp' enables get_totp_code support, and 'expires_in_days' sets the mcp-expires-at field. It also clarifies constraints like case-sensitive uniqueness for 'name' and the mutual exclusivity/requirement of username/password. The description also mentions automatic custom fields, which adds meaning to parameters like 'used_in'.

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

Purpose5/5

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

The description clearly states the tool's purpose: saving login credentials as a Vaultwarden login item. It specifies the resource (Vaultwarden, mcp-agent-created collection), the verb (save), and the exact field types (username, password, URL, TOTP seed). It also explicitly distinguishes itself from the sibling tool save_generated_secret.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: '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.' It also mentions constraints such as CREATE-only and name collision behavior, and notes that it is blocked when READ_ONLY=1.

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

Install Server

Other Tools

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/AIWerk/mcp-server-vault'

If you have feedback or need assistance with the MCP directory API, please join our Discord server