Trust Model
| Component | Trust Level | What It Can Access |
|---|---|---|
| WalletSuite API | No key access | Blockchain data, transaction preparation, fee estimation |
| MCP Server | No key access | Tool orchestration, input validation, band filtering |
| OWS Vault | Trusted, operator-held | Key generation, AES-256-GCM encrypted storage, signing, policy enforcement |
| Your LLM | No key access | MCP tool calls and responses only — never sees key material |
Defense in Depth
WalletSuite uses seven layers of security controls:1. Band Filtering
Controls which tools exist in the MCP schema. Tools outside the active band are never registered — the LLM cannot discover or call them. Default isread (7 tools, no signing).
See Band Filtering.
2. Policy Gates
Controls what signed transactions can do. Declarative rules (chain allowlists, expiry) enforced by OWS before any key material is touched. First denial short-circuits. See Policy Gates.3. Structured Errors
Every error includes acategory and code. flow errors include a requiredAction. Agents recover programmatically — no guessing, no silent failures.
See Structured Errors.
4. Input Validation
Zod schemas validate all tool inputs before they reach the API:- Address format checked per chain family (0x-prefixed for EVM, T-prefixed for Tron)
- Amounts validated as positive numeric strings (no scientific notation)
- Mutually exclusive fields enforced (
amountvsamountWei, never both) - Token contracts validated when provided
- Required fields enforced
5. Secret Isolation
Sensitive values are supplied through environment variables, never through tool arguments:WALLETSUITE_API_KEYOWS_PASSPHRASEOWS_AGENT_TOKENOWS_ETHEREUM_RPC_URL/OWS_TRON_RPC_URL
6. HTTPS Enforcement
All external URLs are validated as HTTPS before use. HTTP is allowed only forlocalhost in development. This applies to the backend API, chain RPCs, and MoonPay widget URLs.
7. Audit Trail
Everysign_transaction and send_transaction operation appends a receipt to a hash-chained, append-only JSONL log. Each receipt is SHA-256 linked to the previous one, so tampering with any entry invalidates every entry after it. Receipts record the operation, chain, policy decision, and outcome — wallet name is preserved for forensics; sensitive fields are schema-redacted before write.
See Audit Trail.
Non-Custodial Architecture
Attack Model
If the MCP server is compromised:- An attacker does not get private keys (keys are in the OWS vault, not the server)
- An attacker cannot sign transactions unless OWS is enabled and the signing band is active
- An attacker cannot broadcast unless the broadcast band is enabled, the RPC URL is configured, and
confirmBroadcast=trueis passed
MCP_BANDS=read is information disclosure (balances, prices, transaction history). No value can be moved.
What WalletSuite Does Not Do
- Store private keys or mnemonics
- Custody funds
- Sign transactions on your behalf
- Move funds without an explicitly enabled signing path and user/policy approval
- Expose internal orchestration logic
Remaining Risks
Non-custodial does not mean zero risk. Important risks that remain with the operator:- Enabling broader bands than needed
- Running on a compromised host
- Leaking environment secrets (API keys, passphrases, agent tokens)
Practical Guidance
Start with these defaults and expand deliberately:| Setting | Default | When to Change |
|---|---|---|
MCP_BANDS | read | Add prepare when you need tx construction |
OWS_ENABLED | false | Enable when you need local signing |
| Broadcast | Disabled | Enable only after proving the signing flow |
| Policy | None | Create before issuing agent tokens |
Related
- Key Management — OWS vault, encryption, key lifecycle
- Audit Trail — signing and broadcast audit log
- Security & Trust (AI Agents) — detailed threat model
- Responsible Disclosure — reporting vulnerabilities