Skip to main content
Glama

Store credentials in the encrypted vault (for unattended login)

enroll_credentials

Save account credentials into an encrypted local vault so later logins and 2FA can run without human presence. Secrets are typed by the user in a local prompt; the AI never sees them.

Instructions

Save a profile's credentials to the encrypted vault (.agent-eyes/vault.json, AES-256-GCM) so later logins run with no human present: authenticate_login source=vault and submit_2fa_code source=totp pull from it. The human types every secret — the master passphrase, username, password, and with withTotp the authenticator seed — into the localhost prompt; the AI never sees any value. Optionally stores loginUrl and form selectors too. Returns a non-secret summary.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
profileYesShort name for the account, e.g. "github". Not a secret — it labels the secure prompt and selects a stored credential.
loginUrlNoNavigate here first. Omit to act on the open page. Not reloaded if a saved session already authenticated you there.
withTotpNoAlso collect the account's TOTP seed, so later 2FA can run unattended with submit_2fa_code source="totp".
otpSelectorNoSelector for the one-time-code input. Auto-detected when omitted; pass it explicitly if the page state came back unknown.
submitSelectorNoSelector for the submit button. Auto-detected when omitted.
passwordSelectorNoSelector for the password input. Auto-detected when omitted.
usernameSelectorNoSelector for the username/email input. Auto-detected when omitted; the result reports which one was used.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.29.0

TDQS

A4.5/5.0
Behavior4/5

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

Because no annotations are provided, the description carries the full burden and uses it well. It discloses the human-in-the-loop prompt ('The human types every secret ... into the localhost prompt'), the security boundary ('the AI never sees any value'), and the return shape ('non-secret summary'). This goes well beyond a minimal statement, though it doesn't mention failure modes or overwrite behavior.

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 three sentences long but front-loads the core action and purpose before adding details about the human prompt and optional storage. Each sentence adds distinct context (what/why, security model, extensibility). It is slightly dense but not wasteful.

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 and no annotations, the description adequately covers the essential workflow: what the tool does, how secrets are handled, what is returned, and how later tools consume it. It omits edge cases like what happens if the user cancels the prompt or if a credential already exists, but the main call path is clear.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that the actual secret values (passphrase, username, password, TOTP seed) are not passed as parameters—the agent only supplies the profile name and optional selectors/URL. This prevents the agent from trying to include secrets as arguments, which is meaning not present 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 uses the specific verb 'Save' with a clear resource: 'a profile's credentials to the encrypted vault'. It also names the dependent siblings (authenticate_login source=vault and submit_2fa_code source=totp) that consume the stored data, distinguishing this tool as the enrollment step for unattended login.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool (to enable later logins 'with no human present') and ties it to the consumer tools, implying that enrollment should happen before authenticate_login or submit_2fa_code can work. This gives the agent a clear decision rule relative to siblings.

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