Skip to main content
Glama

Delimit Secret Impl

_delimit_secret_impl

Store, retrieve, list, revoke, and audit credential access through the local secrets broker, enabling just-in-time secret delivery with a recorded access trail.

Instructions

Unified secrets-broker entry point — dispatches to one of five actions.

Manages just-in-time credential access through the local Delimit secrets broker (ai.secrets_broker) instead of bare environment variables or .env files: store a credential once with an access scope, fetch it at execution time with every read recorded to an audit trail, inventory credential metadata without exposing values, revoke on rotation/leak, and read the access log.

When to use: as the single MCP-registered secrets surface (delimit_secret) when the caller wants to pick the operation by name in one call rather than choosing a specific delimit_secret_* alias. When NOT to use: from internal code paths — prefer the specific alias (delimit_secret_store, delimit_secret_get, delimit_secret_list, delimit_secret_revoke, delimit_secret_access_log) so each operation's docstring and arg schema show up at the right call site. Do not use the broker as a general key/value store — it is credential-scoped and every read is audited.

Sibling contrast: each delimit_secret_ wrapper below is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core. Versus delimit_context_* / delimit_memory_*: those persist plans and notes; this persists access-controlled credentials with a read audit trail.

Storage & access model: credentials are persisted to the local broker store under ~/.delimit/secrets/ (encoded at rest) and returned in cleartext to an authorized caller — the host filesystem is the trust boundary, so protect it accordingly. Scope is enforced at READ time: scope="all" permits any caller; otherwise the requester's agent_type or tool must appear in the credential's comma-separated allow-list. The access log records who/what/when and whether access was granted — it never stores the credential value, and "list" returns metadata only, never values.

Side effects (per action):

  • "store": WRITES/overwrites the credential under ~/.delimit/secrets/ with its scope and description. A same-name store overwrites silently; there is no version history.

  • "get": returns the credential value to an authorized requester and appends an access-log entry (granted true/false); on success it updates the credential's access counter / last-accessed timestamp. A scope denial, a missing name, or a revoked credential is logged and returns without a value.

  • "list": READ-ONLY. Returns credential metadata (name, scope, description, created_by, access_count, revoked, timestamps) — never values. Wrapped via _with_next_steps.

  • "revoke": WRITES a revoked flag + timestamp and appends a revoke entry to the access log; subsequent "get" calls are denied. Does NOT hard-delete the stored file.

  • "access_log": READ-ONLY. Returns the access trail (newest first), optionally filtered to one credential name. Wrapped via _with_next_steps. No action is license-gated. Errors are deterministic ({"error": "..."}): a missing required argument or an unknown action short-circuits before the backend call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoCredential name / key. Required for "store", "get", "revoke"; optional filter for "access_log" (empty = all); ignored for "list". Sanitized for filesystem safety.
toolNoName of the requesting tool (action="get" only), checked against scope.
scopeNoComma-separated agent/tool identities permitted to read this credential, or "all" for any requester. Used only by action="store". Default "all". Enforced at read time.all
valueNoThe credential to store. Required for action="store"; ignored otherwise. Never echoed back by "store".
actionNoWhich secret operation to perform. One of "store", "get", "list", "revoke", "access_log". Default "list". Case- insensitive (lowered + stripped). Other values return a deterministic error.list
agent_typeNoIdentity of the requesting agent (action="get" only), checked against scope.
descriptionNoHuman-readable description (action="store" only). Optional but recommended; surfaces in "list" and the audit trail.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed7 schema fields changedv4.13.1
    • changedInput schema / properties / action / description
      Previous value: -"Which secret operation to perform."New value: +"Which secret operation to perform. One of \"store\", \"get\",\n\"list\", \"revoke\", \"access_log\". Default \"list\". Case-\ninsensitive (lowered + stripped). Other values return a\ndeterministic error."
    • changedInput schema / properties / agent_type / description
      Previous value: -"Requesting agent identity (for action='get')."New value: +"Identity of the requesting agent (action=\"get\" only),\nchecked against scope."
    • changedInput schema / properties / description / description
      Previous value: -"Human-readable description (for action='store')."New value: +"Human-readable description (action=\"store\" only).\nOptional but recommended; surfaces in \"list\" and the audit\ntrail."
    • changedInput schema / properties / name / description
      Previous value: -"Secret name (for store/get/revoke/access_log)."New value: +"Credential name / key. Required for \"store\", \"get\",\n\"revoke\"; optional filter for \"access_log\" (empty = all);\nignored for \"list\". Sanitized for filesystem safety."
    • changedInput schema / properties / scope / description
      Previous value: -"Comma-separated allowed agents/tools or 'all' (for action='store')."New value: +"Comma-separated agent/tool identities permitted to read\nthis credential, or \"all\" for any requester. Used only by\naction=\"store\". Default \"all\". Enforced at read time."
    • changedInput schema / properties / tool / description
      Previous value: -"Requesting tool name (for action='get')."New value: +"Name of the requesting tool (action=\"get\" only), checked\nagainst scope."
    • changedInput schema / properties / value / description
      Previous value: -"Secret value (for action='store')."New value: +"The credential to store. Required for action=\"store\";\nignored otherwise. Never echoed back by \"store\"."
  2. Addedv4.5.5

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are minimal (title only), so the description carries the full burden. It discloses per-action side effects, silent overwrites, no version history, revoke-not-delete behavior, read-only guarantees for list/access_log, audit-log behavior, scope enforcement at read time, cleartext return, filesystem trust boundary, and deterministic error handling. This is exceptionally transparent.

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 long, but it is well-structured with clear sections and every section contributes necessary detail for a five-action dispatcher. It is slightly repetitive around the alias relationship and unified entry point, but the density of useful information justifies the length.

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 complexity — seven parameters, five actions, minimal annotations, and an output schema — the description covers everything an agent needs: storage location, access control model, audit behavior, side effects, limitations, error shape, and what each action returns. 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 description coverage is 100%, so the baseline is 3. The description adds value by mapping parameters to actions: name is required for store/get/revoke but only filters access_log, scope is enforced at read time, value is never echoed, and action is case-insensitive. This enriches the parameter semantics beyond the raw 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 identifies a specific verb-and-resource relationship: a unified secrets-broker entry point that dispatches to five named actions (store, get, list, revoke, access_log). It clearly distinguishes itself from the delimit_secret_* aliases and from the delimit_context_* / delimit_memory_* families, so an agent can tell what this tool is and is not.

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?

There is an explicit 'When to use' and 'When NOT to use' section. It names the preferred alternatives (delimit_secret_store, delimit_secret_get, etc.) and the condition that selects them, and it warns against using the broker as a general key/value store. This is unambiguous routing guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/delimit-ai/delimit-mcp-server'

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