upload_hitl_keys
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. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.
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": {
"hitl_id": "<hitl_id>",
"public_key": "<public_key>",
"encrypted_private_key": "<encrypted_private_key>",
"kdf_salt": "<kdf_salt>"
},
"name": "upload_hitl_keys"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dek_iv | No | v2 envelope: the IV of that wrapping | |
| dek_tag | No | v2 envelope: the GCM tag of that wrapping | |
| hitl_id | Yes | HITL config ID | |
| kdf_salt | Yes | Base64url-encoded PBKDF2 salt | |
| public_key | Yes | PEM-encoded RSA-4096 SPKI public key | |
| wrapped_dek | No | v2 envelope: the data key wrapped under the master key | |
| backup_dek_iv | No | v2 envelope: the IV of the recovery wrapping | |
| backup_dek_tag | No | v2 envelope: the GCM tag of the recovery wrapping | |
| backup_wrapped_dek | No | v2 envelope: the data key wrapped under the recovery code | |
| encrypted_private_key | Yes | JSON-serialized encrypted private key envelope (PBKDF2-SHA256+AES-256-GCM) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kid | Yes | The stored key's id | |
| message | Yes |