Skip to main content
Glama
oneguard-sa

oneguard-mcp

Official
by oneguard-sa

oneguard-mcp

An MCP server that puts the OneGuard CLI in front of an AI agent — Claude Code, Claude Desktop, Cursor, or anything else that speaks MCP over stdio.

Ask your agent to sync a project's secrets into .env, rotate a database password without ever seeing it, or check who changed a secret last week.

You:    sync this folder's secrets from OneGuard
Claude: Which vault? → api-production · marketing-site
You:    api-production
Claude: Wrote 12 variables to .env — DATABASE_URL, API_TOKEN, STRIPE_KEY, …

It shells out to the oneguard binary you already have installed. No new backend, no second login, no API surface of its own: whatever the CLI can do, this exposes, and whatever it cannot, this does not pretend to.

  • Zero dependencies. The MCP stdio protocol is implemented directly. Nothing to install, nothing to build, no dependency tree to audit — the whole server is the files in src/.

  • Secret values do not come back. Tools report variable names and counts. Values are written to and read from your .env by the CLI itself and never enter the model's context.

  • Isolated credentials. The agent's session never touches your own oneguard auth login.

Requirements

  • Node.js 18 or newer

  • The oneguard CLI 1.2.0 or newerinstallation

  • A OneGuard API key (dashboard → Vault → API Keys → Add)

Related MCP server: Keyway MCP Server

Install

Claude Code

claude mcp add oneguard -s user \
  --env ONEGUARD_API_KEY=og_your_key \
  -- npx -y github:oneguard-sa/oneguard_mcp#v0.3.0

Claude Desktop (claude_desktop_config.json) or Cursor (mcp.json)

{
  "mcpServers": {
    "oneguard": {
      "command": "npx",
      "args": ["-y", "github:oneguard-sa/oneguard_mcp#v0.3.0"],
      "env": {
        "ONEGUARD_API_KEY": "og_your_key"
      }
    }
  }
}

Then ask the agent "what's my OneGuard connection status?" to confirm it is wired up.

Pin the tag. #v0.3.0 is not decoration: without it you run whatever is on main at that moment, so a push here would execute on your machine without you choosing to update. Bump the tag deliberately, after reading the release notes.

Or clone it once. npx re-resolves this repository every time an MCP server starts, which adds a few seconds to each session. A local clone is the fastest option and works offline:

git clone --branch v0.3.0 https://github.com/oneguard-sa/oneguard_mcp.git ~/tools/oneguard-mcp

claude mcp add oneguard -s user \
  --env ONEGUARD_API_KEY=og_your_key \
  -- node ~/tools/oneguard-mcp/src/index.js

Update with git fetch --tags && git checkout <new tag>.

Configuration

Variable

Default

Purpose

ONEGUARD_API_KEY

Initializes the session on the first tool call. Without it, the agent must call oneguard_init with a key you supply.

ONEGUARD_CLI_PATH

oneguard

Absolute path to the binary, when it is not on PATH.

ONEGUARD_MCP_HOME

~/.oneguard-mcp

Isolated credential store for the agent's session.

ONEGUARD_MCP_READONLY

false

1 hides every mutating tool.

ONEGUARD_MCP_TIMEOUT_MS

60000

Per-command timeout.

Tools

Tool

What it does

oneguard_env_sync

The main one. Pulls the linked secret into the directory's .env, linking it the first time.

oneguard_env_push

Uploads the local .env back into the linked secret, replacing it.

oneguard_env_status

Is this directory linked, to what, and which variable names are in its .env.

oneguard_env_unlink

Removes the .oneguard link file; leaves .env alone.

oneguard_generate

Generates a random value locally and returns it. Stores nothing.

oneguard_secrets_generate

Generates a value into a secret, merging, without revealing it.

oneguard_vault_list / _add / _rename

Vaults.

oneguard_secrets_list / _add / _edit / _archive / _delete

Secrets.

oneguard_teams_list / _invite / _set_role / _remove

Members, invitations and roles.

oneguard_logs_list

Organization audit log.

oneguard_status / oneguard_init

Connection and session.

How it handles secrets

This server sits between a secrets manager and a language model, so the interesting part is what it refuses to do.

Values are not returned. oneguard_env_sync and oneguard_env_push report variable names and a count. The CLI decrypts to disk; nothing in the tool result carries a value. There is a test that asserts this.

Generating a credential never reveals it. oneguard_secrets_generate has the CLI generate the value and store it directly, merging into the secret so every other variable survives. The agent learns that DB_PASSWORD now exists, and nothing more. oneguard_generate is the one tool that returns a value — a value stored nowhere is useless unless returned — and its description steers the model to the other tool whenever the value is destined for a secret.

Your login is not the agent's login. The CLI keeps its key in $HOME/.oneguard/credentials.json, one file for every copy of the CLI on the machine. This server hands each subprocess its own HOME, so an agent session cannot overwrite the key you use in your terminal — and a rejected key here cannot sign you out there.

Destructive tools ask for proof. Deleting a secret requires its exact name; removing a member requires their exact email. Both are checked against the server before anything happens, so an agent working from a half-remembered name is stopped rather than guessing.

Two independent brakes. An API key created as read is refused every write by the server, whatever the client does. ONEGUARD_MCP_READONLY=1 additionally hides the mutating tools so the model never sees them. Use the key for the guarantee, the flag to keep the tool list focused; oneguard_status reports can_write so the agent knows which it has before it tries.

Interactive commands are never invoked. oneguard env sync on an unlinked directory prompts on stdin, which cannot work when no human is on the other end of the pipe. Instead this server returns the list of vaults for you to choose from, writes the .oneguard link itself, then calls the non-interactive env pull. Subprocess stdin is closed, so anything that tries to prompt fails fast instead of hanging.

The link file is byte-compatible with the CLI's own, so a directory linked by the agent keeps working with oneguard env sync in your terminal, and the other way round.

Development

git clone https://github.com/oneguard-sa/oneguard_mcp.git
cd oneguard_mcp
node test/smoke.test.js

No install step — there are no dependencies. The suite drives the real server over stdio against a mock CLI that reproduces the real binary's output formatting and exit codes: the protocol handshake, the full sync flow, generation, team management, the read-only key path, and the guardrails. 39 checks, no network and no OneGuard account needed.

Against a real account, read-only:

ONEGUARD_API_KEY=og_your_key node test/live-check.js

A note on parsing

The OneGuard CLI prints for humans — there is no --json mode yet — so src/parsers.js turns lines like ID: 84e1d2b3 | Name: production | Archived: false back into objects. Every parser is tolerant of unrecognized lines and every tool also returns the raw stdout, so a formatting change in the CLI degrades rather than breaks.

That file is the seam between the two projects. If the CLI's output changes, live-check.js is the fastest way to notice, and src/parsers.js should be the only file that needs updating.

Releasing

This server is installed straight from this repository, so a release is a tag and a set of release notes — there is no registry in the loop.

npm version minor --no-git-tag-version   # bump package.json only
git commit -am "0.4.0"
git tag v0.4.0
git push && git push --tags

The tag triggers .github/workflows/publish.yml, which runs the test suite, checks the tag matches package.json, and publishes a GitHub Release. Anyone pinned to an older tag keeps running it until they change the pin.

Publishing to npm later would not change how any of this works — the package is already shaped for it — but nothing here depends on it.

License

MIT — see LICENSE.

Available Tools

21 tools
oneguard_env_pushPush a local .env back to OneGuardA
Destructive

Uploads the variables in a directory's .env file into the secret that directory is linked to, REPLACING what the secret held. The reverse of oneguard_env_sync. Confirm with the user first, and tell them which variable names are about to be uploaded. To add a single generated value without touching the rest, use oneguard_secrets_generate instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoEnv file path relative to project_dir. Defaults to ".env".
project_dirYesAbsolute path to the developer's project directory. This is where the .oneguard link file and the .env file live. Must be absolute — ask the user if you do not know it.

TDQS

A4.7/5.0
Behavior5/5

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

Even with destructiveHint=true already present, the description adds crucial behavioral context by explicitly warning that the upload REPLACES the secret's contents and by instructing confirmation before executing. This goes well beyond annotations and directly addresses the destructive nature.

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, each earning its place: the core action and replacement behavior, the confirmation requirement, and the alternative tool. The destructive consequence is front-loaded, and there is no filler or repetition of schema details.

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 destructive two-parameter tool with no output schema, this description is complete. It tells the agent what the tool does, what the destructive effect is, what safety step to take, what to tell the user, and when to choose a different tool. Nothing essential for selecting or invoking it 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 parameters are already fully documented with clear type and path expectations. The description adds little parameter-specific meaning beyond what the schema provides, keeping this at the baseline appropriate for high 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 uses a specific verb-resource pair: uploads variables from a directory's .env into the linked secret, and explicitly states it replaces what the secret held. It also distinguishes itself by calling out oneguard_env_sync as the reverse, leaving no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

It provides explicit operational guidance: confirm with the user first and tell them which variable names are about to be uploaded. It also names an alternative tool for a distinct use case ('To add a single generated value without touching the rest, use oneguard_secrets_generate instead.') and identifies this as the reverse of oneguard_env_sync.

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

oneguard_env_statusShow a directory's sync stateB
Read-only

Reports whether a directory is linked to a OneGuard secret, which one, and which variable names its .env currently holds. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoEnv file path relative to project_dir. Defaults to ".env".
project_dirYesAbsolute path to the developer's project directory. This is where the .oneguard link file and the .env file live. Must be absolute — ask the user if you do not know it.

TDQS

B3.4/5.0
Behavior3/5

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

The read-only nature is already captured by the readOnlyHint annotation, and the description repeats it. The description adds useful output behavior (reports linked secret and variable names), but it does not mention edge cases, prerequisites, or what happens when a directory is not linked. It adds some context beyond the annotation but leaves gaps.

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?

A single sentence that front-loads the core capability and includes only necessary detail. No filler or redundancy; the sentence is immediately informative.

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 read-only tool with no output schema, the description conveys the kind of information returned. It covers the main scenarios (linked vs. not linked, variable names) but does not mention failure modes or filesystem assumptions. Given the tool's simplicity, the definition 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 description coverage is 100%, so both parameters are already documented with clear descriptions. The tool description adds no additional parameter-level semantics. Baseline 3 is appropriate because the schema carries the load.

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 uses a specific verb ('Reports') and clearly identifies the resource (a directory's sync state) and the three facts it returns: whether it is linked, which secret, and which variable names are in the .env. It is distinct from generic 'status' tools even though it does not explicitly name an alternative.

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 given about when to prefer this tool over siblings such as oneguard_status or oneguard_env_sync. The description provides no context, prerequisites, or exclusions, so an agent gets no help choosing between tools.

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

oneguard_env_syncSync secrets into a directory's .env fileA

THE MAIN TOOL. Fetches the secret linked to a directory and writes it into that directory's .env file, then remembers the link for next time. Call it with only project_dir when the directory is already linked (it re-pulls the latest values). If it is not linked yet, this returns the list of vaults (or secrets) to choose from — show those to the user, let THEM pick, then call again with vault and secret. Returns only the variable NAMES that were written; values go to disk and are never shown.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoEnv file path relative to project_dir. Defaults to ".env".
vaultNoVault id or 8-character prefix. Omit if the directory is already linked.
relinkNoIgnore the existing link and set a new one. Use when the user wants to point this directory at a different secret.
secretNoSecret id or 8-character prefix. Omit if the directory is already linked.
project_dirYesAbsolute path to the developer's project directory. This is where the .oneguard link file and the .env file live. Must be absolute — ask the user if you do not know it.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, it discloses important behavioral traits: values go to disk and are never shown, only variable names are returned, and the tool remembers the link. It also reveals the two-phase behavior on first use. This adds substantial context beyond readOnlyHint=false.

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 front-loaded with the core operation and packs workflow, return behavior, and privacy into a compact block. The phrase 'THE MAIN TOOL' is unnecessary, but it does not distract much. Every other sentence contributes 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?

With no output schema, the description correctly explains what is returned ('only the variable NAMES that were written') and the important guarantee that values are never displayed. It also covers both linked and unlinked invocation paths, so an agent can call the tool correctly in either state.

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 interaction semantics for vault and secret: they are only needed when the directory is not yet linked, and on the first call the tool returns choices rather than requiring them upfront. This goes beyond the schema's individual 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 states a specific action: 'Fetches the secret linked to a directory and writes it into that directory's .env file, then remembers the link.' This clearly identifies both the resource and the operation, and the 'writes into .env' framing differentiates it from sibling push/list 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 gives concrete invocation guidance: call with only project_dir when already linked, and if not linked, return choices, let the user pick, then call again with vault and secret. It does not explicitly name alternative tools or exclusions, but the workflow is explicit and actionable.

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

oneguard_generateGenerate a random valueA
Read-only

Generates one or more random values locally and returns them. Nothing is stored anywhere. Note that the returned value passes through this conversation — if the value is going into a OneGuard secret, use oneguard_secrets_generate instead, which stores it without ever revealing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many values to generate. Default 1.
lengthNoNumber of characters. Default 16.
numbersNoInclude 0-9. Default true.
specialNoInclude !@#%^&*()-_=+[]{}|;:,.<>? . Default true.
lowercaseNoInclude a-z. Default true.
uppercaseNoInclude A-Z. Default true.
min_numbersNoMinimum digits in the value. Default 2.
min_specialNoMinimum special characters. Default 2.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond that: generation is local, nothing is stored, and the returned value passes through the conversation. This caveat about value exposure is highly relevant for an AI agent deciding whether to call the 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?

Three short sentences with no wasted words. The core action is front-loaded, followed by the important no-storage guarantee and the routing caveat. 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 all-optional parameters, a fully self-documenting schema, and read-only annotations, the description covers purpose, privacy, and the correct alternative. It does not specify the exact return format, but 'returns them' is sufficient given the schema and the simple nature of the 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% with descriptions and defaults for all 8 parameters, so the description does not need to repeat parameter-level details. It adds no extra parameter semantics, which lands at the baseline for fully documented schemas.

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 exactly what the tool does: generates random values locally and returns them. The description also differentiates it from oneguard_secrets_generate by explicitly contrasting the storage/revelation behavior, so an agent can distinguish the two 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?

Provides an explicit decision rule: if the generated value is going into a OneGuard secret, use oneguard_secrets_generate instead. It names the alternative and the condition that selects it, which is clear routing guidance.

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

oneguard_initInitialize the OneGuard sessionA
Idempotent

Initializes this server's isolated OneGuard session with an API key and verifies it against the backend. Normally you do NOT need to call this: if ONEGUARD_API_KEY is configured on the server, the session initializes itself on the first tool call. Call this only when another tool reports that the server is not initialized, and only with a key the user gave you in this conversation — never invent one. The key is stored in an isolated config directory and does not affect the user's own oneguard login in their terminal.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoThe OneGuard API key. Omit to use the ONEGUARD_API_KEY configured on the server.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds valuable context: the key is stored in an isolated config directory, does not affect the user's own terminal login, and the tool verifies against the backend. It doesn't fully describe failure modes or what happens on repeated calls, but the idempotent annotation covers that.

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 well-structured: states the action, explains when it's unnecessary, gives the exact condition for calling, and adds a security warning. Every sentence earns its place with no redundancy.

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 initialization tool with idempotent and non-destructive annotations, the description covers the essential context: when to call, what it does, side effects on storage, and the security constraint. No output schema exists, but the description's verification mention implies what the agent needs to know.

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 is simple. The description adds the crucial semantic that omitting the key uses the server-configured ONEGUARD_API_KEY, which goes beyond the schema's 'Omit to use the ONEGUARD_API_KEY configured on the server' — actually the schema already says this. The description reinforces the security constraint about not inventing keys. Baseline 3 for full coverage, but the description adds meaningful context about the key's origin and storage.

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 initializes the server's isolated OneGuard session with an API key and verifies it against the backend. It distinguishes itself from siblings by being the only initialization tool among the listed 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 when NOT to call it (normally not needed, auto-initializes), when to call it (only when another tool reports the server is not initialized), and provides a critical constraint (only use a key the user gave in this conversation, never invent one). This is exemplary usage guidance.

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

oneguard_logs_listRead the audit logA
Read-only

Returns the organization audit log — who did what to which resource, and when. Useful for answering "who changed this secret" questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn at most this many of the most recent entries.

TDQS

A4/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safety profile, and the description adds content semantics but no additional behavioral traits such as ordering, pagination, or time-range behavior. Since annotations carry most of the burden, a mid score is appropriate.

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?

A single, front-loaded sentence states the resource, the content, and a practical use case. No filler or repetition; every element 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 one-parameter read-only tool with annotations covering safety, the description and schema together are sufficient. It covers what the log contains and a motivating use case; minor gaps such as explicit ordering or time-range details are not critical for correct 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 covers 100% of parameters, including a clear description of 'limit' as returning 'most recent entries.' The description adds no parameter-specific detail 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?

Description uses a specific verb and resource: 'Returns the organization audit log' and details the content as 'who did what to which resource, and when.' This clearly distinguishes it from sibling list tools like oneguard_vault_list or oneguard_secrets_list, which target different resources.

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?

Gives a concrete usage context: 'Useful for answering "who changed this secret" questions.' This implies when to reach for this tool, though it does not explicitly name alternatives or state 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.

oneguard_secrets_addCreate a secretA

Creates a new secret in a vault from a local .env file (preferred) or from a single key/value pair. Prefer from_env_file: passing a value directly means the secret value travels through this conversation. To create a secret holding a NEW generated value, create it here and then use oneguard_secrets_generate, which never reveals the value. Never invent secret values — only use what the user explicitly provided or what is already in their .env file.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoSingle key name. Only when not using from_env_file.
nameYesName for the new secret (e.g. "production", "staging").
valueNoSingle value. Only when not using from_env_file.
vaultYesVault id or its 8-character prefix.
project_dirNoAbsolute path to the developer's project directory. This is where the .oneguard link file and the .env file live. Must be absolute — ask the user if you do not know it.
from_env_fileNoPath to a .env file, relative to project_dir (default ".env"). Preferred over key/value.

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already establish this is a mutating but non-destructive operation. The description adds valuable behavioral context: passing a value directly exposes it in the conversation, generated values are never revealed by the sibling tool, and secret values must come only from the user or their .env file. It does not disclose what happens on conflict (e.g., overwrite), but this is a minor omission given 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?

Four focused sentences with no filler. The purpose is front-loaded, followed by practical usage preferences and a hard constraint. Every sentence contributes actionable guidance.

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 6-parameter create tool with no output schema, the description covers the essential usage decisions well: main purpose, preferred input mode, security implications, and linkage to the generation workflow. It does not describe the return value or confirmation behavior after creation, which is a minor gap for a tool that produces a new resource.

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 meaning beyond the schema by explaining the tradeoff between from_env_file and direct key/value pairs, emphasizing that direct values 'travel through this conversation,' and implicitly connecting project_dir to where the .env file lives. This guidance helps the agent choose parameters correctly.

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 action ('Creates a new secret in a vault') with a clear resource and method, and distinguishes itself by the two accepted input modes: .env file or single key/value pair. This clearly separates it from siblings like oneguard_secrets_edit, oneguard_secrets_generate, and oneguard_secrets_archive.

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 instructs when to prefer from_env_file over direct value passing, and provides a specific cross-tool workflow: create a placeholder here, then call oneguard_secrets_generate for new generated values. The 'Never invent secret values' rule further constrains when invocation is appropriate.

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

oneguard_secrets_archiveArchive a secretA
DestructiveIdempotent

Archives a secret. It stops appearing as active but is not deleted. Confirm with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault id or its 8-character prefix.
secretYesSecret id or its 8-character prefix.

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=true. The description adds the key nuance that archiving is a soft deactivation, not a hard deletion, and that explicit user confirmation is required. This is genuinely useful context beyond the annotations, though it does not address reversibility 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?

Three short sentences with no filler; the main action and the critical caveats are front-loaded. 'It stops appearing as active but is not deleted' and 'Confirm with the user before calling' both earn their place. The description is appropriately sized for the tool's simplicity.

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 two-parameter mutation tool with full schema coverage and safety annotations, the description covers the essential semantics of archiving and the user-confirmation requirement. It does not state whether the action is reversible or what the response looks like, but these are secondary for this simple 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?

The input schema covers both parameters with meaningful descriptions, so schema description coverage is 100%. The tool description itself adds no parameter-level detail beyond what the schema already provides. The baseline score of 3 applies because the schema does the heavy lifting.

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 the specific verb 'Archives' and the target 'a secret', and clarifies the state change by saying it stops appearing as active but is not deleted. This directly distinguishes the tool from the sibling oneguard_secrets_delete. The wording is specific enough for an agent to know what the tool does.

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

Usage Guidelines3/5

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

The only usage instruction is 'Confirm with the user before calling,' which is a useful prerequisite but not an explicit when-to-use decision. It does not name alternatives such as oneguard_secrets_delete or oneguard_secrets_edit, nor does it state when archiving is preferable. The 'not deleted' wording weakly implies a contrast with deletion, but usage guidance remains implied rather than explicit.

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

oneguard_secrets_deleteDelete a secretA
Destructive

Permanently deletes a secret and everything stored in it. This cannot be undone. Only call this after the user has explicitly asked for this specific secret to be deleted, and read the secret name back to them first.

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault id or its 8-character prefix.
secretYesSecret id or its 8-character prefix.
confirmYesMust be exactly the secret's name, as a guard against deleting the wrong one. Get it from oneguard_secrets_list.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds crucial behavioral context: deletion is permanent, cannot be undone, destroys everything stored in the secret, and requires a confirmation step. This meaningfully helps the agent understand the consequences and the required safety precondition.

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 focused sentences with no filler. The first sentence states the action and consequence, and the second provides the safety precondition. It 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.

Completeness5/5

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

For a simple destructive tool with fully documented parameters, destructive annotations, and clear usage and safety instructions, the description is complete. No output schema or nested structures require additional explanation, and an agent has enough context to invoke the tool correctly and safely.

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 covers all three parameters with clear descriptions, including the confirm parameter's exact-match requirement and its source. The tool description adds no additional parameter-level semantics, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly names the action ('Permanently deletes') and the resource ('a secret and everything stored in it'), making the tool's core purpose unambiguous. It does not explicitly contrast with the sibling oneguard_secrets_archive, but the permanent and all-encompassing phrasing strongly distinguishes deletion from archival.

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 explicit conditions for use: only after the user has explicitly requested deletion of that specific secret, and after the secret name has been read back to the user. It does not explicitly mention alternatives like archiving, but the safety framing is clear enough for an agent to know when deletion is appropriate.

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

oneguard_secrets_editReplace a secret's contentsA
Destructive

Replaces a secret's stored payload. IMPORTANT: this overwrites the whole payload — a single key/value pair replaces every key the secret held. To change one variable while keeping the rest: for a generated value use oneguard_secrets_generate (which merges), otherwise sync the secret to a .env file, edit that file, and push it back with from_env_file. Confirm with the user before calling this.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoSingle key name. WARNING: replaces all other keys.
nameNoSecret name. Required by the CLI; omit to reuse the current name.
valueNoSingle value. WARNING: replaces all other keys.
vaultYesVault id or its 8-character prefix.
secretYesSecret id or its 8-character prefix.
project_dirNoAbsolute path to the developer's project directory. This is where the .oneguard link file and the .env file live. Must be absolute — ask the user if you do not know it.
from_env_fileNoPath to a .env file, relative to project_dir (default ".env"). Preferred: sends the full set of variables.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true, and the description reinforces this with the concrete consequence that the whole payload is overwritten. It goes beyond the annotation by explaining the merge alternative and requiring user confirmation, giving the agent actionable context about the destructive 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?

The description is three sentences with no fluff. The critical destructive warning is front-loaded, and the alternative paths are compressed into a clear conditional. 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 destructive mutation with seven parameters and no output schema, the description covers the key risks, names the alternatives, and states the user-confirmation requirement. Parameter details are handled by the schema, leaving the description to supply the missing decision context.

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 each parameter is already documented. The description adds valuable semantic context by explaining that key and value together form a replacement pair, and by positioning from_env_file as the preferred way to send the full set of variables, which helps the agent choose the right parameter combination.

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 — 'Replaces a secret's stored payload' — and immediately clarifies the destructive scope by warning that a single key/value pair replaces every key. It also distinguishes this from merge-style siblings by naming oneguard_secrets_generate as the alternative.

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 gives explicit routing: for changing one variable while keeping others, use oneguard_secrets_generate (which merges) or sync to a .env file and push back with from_env_file. It also sets a clear precondition: 'Confirm with the user before calling this.' This tells the agent when to use the tool and when to choose an alternative.

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

oneguard_secrets_generateGenerate a value into a secretA

Generates a random value and stores it in a secret under the given key, WITHOUT returning the value. This merges: every other variable in the secret is preserved (unlike oneguard_secrets_edit, which replaces the whole payload). Use this whenever the user wants a new password, token or key created for a service — it is the safe path, because the value never enters this conversation. Fails if the key already exists unless force is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe variable name to set, e.g. DB_PASSWORD.
forceNoReplace the key if it already exists. Default false.
vaultYesVault id or its 8-character prefix.
lengthNoNumber of characters. Default 16.
secretYesSecret id or its 8-character prefix.
numbersNoInclude 0-9. Default true.
specialNoInclude !@#%^&*()-_=+[]{}|;:,.<>? . Default true.
lowercaseNoInclude a-z. Default true.
uppercaseNoInclude A-Z. Default true.
min_numbersNoMinimum digits in the value. Default 2.
min_specialNoMinimum special characters. Default 2.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the minimal annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) by disclosing the critical no-return guarantee ('WITHOUT returning the value'), the merge semantics (every other variable preserved), and the failure condition ('Fails if the key already exists unless force is true'). No contradiction: destructiveHint=false aligns with merge-not-replace 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?

Three dense sentences, each earning its place: the no-return guarantee is front-loaded in the first sentence, merge semantics and sibling comparison in the second, usage guidance in the third. No filler or repetition of schema content.

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?

Strong coverage of behavior, safety, and usage context for a write tool with 11 parameters and no output schema. The only gaps are the absence of any statement about what the tool returns on success/failure and no mention of auth requirements or rate limits. Minor given the depth of behavioral disclosure elsewhere.

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 baseline is 3. The description adds contextual framing for 'key' (existence failure) and 'force' (override), but the schema already documents defaults, ranges, and charset options for the remaining parameters. The description adds little 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?

States a specific action with verb and resource: 'Generates a random value and stores it in a secret under the given key.' The explicit contrast with oneguard_secrets_edit and the use-case framing ('new password, token or key created for a service') clearly distinguish it from sibling tools in the same domain.

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 when-to-use guidance: 'Use this whenever the user wants a new password, token or key created for a service.' It names the key sibling alternative (oneguard_secrets_edit) and explains the merge-vs-replace difference. However, it does not contrast with the equally similar siblings oneguard_generate or oneguard_secrets_add, leaving exclusion guidance incomplete.

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

oneguard_secrets_listList secrets in a vaultA
Read-only

Lists the secrets of a vault: id prefix, name, and whether it is archived. Values are never returned by any tool in this server.

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault id or its 8-character prefix.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral context: 'Values are never returned by any tool in this server,' preventing a false expectation that secret values might be retrievable. It also states the exact output fields, going beyond the annotated safety profile.

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 one concise sentence that leads with the action, specifies the result fields, and closes with a high-value caveat about secret values. Every part 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 simple list tool with one fully documented parameter and read-only annotations, the description covers the purpose, the input, the output fields, and the important limitation that values are never returned. Nothing essential for 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%; the only parameter, vault, is already documented as 'Vault id or its 8-character prefix.' The description does not add further parameter-specific meaning, 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?

The description uses a specific action and resource: 'Lists the secrets of a vault', and names the returned fields (id prefix, name, archived). It clearly distinguishes from sibling tools like oneguard_vault_list, which lists vaults rather than secrets, and from secrets mutation tools.

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 context for using the tool is clear: call it to list secrets for a vault. However, it does not explicitly mention when not to use it or point to alternatives, such as oneguard_secrets_add or oneguard_vault_list.

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

oneguard_statusCheck OneGuard connectionA
Read-only

Verifies that the OneGuard CLI is installed, the session is initialized, and the backend is reachable. Returns the organization id and whether the configured API key may write. Use this first when something is not working, or before a batch of changes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description adds context beyond that by naming the session/initialization state it checks and whether the API key may write. It is clearly non-mutating with no contradiction; exact response shape is omitted, but the core behavior is transparent.

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

Conciseness5/5

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

Two sentences, each carrying distinct information: verification checks/return values and usage timing. The description is front-loaded with the action and resource, and contains no filler.

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 parameterless read-only status tool with annotations, the description covers purpose, key return values, and invocation timing. It does not specify exact output field names/types, but given the absence of an output schema, what it provides is sufficient for an agent to call 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?

The tool has zero parameters and schema coverage is 100%, so the baseline is 4. No parameter explanation is needed, and the description appropriately focuses on behavior and output rather than input.

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 ('Verifies') and resource (OneGuard connection) with three concrete checks: CLI installed, session initialized, and backend reachable. It also describes the return value, making it easy to distinguish this health-check tool from sibling tools like oneguard_init or oneguard_env_status.

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 when-to-use guidance: 'Use this first when something is not working, or before a batch of changes.' It does not list when-not-to-use or alternative tools, so it stops short of a 5.

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

oneguard_teams_inviteInvite a team memberA

Sends an invitation to join the organization. This emails a real person and grants them access once accepted, so only call it when the user explicitly asked, with the exact address they gave.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole to grant. One of: owner, admin, member, finance.member
emailYesEmail address of the person to invite.

TDQS

A4.9/5.0
Behavior5/5

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

The description clearly discloses that this sends a real email to a real person and grants organizational access upon acceptance. These real-world side effects go well beyond what the annotations (readOnlyHint=false, destructiveHint=false) convey, and there is 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, no waste. The core action is stated first, followed by the key behavioral warning and the invocation guardrail. 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 simple two-parameter tool with full schema coverage and no output schema, the description is complete. It covers the action, the side effects, the access implications, and the critical condition for calling it. Nothing essential 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 extra meaning to the email parameter by stressing that it must be the exact address the user gave, which prevents guessing or autocomplete behavior. Role semantics are already fully covered by the schema enum.

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 action (sends an invitation) on a clear resource (the organization) with a concrete outcome (grants access once accepted). It clearly distinguishes this from sibling team tools like oneguard_teams_list, oneguard_teams_set_role, and oneguard_teams_remove.

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 gives explicit invocation guardrails: only call it when the user explicitly asked, and only with the exact address they provided. This directly prevents misuse by autonomous agents, which is especially valuable for an action that emails a real person and grants access.

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

oneguard_teams_listList team membersA
Read-only

Lists the members of the organization with their roles and the 8-character id prefix other team tools accept.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower. The description adds useful context about output scope — organization members with roles and id prefixes — but does not disclose response format, ordering, or pagination 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?

A single ~20-word sentence that front-loads the verb and resource, states the scope, and captures the most decision-relevant output detail (the id prefix) with zero filler. Every word 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 zero-parameter read tool with no output schema, this is nearly complete: it states what is returned (roles and id prefixes) and implies the cross-tool use case. The only gap is the absence of any note on response format, but nothing an agent needs to invoke the tool correctly 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?

The tool has zero parameters, so the baseline of 4 applies; the description has nothing to compensate for. The mention of the 8-character id prefix is helpful for parameterizing sibling team tools, and it tells agents what identifier format to expect, though it concerns other tools' inputs rather than this one's.

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 a specific verb ('Lists') and resource ('the members of the organization') and goes beyond the title by specifying the exact output payload: roles and the 8-character id prefix. This clearly differentiates it from the mutating team siblings (invite, set_role, remove) and from the vault/secrets list tools.

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-to-use or when-not-to-use guidance is given, and no alternative tool is named. Usage context is implied through the phrase 'the 8-character id prefix other team tools accept,' which signals this tool is the identifier source for the team mutation tools, but the connection is left to inference.

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

oneguard_teams_removeRemove a team memberA
Destructive

Removes a member from the organization and revokes their access to every secret in it. This cannot be undone — they would have to be invited again. Only call this after the user explicitly asked for this specific person to be removed, and read their email back to the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
memberYesMember email, or their id / 8-character prefix.
confirmYesMust be exactly the member's email address, as a guard against removing the wrong person. Get it from oneguard_teams_list.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark it destructive, but the description adds meaningful context: revocation covers every secret in the organization and is irreversible, requiring re-invitation. This goes beyond the structured annotation by specifying scope and permanence.

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 compact sentences: action and consequence first, irreversibility second, and the usage guardrail third. Every sentence earns its place with no redundant wording.

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 two-parameter destructive tool with full schema descriptions and a destructive annotation, the description covers the action, consequences, irreversibility, and the agent's go/no-go condition. No output schema means return-value documentation isn't required.

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 both member and confirm are already well described in the input schema. The description's phrase about reading the email back reinforces the confirm parameter's purpose but doesn't add new parameter semantics 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 states a specific verb and resource: removes a member from the organization and revokes access to every secret. This clearly distinguishes it from sibling tools like oneguard_teams_invite and oneguard_teams_set_role.

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 an explicit go/no-go condition: only call after the user explicitly asked for this specific person to be removed, and read their email back first. It does not name alternative tools for non-removal scenarios, so it lacks explicit alternative routing.

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

oneguard_teams_set_roleChange a member's roleA
Idempotent

Changes an existing member's role in the organization. Promoting to owner or admin grants broad access to every secret, so confirm the person and the role with the user first. The member can be named by email or by their 8-character id prefix. Note that an admin caller cannot modify owners, other admins, or promote anyone to admin or owner — the server enforces this.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesThe new role. One of: owner, admin, member, finance.
memberYesMember email, or their id / 8-character prefix.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses two important behavioral traits: promoting to owner/admin grants broad access to every secret, and admin callers are blocked from modifying owners, other admins, or promoting to admin/owner. These are security-relevant consequences not encoded in the annotations and are essential for safe usage.

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

Conciseness5/5

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

The description is three sentences, each earning its place: the main action, a safety warning, and a key permission constraint. It is front-loaded with the primary purpose and avoids filler. This is appropriately sized for the tool's complexity.

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

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 (2 params, no output schema), the description is complete. It covers the operation, parameter identification, privilege escalation consequences, and admin restrictions. No critical information an agent needs to invoke the tool 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?

The input schema already covers 100% of parameters with descriptions: role enums and member email/id prefix. The description repeats the member identification format but adds no additional parameter semantics. Per the rubric, with full schema coverage the baseline is 3, and no extra value is provided here.

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: 'Changes an existing member's role in the organization.' This clearly distinguishes it from sibling tools like invite, remove, and list. It also implicitly conveys the operation's scope (role mutation), so an agent can select it correctly 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 Guidelines4/5

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

The description gives clear context about when to use the tool and adds critical operational guidance: confirm with the user before granting owner/admin, and warns about caller limitations. It does not explicitly name alternatives such as invite or remove, but the sibling names and the verb 'change' make the appropriate use case unambiguous.

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

oneguard_vault_addCreate a vaultA

Creates a new vault in the organization and returns its id. A vault is the container that secrets live in.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new vault.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already mark readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds that it returns an id and explains the vault concept, which is useful context, but it does not disclose side effects, permissions, or failure behavior. Minimal 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?

Two sentences, no filler. The action and return value are front-loaded in the first sentence, and the second sentence provides necessary domain context without 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 simple creation tool with one parameter and no output schema, the description covers the core purpose and return value. It does not mention uniqueness or permission requirements, but these are not critical for an agent to call it correctly. Slightly more context (e.g., uniqueness) could be added, but current coverage is 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?

Schema description coverage is 100%: the only parameter 'name' has a clear description. The tool description adds no additional constraints, format, or meaning beyond the 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 uses a precise verb ('Creates') and resource ('a new vault'), and clarifies what a vault is ('container that secrets live in'), distinguishing it from sibling tools like vault_list and vault_rename. The purpose is 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?

The description implies when to use the tool (when you need a container for secrets) but does not explicitly mention alternatives or state when not to use it. No exclusion or routing to other vault tools is provided, so usage guidance is implied rather than explicit.

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

oneguard_vault_listList vaultsA
Read-only

Lists every vault in the organization, with the 8-character id prefix that other tools accept as a vault argument. A vault is the container that secrets live in.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds useful behavioral context beyond that: it specifies the output includes the 8-character id prefix and defines a vault as a container for secrets. This helps the agent understand what to expect without contradicting 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 exactly two sentences, front-loaded with the main action, and each sentence adds necessary information without redundancy. It avoids any filler or repetition, earning a perfect score.

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 read-only listing tool with no parameters and no output schema, the description covers all essential information: it lists all vaults, explains the id prefix usage, and clarifies what a vault is. There are no missing prerequisites or expectations that would leave an agent uncertain about calling 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?

The tool has zero parameters, so the description has no parameter semantics to explain. The baseline for 0 params is 4, and the description's mention of output format (id prefix) does not relate to parameters but is still informative. No deduction needed.

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 action (lists every vault) and resource (vaults in the organization), and adds the key detail that it returns the 8-character id prefix accepted by other tools. This clearly distinguishes it from siblings like oneguard_secrets_list or oneguard_vault_add, which have different purposes.

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 its use when you need to enumerate all vaults or obtain their IDs, which is evident from the context. However, it does not explicitly mention when not to use it or point to alternatives (e.g., 'for secrets use oneguard_secrets_list'). The clarity of the operation makes this a minor omission, so a 4 is appropriate.

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

oneguard_vault_renameRename a vaultA
Idempotent

Renames an existing vault. Secrets, links and ids are unaffected — only the display name changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe new vault name.
vaultYesVault id or its 8-character prefix.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate a mutating but non-destructive, idempotent operation. The description adds specific behavioral context: secrets, links, and ids remain unchanged, so callers know the operation is safe and scoped. This goes beyond what annotations alone 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 short sentences, no filler. The core action is stated first, and the most important side-effect clarification follows immediately. Everything present 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 simple two-parameter rename operation with no output schema and no nested structures, the description fully covers what the tool does and what side effects to expect. An agent has enough context to select and invoke 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 description coverage is 100%, with both vault and name clearly documented in the input schema. The tool description doesn't add extra parameter meaning, but the schema already carries the needed semantics, so the 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 uses a specific verb ('Renames') with a clear resource ('an existing vault') and clarifies the exact scope: only the display name changes. This distinguishes it from sibling tools like oneguard_vault_list or oneguard_vault_add without needing to inspect schemas.

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 phrase 'existing vault' implies this tool is for updating an already-created vault, not creating one, but no explicit guidance compares it to vault_add/vault_list or states when not to use it. The usage context is implied rather than stated.

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. 21 tool updatesv0.3.0
    • First observedoneguard_env_push
    • First observedoneguard_env_status
    • First observedoneguard_env_sync
    • First observedoneguard_env_unlink
    • First observedoneguard_generate
    • First observedoneguard_init
    • First observedoneguard_logs_list
    • First observedoneguard_secrets_add
    • First observedoneguard_secrets_archive
    • First observedoneguard_secrets_delete
    • First observedoneguard_secrets_edit
    • First observedoneguard_secrets_generate
    • First observedoneguard_secrets_list
    • First observedoneguard_status
    • First observedoneguard_teams_invite
    • First observedoneguard_teams_list
    • First observedoneguard_teams_remove
    • First observedoneguard_teams_set_role
    • First observedoneguard_vault_add
    • First observedoneguard_vault_list
    • First observedoneguard_vault_rename

TDQS

A3.9/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target distinct resources and actions clearly, but two pairs could be confused: oneguard_status vs oneguard_env_status (session vs environment status) and oneguard_generate vs oneguard_secrets_generate (returned vs stored values). The detailed descriptions help, but the names alone are ambiguous.

Naming Consistency4/5

The dominant pattern is oneguard_<resource>_<action> (vault_list, secrets_add, env_sync, teams_invite), which is consistent. A few tools break the pattern: oneguard_init, oneguard_status, and oneguard_generate lack a resource segment, making them minor deviations rather than chaotic inconsistencies.

Tool Count4/5

21 tools is slightly above the ideal 3-15 range but still reasonable for a secrets management server covering vaults, secrets, environment sync, teams, and audit logs. Each tool has a distinct job, so the count feels justified rather than bloated.

Completeness4/5

Core lifecycle coverage is strong: vaults can be listed/added/renamed, secrets can be listed/added/edited/archived/deleted/generated, env links can be synced/pushed/unlinked, and teams can be managed. Minor gaps exist—there is no unarchive operation and no vault deletion—but agents can work around these in most workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to scan projects for leaked secrets and manage security incidents using GitGuardian's comprehensive API. It supports automated secret detection, honeytoken creation, and remediation workflows to secure codebases without context switching.
    37
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    A GitHub-native secrets manager that allows AI assistants to securely manage, generate, and validate credentials without exposing sensitive values in conversation history. It supports secret scanning, environment diffing, and secure command execution by injecting masked variables directly into the runtime environment.
    8
    5 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI coding agents with direct access to secrets management (get, set, list, delete secrets, and list environments) through the Model Context Protocol, enabling secure secret operations during development.
    8 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to make authenticated API calls and run commands with secrets injected, while keeping credentials completely hidden from the model, with policy enforcement, grants, and audit logging.
    2
    6
    MIT