Reference implementation of DCP - a protocol for secure credential custody and transaction signing for AI agents. Includes vault runtime, relay server, agent CLI, and SDKs for connecting AI agents to local or remote vaults.
DCP exposes 17 high-risk financial and credential tools with critical definition gaps. Tool names lack consistent verb-noun structure (e.g., 'signTx' vs 'sign_tx', 'pairService' vs 'pair_service'). Descriptions are present but generic (avg ~80 chars, well below the 194-char baseline for A+ tools). Most critically: parameter schemas are minimal, many lack type constraints, enums, or validation guidance. No output schemas documented. Error handling is absent; no recovery guidance. Security-critical tools (signTx, transfer, swap) lack confirmation patterns or dry-run support. Composition is poor: signTx and signWithVault do nearly identical work; readCredential/writeCredential lack scope validation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite irreversible operations.
Approve a pending consent request
Check the current spending budget and limits
Build an unsigned Solana transfer transaction
Check the status of pending consent requests
Get the wallet address for a specified chain
Check vault health and connectivity status
List all available data scopes in the vault
List active agent sessions with granted scopes
Irreversible operations (signTx, transfer, swap, signWithVault) lack confirmation/dry-run patterns. No error guidance for failed transactions. Agents can execute destructive actions without recovery paths.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification. LLMs cannot distinguish safe reads from irreversible writes without explicit hints.
Duplicate/overlapping tools: signTx and signWithVault both sign transactions; readCredential and readData both read vault data. No clear distinction in descriptions. LLMs will waste reasoning cycles choosing between them.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Pair a service with the vault for trusted operations
Read stored credentials or personal data from the vault
Read data from a specific scope in the vault
Sign a message with the wallet key
Sign a transaction without exposing the private key. Prompts for user consent if first time.
Sign a Solana transaction via DCP Vault without exposing the private key
Execute a token swap via the vault
Transfer funds from the vault wallet to a destination address
Write or update credentials in the vault
Parameter schemas lack enums, ranges, and validation constraints. 'chain' accepts free-form strings (should be enum: solana|ethereum|...). 'currency' and 'amount' have no bounds. LLMs will hallucinate invalid values.
No output schemas documented. Agents cannot plan downstream calls or extract required fields (e.g., does transfer return tx_hash, confirmation_status, timestamp?). Breaks tool chaining.