Skip to main content
Glama

list_secrets

Read-onlyIdempotent

List secret keys and metadata by scope without exposing values, so you can discover available secrets before reading or writing. Read-only and safe to call repeatedly.

Instructions

[secrets] List secret keys and quantum metadata in the requested scope, never the values. Use to discover what secrets exist before reading or writing; pair with inspect_secret for full metadata on one key, analyze_secrets for usage trends, or health_check for decay/anomaly summaries. Read-only; safe to call repeatedly. Returns JSON { ok, data: { entries: [...] } } where each entry has scope, key, stateKeys (env names if superposed), expired, stale, lifetimePercent, timeRemaining, entangledCount, accessCount.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagNoReturn only secrets that include this exact tag (case-sensitive). Example: 'production'.
orgIdNoOrganization identifier for org-scoped secrets. Required only when scope='org'. Example: 'acme-corp'.
scopeNoWhere the secret lives. 'global' = user keyring (default if omitted on reads), 'project' = scoped to projectPath, 'team' = team-shared (needs teamId), 'org' = org-shared (needs orgId).
staleNoIf true, return only secrets in the stale window (lifetimePercent >= 75 and not yet expired).
filterNoGlob pattern matched against the key name. Supports `*` and `?`. Examples: 'API_*', 'STRIPE_?_KEY'.
teamIdNoTeam identifier for team-scoped secrets. Required only when scope='team'. Example: 'acme-platform'.
expiredNoIf true, return only secrets whose decay TTL has elapsed (lifetimePercent >= 100).
projectPathNoAbsolute path to the project root for project-scoped secrets and policy resolution. Defaults to the MCP server's current working directory when omitted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv0.11.7
    • changedInput schema / properties / expired / description
      Previous value: -"Show only expired secrets"New value: +"If true, return only secrets whose decay TTL has elapsed (lifetimePercent >= 100)."
    • changedInput schema / properties / filter / description
      Previous value: -"Glob pattern on key name (e.g., 'API_*')"New value: +"Glob pattern matched against the key name. Supports `*` and `?`. Examples: 'API_*', 'STRIPE_?_KEY'."
    • changedInput schema / properties / orgId / description
      Previous value: -"Org identifier for org-scoped secrets"New value: +"Organization identifier for org-scoped secrets. Required only when scope='org'. Example: 'acme-corp'."
    • changedInput schema / properties / projectPath / description
      Previous value: -"Project root path for project-scoped secrets"New value: +"Absolute path to the project root for project-scoped secrets and policy resolution. Defaults to the MCP server's current working directory when omitted."
    • changedInput schema / properties / scope / description
      Previous value: -"Scope: global, project, team, or org"New value: +"Where the secret lives. 'global' = user keyring (default if omitted on reads), 'project' = scoped to projectPath, 'team' = team-shared (needs teamId), 'org' = org-shared (needs orgId)."
    • changedInput schema / properties / stale / description
      Previous value: -"Show only stale secrets (75%+ decay)"New value: +"If true, return only secrets in the stale window (lifetimePercent >= 75 and not yet expired)."
    • changedInput schema / properties / tag / description
      Previous value: -"Filter by tag"New value: +"Return only secrets that include this exact tag (case-sensitive). Example: 'production'."
    • changedInput schema / properties / teamId / description
      Previous value: -"Team identifier for team-scoped secrets"New value: +"Team identifier for team-scoped secrets. Required only when scope='team'. Example: 'acme-platform'."
  2. Changed4 schema fields changedv0.11.5
    • addedInput schema / properties / orgId
      Added value: +{
      +  "description": "Org identifier for org-scoped secrets",
      +  "type": "string"
      +}
    • changedInput schema / properties / scope / description
      Previous value: -"Scope: global or project"New value: +"Scope: global, project, team, or org"
    • changedInput schema / properties / scope / enum
      Previous value: -[
      -  "global",
      -  "project"
      -]New value: +[
      +  "global",
      +  "project",
      +  "team",
      +  "org"
      +]
    • addedInput schema / properties / teamId
      Added value: +{
      +  "description": "Team identifier for team-scoped secrets",
      +  "type": "string"
      +}
  3. Changed4 schema fields changedv0.1.1
    • addedInput schema / properties / expired
      Added value: +{
      +  "description": "Show only expired secrets",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / filter
      Added value: +{
      +  "description": "Glob pattern on key name (e.g., 'API_*')",
      +  "type": "string"
      +}
    • addedInput schema / properties / stale
      Added value: +{
      +  "description": "Show only stale secrets (75%+ decay)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tag
      Added value: +{
      +  "description": "Filter by tag",
      +  "type": "string"
      +}
  4. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and closed-world. The description adds the crucial non-obvious constraint that values are NEVER returned, plus a full return-shape contract, which is real added context despite no output schema.

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?

Information-dense and front-loaded with the verb/resource and the value caveat, but the return-shape sentence is long. Nothing is wasted; every clause 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?

Given 8 params (all optional) with full schema coverage, read-only annotations, and no output schema, the description supplies the missing return contract and value-safety guarantee, leaving no gap for an agent to call it incorrectly.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter is richly documented in the schema; the description adds no parameter-specific guidance. Baseline 3 is appropriate when the schema carries the full burden.

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

Purpose5/5

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

States a specific verb (list) and resource (secret keys and quantum metadata) with clear scope, and explicitly distinguishes itself from siblings by naming inspect_secret, analyze_secrets, and health_check with their distinct purposes.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('discover what secrets exist before reading or writing') and routes to the correct alternatives for different needs, leaving nothing to inference.

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