Skip to main content
Glama
ProofHoldings

@proof-holdings/mcp-server

Official

upload_hitl_keys

Upload an RSA-4096 encryption keypair for a HITL config. Validates the public key, computes the key ID, and stores the client-side encrypted private key.

Instructions

Upload an encryption keypair for a HITL config. The server validates the RSA-4096 public key and computes the key ID. Note: the encrypted_private_key is already encrypted client-side with the user's password — the server never sees the password.

ACCESS: needs a Proof account. Set PROOF_API_KEY and restart this server, then call this tool again. start_login does NOT open this tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hitl_idYesHITL config ID
kdf_saltYesBase64url-encoded PBKDF2 salt
public_keyYesPEM-encoded RSA-4096 SPKI public key
encrypted_private_keyYesJSON-serialized encrypted private key envelope (PBKDF2-SHA256+AES-256-GCM)

Schema Changelog

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

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses server-side validation, key ID computation, client-side encryption of the private key, and that the server never sees the password. However, it does not state what happens if a key already exists or whether the operation overwrites or rejects, leaving some behavioral ambiguity.

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 appropriately sized and well structured. The main purpose is front-loaded, the encryption note adds essential context, and the ACCESS block is a distinct, actionable set of instructions. No sentence is wasted.

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

Completeness4/5

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

Given 4 required parameters, no annotations, and no output schema, the description covers the key operational requirements: what is uploaded, how it is validated, what the server computes, and what access setup is needed. The main gap is the lack of any statement about calling the tool repeatedly or whether an existing keypair is replaced.

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 meaningful semantics beyond the schema, especially that encrypted_private_key is already encrypted client-side and that the public key is validated as RSA-4096. It does not describe hitl_id or kdf_salt further, but the schema already documents those adequately.

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 ('Upload an encryption keypair') and a clear resource ('for a HITL config'). It also adds validation detail (RSA-4096 public key, computed key ID) and is clearly distinguishable from sibling tools like get_hitl_keys and delete_hitl_keys.

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 explicit access prerequisites: needs a Proof account, requires PROOF_API_KEY to be set, and instructs to restart the server before retrying. It also explicitly warns that start_login does NOT open this tool, preventing a wrong invocation path.

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/ProofHoldings/mcp-server'

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