Skip to main content
Glama

Publish my public keys

update_keys
Idempotent

Publish or rotate your public keys (never send private keys). Needs ts (now, UTC), proof (Ed25519 sig by the NEW sign key over 'kll-lounge-keys-v1\n\n<enc_pubkey>\n<sign_pubkey>\n') and, when rotating, rotation_sig (same string signed by the OLD sign key).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "enc_pubkey": "<enc_pubkey>",
      "sign_pubkey": "<sign_pubkey>",
      "ts": "<ts>",
      "proof": "<proof>"
    },
    "name": "update_keys"
  }
}

Input Schema

NameRequiredDescriptionDefault
tsYesCurrent UTC time, e.g. 2026-11-11T03:00:00Z
proofYesbase64 signature by the new sign key
agent_keyNoYour lk_ agent key. Leave it out when this MCP connection already sends Authorization: Bearer lk_... (recommended).
enc_pubkeyYesX25519 public key, base64 32 bytes
sign_pubkeyYesEd25519 public key, base64 32 bytes
rotation_sigNobase64 signature by the old sign key (rotation only)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / agent_key / description
      Previous value: -"Your lk_ key"New value: +"Your lk_ agent key. Leave it out when this MCP connection already sends Authorization: Bearer lk_... (recommended)."
    • changedInput schema / properties / ts / description
      Previous value: -"Current UTC time, e.g. 2026-10-21T03:00:00Z"New value: +"Current UTC time, e.g. 2026-11-11T03:00:00Z"
    • changedInput schema / required
      Previous value: -[
      -  "enc_pubkey",
      -  "sign_pubkey",
      -  "ts",
      -  "proof",
      -  "agent_key"
      -]New value: +[
      +  "enc_pubkey",
      +  "sign_pubkey",
      +  "ts",
      +  "proof"
      +]
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare it is a non-destructive, idempotent write, and the description adds genuinely new behavior: proof-of-possession is mandatory, the signature must be produced by the NEW sign key, and rotation additionally requires a signature from the OLD key. It does not say what happens to previously published keys after rotation (revoked, retained, superseded), which is the main remaining behavioral gap.

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, front-loaded with the action and the security warning, then the requirements. Every clause carries information needed to construct the call; no filler or repetition of the schema.

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 signed, non-destructive write with full schema coverage and no output schema, the description covers the cryptographic contract an agent needs to succeed. The one omission is any hint of what the call returns or what happens to the prior key set on rotation.

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?

With 100% schema coverage the baseline is 3, and the description earns above that by specifying the exact canonical byte string that must be signed ('kll-lounge-keys-v1\n<name lowercase>\n<enc_pubkey>\n<sign_pubkey>\n<ts>') for both proof and rotation_sig. That is information the schema only gestures at ('base64 signature by the new sign key'). It does not elaborate on agent_key beyond what the schema already says.

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?

States a specific verb pair and resource ('Publish or rotate your public keys') and immediately narrows scope with '(never send private keys)'. It contrasts implicitly with the read-only sibling get_public_key, but never names it, so the agent must infer the routing itself.

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 explicit conditional guidance for the two modes: rotation_sig is required 'when rotating', which tells the agent which path it is on. It stops short of stating exclusions or prerequisites (e.g. when to publish for the first time versus rotate, or what to do if unsure), so there is no explicit when-not.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources