Key terms and concepts used throughout the ISCL/Clavion project, grouped by category and alphabetized within each section.
Core Concepts
Term
Definition
BuildPlan
Concrete EIP-1559 transaction built from a TxIntent by Domain B. Contains the serialized txRequest, its txRequestHash (keccak256), and a human-readable description.
Clavion
Project name for the ISCL implementation. Used as the npm scope (@clavion/*) and CLI prefix (clavion-cli).
Domain A (Untrusted)
Agent frameworks and skills. Adapters (adapter-openclaw, adapter-mcp, plugin-eliza, adapter-telegram) live here. Cannot access private keys, sign transactions, or call blockchain RPCs directly.
Domain B (Trusted)
ISCL Core and its supporting packages (core, signer, audit, policy, preflight, registry). The only domain with key material, signing capability, and direct blockchain RPC access.
Domain C (Limited Trust)
Secure Executor (sandbox). Runs untrusted skill code in Docker containers with no key access. Communicates with Domain B only via the ISCL Core HTTP API.
ISCL
Independent Secure Crypto Layer. A local secure runtime that enables AI agents to safely perform crypto operations (signing, swaps, approvals, transfers) while isolating private keys from untrusted agent code.
Trust Domain
One of three isolation zones (A, B, C) with distinct trust levels and capabilities. Every line of code belongs to exactly one domain.
TxIntent
Declarative JSON document (version "1") describing a desired blockchain operation. Contains chain, wallet, action, constraints, and optional preferences/metadata. Supports 5 action types. Never contains raw calldata or ABI-encoded data.
Action Types
Term
Definition
approve
ERC-20 spending allowance approval. Sets the allowance for a spender contract to spend up to amount of the specified asset on behalf of the wallet.
swap_exact_in
DEX swap specifying an exact input amount (amountIn) with a minimum acceptable output (minAmountOut). Supports uniswap_v3 (default) and 1inch providers.
swap_exact_out
DEX swap specifying an exact desired output amount (amountOut) with a maximum input (maxAmountIn). Always uses Uniswap V3 (1inch does not support exact-output swaps).
transfer
ERC-20 token transfer. Sends amount of an ERC-20 asset to a recipient address (to).
transfer_native
Native currency transfer (ETH on Ethereum, or the chain’s native token). Sends amount wei to a recipient address (to). No asset field required.
Security Terms
Term
Definition
Approval Summary
Human-readable summary of a pending transaction presented to the user for approval. Includes action, expectedOutcome, balanceDiffs, riskScore, riskReasons, warnings, and gasEstimateEth.
Approval Token
Single-use, TTL-bound (300 seconds) credential linking a user’s approval decision to a specific intent and transaction hash. Fields: id, intentId, txRequestHash, issuedAt, ttlSeconds, consumed. Consumed on first use; replay is impossible.
ApprovalResult
Response from the approval flow: { approved: boolean, token?: ApprovalToken }. Returned by ApprovalService.requestApproval().
PolicyConfig
Configuration object (version "1") with 10 fields controlling transaction limits and security rules: maxValueWei, maxApprovalAmount, contractAllowlist, tokenAllowlist, allowedChains, recipientAllowlist, maxRiskScore, requireApprovalAbove, maxTxPerHour. Validated by AJV in strict mode.
PolicyDecision
Result of policy evaluation: { decision, reasons, policyVersion }. The decision field is one of "allow", "deny", or "require_approval".
PolicyEngine
Evaluates TxIntents against PolicyConfig rules. Returns a PolicyDecision. Enforces allowlists, value limits, chain restrictions, rate limits, and approval thresholds.
PreflightResult
Output of transaction simulation: simulationSuccess, revertReason, gasEstimate, balanceDiffs, allowanceChanges, riskScore, riskReasons, and warnings.
PreflightService
Simulates transactions via RPC (eth_call + eth_estimateGas), computes balance diffs and allowance changes, then delegates to the risk scorer. Accepts an optional rpcOverride for multi-chain routing.
Risk Score
Integer from 0 to 100 quantifying transaction risk. Computed from 7 weighted factors: contract not in allowlist (+40), token not in allowlist (+20), high slippage (+15), large value relative to limit (+20), unbounded approval (+25), simulation revert (+50), abnormal gas (+10). Capped at 100.
RiskContext
Input to the risk scorer containing boolean and numeric fields: contractInAllowlist, tokenInAllowlist, slippageBps, simulationReverted, gasEstimate, and optional approvalAmount, maxApprovalAmount, valueWei, maxValueWei.
Architecture Terms
Term
Definition
Adapter
Domain A component that bridges an external AI framework to ISCL Core via HTTP. Examples: adapter-openclaw (OpenClaw skills), adapter-mcp (Claude Desktop / Cursor), adapter-telegram (Telegram bot), plugin-eliza (ElizaOS).
AuditTraceService
Append-only audit log backed by SQLite (WAL mode). Records all fund-affecting operations correlated by intentId. Also provides rate-limiting counters.
Canonical Data Flow
The fixed pipeline every transaction follows: Agent Skill -> TxIntent -> /tx/build -> Preflight Simulation -> Approval Request -> User Confirmation -> WalletService.sign -> Broadcast -> Receipt -> AuditTrace.
ISCLClient
Shared HTTP client class used by all adapters to call ISCL Core API endpoints. Each adapter package contains its own copy at src/shared/iscl-client.ts.
Skill
A packaged unit of agent functionality with a signed manifest describing its permissions, sandbox constraints, and file hashes. Registered and managed through the Skill Registry.
SkillManifest
Signed package descriptor (version "1"): publisher (name, address, contact), permissions (allowed action types, chains, network/filesystem access), sandbox config (memory, timeout, spawn), files (paths + SHA-256 hashes), and an ECDSA signature.
Skill Registry
Service managing skill lifecycle: registration (with manifest validation, hash verification, and static scanning), listing, lookup, and revocation. Persisted to SQLite.
Static Scanner
Analyzes skill source code for dangerous patterns before registration. Detects: eval/Function usage, child_process imports, network access, filesystem writes, and obfuscation. Returns a ScanReport with passed status and ScanFinding[].
Crypto & Wallet Terms
Term
Definition
AllowanceChange
Record of an ERC-20 allowance modification detected during preflight: token, spender, before, after.
BalanceDiff
Projected balance change from a transaction: asset, delta, and optional usdValue, before, after.
EncryptedKey
JSON format for a stored private key: address, profile, cipher (aes-256-gcm), kdf (scrypt), kdfParams (n, r, p, salt), ciphertext, iv, authTag. Follows the Ethereum keystore standard.
EncryptedKeystore
Class managing encrypted key storage on disk. Supports key generation, import (raw hex or BIP-39 mnemonic), unlock/lock, and listing. Keys are encrypted with AES-256-GCM using a scrypt-derived key.
RpcClient
Interface for blockchain communication. Methods: readBalance, readNativeBalance, readAllowance, call, estimateGas, broadcastTx. Implemented by ViemRpcClient using the viem library.
RpcRouter
Multi-chain RPC dispatcher implementing the RpcClient interface. Routes calls to chain-specific RpcClient instances based on chainId. Built from ISCL_RPC_URL_{chainId} environment variables.
SignRequest
Input to WalletService.sign(): intentId, walletAddress, txRequest (EIP-1559), txRequestHash, policyDecision, and optional approvalToken.
SignedTransaction
Output of signing: signedTx (RLP-encoded hex) and txHash (keccak256 of the signed transaction).
WalletService
Signing pipeline in Domain B. Validates the approval token, unlocks the key from the keystore, signs the EIP-1559 transaction, and writes an audit log entry.
Infrastructure Terms
Term
Definition
AJV
JSON Schema validator. Used in strict mode with additionalProperties: false throughout the project for schema enforcement. CJS package requiring createRequire for ESM compatibility.
Anvil
Local EVM fork from the Foundry toolchain. Used for E2E testing to simulate blockchain state without real funds.
better-sqlite3
Synchronous SQLite library for Node.js. Backs the audit trail (AuditTraceService) and skill registry persistence. Uses WAL journal mode.
Fastify
HTTP framework for the ISCL Core API server. Configured with custom AJV for strict JSON Schema validation.
grammY
Telegram Bot framework used by @clavion/adapter-telegram. Provides middleware, session management, and inline keyboard support.
JCS
JSON Canonicalization Scheme (RFC 8785). Produces a deterministic byte-level representation of JSON for consistent hashing of manifests and intents. Used with keccak256.
pino
Structured JSON logger integrated with Fastify. Provides request-scoped logging with correlation IDs.
viem
TypeScript library for EVM interaction. Used for transaction building (EIP-1559 serialization), ABI encoding, RPC calls, and address derivation. Preferred over ethers.js.
API Terms
Term
Definition
Endpoint prefix
All API endpoints use the /v1/ prefix for versioning (e.g., /v1/tx/build, /v1/balance/:token/:account).
intentId
UUID v4 correlation identifier assigned to every TxIntent. Links all audit events, approval tokens, preflight results, and signed transactions for a single operation. Enables end-to-end traceability.
ISCLError
Client-side error class wrapping HTTP errors from ISCL Core. Contains status (HTTP status code) and body (parsed error response). Thrown by ISCLClient on non-2xx responses.
PendingApprovalStore
In-memory store (Map) for web-based approval flow. Holds deferred promises keyed by requestId. Entries expire after 300 seconds. Cleaned up on a 30-second interval.
PromptFn
Function type (summary: ApprovalSummary) => Promise<boolean> used by ApprovalService. Configurable per approval mode: CLI (readline), web (deferred via PendingApprovalStore), or custom (tests).
txRequestHash
keccak256 hash of the serialized EIP-1559 transaction. Binds approval tokens to a specific transaction, preventing token reuse across different transactions.
Multi-Chain Terms
Term
Definition
Allowed Chains
List of supported EVM chain IDs in PolicyConfig.allowedChains. Default: Ethereum (1), Optimism (10), Arbitrum (42161), Base (8453).
ChainObject
TxIntent field specifying the target blockchain: { type: "evm", chainId: number, rpcHint?: string }.
parseRpcEnv
Utility function that reads ISCL_RPC_URL_{chainId} environment variables and constructs an RpcRouter. Also supports BASE_RPC_URL as a fallback for chain 8453.
resolveRpc
Helper that selects the correct RpcClient for a given chainId: extracts a chain-specific client from an RpcRouter, or returns a plain RpcClient as-is.
DEX Aggregator Terms
Term
Definition
1inch Integration
Optional DEX aggregation via the 1inch Swap API v6. Enabled by setting the ONEINCH_API_KEY environment variable. Falls back to Uniswap V3 on failure or when the API key is absent.
AggregationRouterV6
The 1inch router contract at address 0x111111125421cA6dc452d289314280a0f8842A65. Same address on all four supported chains.
maxSlippageBps
Maximum acceptable slippage in basis points (1 bps = 0.01%). Defined in TxIntent.constraints. Converted to a percentage string for the 1inch API (bps / 100).
OneInchClient
HTTP client for the 1inch Swap API v6. Uses Node built-in fetch with AbortController for timeouts. Zero additional npm dependencies.
provider
Optional field on swap actions: "uniswap_v3" (default) or "1inch". Controls which DEX aggregator builds the swap transaction.
Sandbox Terms
Term
Definition
SandboxConfig
Container configuration for skill execution: image, networkMode (none or allowlist), allowedHosts, readOnlyRootfs, memoryLimitMb, cpuQuota, timeoutMs, noSpawn, env.
SandboxRunner
Domain C executor that runs skill code in isolated Docker containers. Enforces memory limits, CPU quotas, network restrictions, and read-only filesystems.
SkillInput
Data passed into a sandboxed skill execution: skillName, manifest, and apiUrl (ISCL Core endpoint for the skill to call).
SkillOutput
Result of a sandboxed skill execution: success, exitCode, stdout, stderr, durationMs.
CLI Terms
Term
Definition
clavion-cli
Command-line tool for key management. Subcommands: key import (raw hex from stdin), key import-mnemonic (BIP-39 phrase from stdin), key generate (random key), key list (show addresses).
MnemonicImportOptions
Options for BIP-39 mnemonic import: accountIndex and addressIndex for HD path derivation (m/44'/60'/{account}'/0/{address}).
Audit & Observability Terms
Term
Definition
AuditEvent
Single audit log entry: id (UUID), timestamp, intentId, event (string tag), data (arbitrary JSON). Stored in SQLite and queryable by intentId or recency.
Audit Trail
The ordered sequence of AuditEvent records for a given intentId. Provides a complete, tamper-evident record of every step in the transaction lifecycle.
Rate Limiting
Per-wallet transaction throttling enforced by PolicyEngine using counters in AuditTraceService. Configured via PolicyConfig.maxTxPerHour. Events are recorded in a separate rate_limit_events SQLite table.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Clavion","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/clavion/dC7pLWXbbz7RBPkK/logo/light.svg?fit=max\u0026auto=format\u0026n=dC7pLWXbbz7RBPkK\u0026q=85\u0026s=1ad4e5ef77eeb353a49529884ed0fe1a","dark":"https://mintcdn.com/clavion/dC7pLWXbbz7RBPkK/logo/dark.svg?fit=max\u0026auto=format\u0026n=dC7pLWXbbz7RBPkK\u0026q=85\u0026s=ad6a6d27717daf6cfed42393fb32e8ba"},"favicon":"/favicon.svg","styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"clavion","hasAudioNarration":false,"actualSubdomain":"clavion","customDomains":["docs.clavion.xyz"],"gitSource":{"type":"github","owner":"clavion-xyz","repo":"clavion","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21eb78cda3c76cdad8736a","collectionId":"ff53c456-17d0-4705-a4a6-3f0992b81bf5","schemaVersion":"v2"},"entitlements":{},"buildId":"6a21eb78cda3c76cdad8736a:success","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"Concepts","count":10},{"language":"default","tag":"Walkthroughs","count":9},{"language":"default","tag":"Reference","count":8},{"language":"default","tag":"API \u0026 Schemas","count":8},{"language":"default","tag":"Start","count":7},{"language":"default","tag":"Getting Started","count":7},{"language":"default","tag":"Architecture","count":6},{"language":"default","tag":"Operations","count":6},{"language":"default","tag":"Running in Production","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"concepts/glossary","slug":"/concepts/glossary","pageMetadata":{"title":"Glossary","description":"Key terms and definitions used throughout Clavion","icon":"book","href":"/concepts/glossary","hidden":false},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Key terms and definitions used throughout Clavion\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Key terms and concepts used throughout the ISCL/Clavion project, grouped by category and alphabetized within each section.`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Core Concepts`,id:`core-concepts`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`BuildPlan`})}),_jsxs(_components.td,{children:[`Concrete EIP-1559 transaction built from a TxIntent by Domain B. Contains the serialized `,_jsx(_components.code,{children:`txRequest`}),`, its `,_jsx(_components.code,{children:`txRequestHash`}),` (keccak256), and a human-readable `,_jsx(_components.code,{children:`description`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Clavion`})}),_jsxs(_components.td,{children:[`Project name for the ISCL implementation. Used as the npm scope (`,_jsx(_components.code,{children:`@clavion/*`}),`) and CLI prefix (`,_jsx(_components.code,{children:`clavion-cli`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Domain A (Untrusted)`})}),_jsxs(_components.td,{children:[`Agent frameworks and skills. Adapters (`,_jsx(_components.code,{children:`adapter-openclaw`}),`, `,_jsx(_components.code,{children:`adapter-mcp`}),`, `,_jsx(_components.code,{children:`plugin-eliza`}),`, `,_jsx(_components.code,{children:`adapter-telegram`}),`) live here. Cannot access private keys, sign transactions, or call blockchain RPCs directly.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Domain B (Trusted)`})}),_jsxs(_components.td,{children:[`ISCL Core and its supporting packages (`,_jsx(_components.code,{children:`core`}),`, `,_jsx(_components.code,{children:`signer`}),`, `,_jsx(_components.code,{children:`audit`}),`, `,_jsx(_components.code,{children:`policy`}),`, `,_jsx(_components.code,{children:`preflight`}),`, `,_jsx(_components.code,{children:`registry`}),`). The only domain with key material, signing capability, and direct blockchain RPC access.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Domain C (Limited Trust)`})}),_jsxs(_components.td,{children:[`Secure Executor (`,_jsx(_components.code,{children:`sandbox`}),`). Runs untrusted skill code in Docker containers with no key access. Communicates with Domain B only via the ISCL Core HTTP API.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`ISCL`})}),_jsx(_components.td,{children:`Independent Secure Crypto Layer. A local secure runtime that enables AI agents to safely perform crypto operations (signing, swaps, approvals, transfers) while isolating private keys from untrusted agent code.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Trust Domain`})}),_jsx(_components.td,{children:`One of three isolation zones (A, B, C) with distinct trust levels and capabilities. Every line of code belongs to exactly one domain.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TxIntent`})}),_jsxs(_components.td,{children:[`Declarative JSON document (version `,_jsx(_components.code,{children:`\"1\"`}),`) describing a desired blockchain operation. Contains `,_jsx(_components.code,{children:`chain`}),`, `,_jsx(_components.code,{children:`wallet`}),`, `,_jsx(_components.code,{children:`action`}),`, `,_jsx(_components.code,{children:`constraints`}),`, and optional `,_jsx(_components.code,{children:`preferences`}),`/`,_jsx(_components.code,{children:`metadata`}),`. Supports 5 action types. Never contains raw calldata or ABI-encoded data.`]})]})]})]})}),_jsx(Accordion,{title:`Action Types`,id:`action-types`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`approve`})}),_jsxs(_components.td,{children:[`ERC-20 spending allowance approval. Sets the allowance for a `,_jsx(_components.code,{children:`spender`}),` contract to spend up to `,_jsx(_components.code,{children:`amount`}),` of the specified `,_jsx(_components.code,{children:`asset`}),` on behalf of the wallet.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`swap_exact_in`})}),_jsxs(_components.td,{children:[`DEX swap specifying an exact input amount (`,_jsx(_components.code,{children:`amountIn`}),`) with a minimum acceptable output (`,_jsx(_components.code,{children:`minAmountOut`}),`). Supports `,_jsx(_components.code,{children:`uniswap_v3`}),` (default) and `,_jsx(_components.code,{children:`1inch`}),` providers.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`swap_exact_out`})}),_jsxs(_components.td,{children:[`DEX swap specifying an exact desired output amount (`,_jsx(_components.code,{children:`amountOut`}),`) with a maximum input (`,_jsx(_components.code,{children:`maxAmountIn`}),`). Always uses Uniswap V3 (1inch does not support exact-output swaps).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`transfer`})}),_jsxs(_components.td,{children:[`ERC-20 token transfer. Sends `,_jsx(_components.code,{children:`amount`}),` of an ERC-20 `,_jsx(_components.code,{children:`asset`}),` to a recipient address (`,_jsx(_components.code,{children:`to`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`transfer_native`})}),_jsxs(_components.td,{children:[`Native currency transfer (ETH on Ethereum, or the chain’s native token). Sends `,_jsx(_components.code,{children:`amount`}),` wei to a recipient address (`,_jsx(_components.code,{children:`to`}),`). No `,_jsx(_components.code,{children:`asset`}),` field required.`]})]})]})]})}),_jsx(Accordion,{title:`Security Terms`,id:`security-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Approval Summary`})}),_jsxs(_components.td,{children:[`Human-readable summary of a pending transaction presented to the user for approval. Includes `,_jsx(_components.code,{children:`action`}),`, `,_jsx(_components.code,{children:`expectedOutcome`}),`, `,_jsx(_components.code,{children:`balanceDiffs`}),`, `,_jsx(_components.code,{children:`riskScore`}),`, `,_jsx(_components.code,{children:`riskReasons`}),`, `,_jsx(_components.code,{children:`warnings`}),`, and `,_jsx(_components.code,{children:`gasEstimateEth`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Approval Token`})}),_jsxs(_components.td,{children:[`Single-use, TTL-bound (300 seconds) credential linking a user’s approval decision to a specific intent and transaction hash. Fields: `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`intentId`}),`, `,_jsx(_components.code,{children:`txRequestHash`}),`, `,_jsx(_components.code,{children:`issuedAt`}),`, `,_jsx(_components.code,{children:`ttlSeconds`}),`, `,_jsx(_components.code,{children:`consumed`}),`. Consumed on first use; replay is impossible.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`ApprovalResult`})}),_jsxs(_components.td,{children:[`Response from the approval flow: `,_jsx(_components.code,{children:`{ approved: boolean, token?: ApprovalToken }`}),`. Returned by `,_jsx(_components.code,{children:`ApprovalService.requestApproval()`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PolicyConfig`})}),_jsxs(_components.td,{children:[`Configuration object (version `,_jsx(_components.code,{children:`\"1\"`}),`) with 10 fields controlling transaction limits and security rules: `,_jsx(_components.code,{children:`maxValueWei`}),`, `,_jsx(_components.code,{children:`maxApprovalAmount`}),`, `,_jsx(_components.code,{children:`contractAllowlist`}),`, `,_jsx(_components.code,{children:`tokenAllowlist`}),`, `,_jsx(_components.code,{children:`allowedChains`}),`, `,_jsx(_components.code,{children:`recipientAllowlist`}),`, `,_jsx(_components.code,{children:`maxRiskScore`}),`, `,_jsx(_components.code,{children:`requireApprovalAbove`}),`, `,_jsx(_components.code,{children:`maxTxPerHour`}),`. Validated by AJV in strict mode.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PolicyDecision`})}),_jsxs(_components.td,{children:[`Result of policy evaluation: `,_jsx(_components.code,{children:`{ decision, reasons, policyVersion }`}),`. The `,_jsx(_components.code,{children:`decision`}),` field is one of `,_jsx(_components.code,{children:`\"allow\"`}),`, `,_jsx(_components.code,{children:`\"deny\"`}),`, or `,_jsx(_components.code,{children:`\"require_approval\"`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PolicyEngine`})}),_jsxs(_components.td,{children:[`Evaluates TxIntents against PolicyConfig rules. Returns a `,_jsx(_components.code,{children:`PolicyDecision`}),`. Enforces allowlists, value limits, chain restrictions, rate limits, and approval thresholds.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PreflightResult`})}),_jsxs(_components.td,{children:[`Output of transaction simulation: `,_jsx(_components.code,{children:`simulationSuccess`}),`, `,_jsx(_components.code,{children:`revertReason`}),`, `,_jsx(_components.code,{children:`gasEstimate`}),`, `,_jsx(_components.code,{children:`balanceDiffs`}),`, `,_jsx(_components.code,{children:`allowanceChanges`}),`, `,_jsx(_components.code,{children:`riskScore`}),`, `,_jsx(_components.code,{children:`riskReasons`}),`, and `,_jsx(_components.code,{children:`warnings`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PreflightService`})}),_jsxs(_components.td,{children:[`Simulates transactions via RPC (`,_jsx(_components.code,{children:`eth_call`}),` + `,_jsx(_components.code,{children:`eth_estimateGas`}),`), computes balance diffs and allowance changes, then delegates to the risk scorer. Accepts an optional `,_jsx(_components.code,{children:`rpcOverride`}),` for multi-chain routing.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Risk Score`})}),_jsx(_components.td,{children:`Integer from 0 to 100 quantifying transaction risk. Computed from 7 weighted factors: contract not in allowlist (+40), token not in allowlist (+20), high slippage (+15), large value relative to limit (+20), unbounded approval (+25), simulation revert (+50), abnormal gas (+10). Capped at 100.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`RiskContext`})}),_jsxs(_components.td,{children:[`Input to the risk scorer containing boolean and numeric fields: `,_jsx(_components.code,{children:`contractInAllowlist`}),`, `,_jsx(_components.code,{children:`tokenInAllowlist`}),`, `,_jsx(_components.code,{children:`slippageBps`}),`, `,_jsx(_components.code,{children:`simulationReverted`}),`, `,_jsx(_components.code,{children:`gasEstimate`}),`, and optional `,_jsx(_components.code,{children:`approvalAmount`}),`, `,_jsx(_components.code,{children:`maxApprovalAmount`}),`, `,_jsx(_components.code,{children:`valueWei`}),`, `,_jsx(_components.code,{children:`maxValueWei`}),`.`]})]})]})]})}),_jsx(Accordion,{title:`Architecture Terms`,id:`architecture-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Adapter`})}),_jsxs(_components.td,{children:[`Domain A component that bridges an external AI framework to ISCL Core via HTTP. Examples: `,_jsx(_components.code,{children:`adapter-openclaw`}),` (OpenClaw skills), `,_jsx(_components.code,{children:`adapter-mcp`}),` (Claude Desktop / Cursor), `,_jsx(_components.code,{children:`adapter-telegram`}),` (Telegram bot), `,_jsx(_components.code,{children:`plugin-eliza`}),` (ElizaOS).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AuditTraceService`})}),_jsxs(_components.td,{children:[`Append-only audit log backed by SQLite (WAL mode). Records all fund-affecting operations correlated by `,_jsx(_components.code,{children:`intentId`}),`. Also provides rate-limiting counters.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Canonical Data Flow`})}),_jsxs(_components.td,{children:[`The fixed pipeline every transaction follows: Agent Skill -> TxIntent -> `,_jsx(_components.code,{children:`/tx/build`}),` -> Preflight Simulation -> Approval Request -> User Confirmation -> `,_jsx(_components.code,{children:`WalletService.sign`}),` -> Broadcast -> Receipt -> AuditTrace.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`ISCLClient`})}),_jsxs(_components.td,{children:[`Shared HTTP client class used by all adapters to call ISCL Core API endpoints. Each adapter package contains its own copy at `,_jsx(_components.code,{children:`src/shared/iscl-client.ts`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Skill`})}),_jsx(_components.td,{children:`A packaged unit of agent functionality with a signed manifest describing its permissions, sandbox constraints, and file hashes. Registered and managed through the Skill Registry.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SkillManifest`})}),_jsxs(_components.td,{children:[`Signed package descriptor (version `,_jsx(_components.code,{children:`\"1\"`}),`): `,_jsx(_components.code,{children:`publisher`}),` (name, address, contact), `,_jsx(_components.code,{children:`permissions`}),` (allowed action types, chains, network/filesystem access), `,_jsx(_components.code,{children:`sandbox`}),` config (memory, timeout, spawn), `,_jsx(_components.code,{children:`files`}),` (paths + SHA-256 hashes), and an ECDSA `,_jsx(_components.code,{children:`signature`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Skill Registry`})}),_jsx(_components.td,{children:`Service managing skill lifecycle: registration (with manifest validation, hash verification, and static scanning), listing, lookup, and revocation. Persisted to SQLite.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Static Scanner`})}),_jsxs(_components.td,{children:[`Analyzes skill source code for dangerous patterns before registration. Detects: `,_jsx(_components.code,{children:`eval`}),`/`,_jsx(_components.code,{children:`Function`}),` usage, `,_jsx(_components.code,{children:`child_process`}),` imports, network access, filesystem writes, and obfuscation. Returns a `,_jsx(_components.code,{children:`ScanReport`}),` with `,_jsx(_components.code,{children:`passed`}),` status and `,_jsx(_components.code,{children:`ScanFinding[]`}),`.`]})]})]})]})}),_jsx(Accordion,{title:`Crypto \u0026 Wallet Terms`,id:`crypto-and-wallet-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AllowanceChange`})}),_jsxs(_components.td,{children:[`Record of an ERC-20 allowance modification detected during preflight: `,_jsx(_components.code,{children:`token`}),`, `,_jsx(_components.code,{children:`spender`}),`, `,_jsx(_components.code,{children:`before`}),`, `,_jsx(_components.code,{children:`after`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`BalanceDiff`})}),_jsxs(_components.td,{children:[`Projected balance change from a transaction: `,_jsx(_components.code,{children:`asset`}),`, `,_jsx(_components.code,{children:`delta`}),`, and optional `,_jsx(_components.code,{children:`usdValue`}),`, `,_jsx(_components.code,{children:`before`}),`, `,_jsx(_components.code,{children:`after`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`EncryptedKey`})}),_jsxs(_components.td,{children:[`JSON format for a stored private key: `,_jsx(_components.code,{children:`address`}),`, `,_jsx(_components.code,{children:`profile`}),`, `,_jsx(_components.code,{children:`cipher`}),` (`,_jsx(_components.code,{children:`aes-256-gcm`}),`), `,_jsx(_components.code,{children:`kdf`}),` (`,_jsx(_components.code,{children:`scrypt`}),`), `,_jsx(_components.code,{children:`kdfParams`}),` (n, r, p, salt), `,_jsx(_components.code,{children:`ciphertext`}),`, `,_jsx(_components.code,{children:`iv`}),`, `,_jsx(_components.code,{children:`authTag`}),`. Follows the Ethereum keystore standard.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`EncryptedKeystore`})}),_jsx(_components.td,{children:`Class managing encrypted key storage on disk. Supports key generation, import (raw hex or BIP-39 mnemonic), unlock/lock, and listing. Keys are encrypted with AES-256-GCM using a scrypt-derived key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`RpcClient`})}),_jsxs(_components.td,{children:[`Interface for blockchain communication. Methods: `,_jsx(_components.code,{children:`readBalance`}),`, `,_jsx(_components.code,{children:`readNativeBalance`}),`, `,_jsx(_components.code,{children:`readAllowance`}),`, `,_jsx(_components.code,{children:`call`}),`, `,_jsx(_components.code,{children:`estimateGas`}),`, `,_jsx(_components.code,{children:`broadcastTx`}),`. Implemented by `,_jsx(_components.code,{children:`ViemRpcClient`}),` using the viem library.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`RpcRouter`})}),_jsxs(_components.td,{children:[`Multi-chain RPC dispatcher implementing the `,_jsx(_components.code,{children:`RpcClient`}),` interface. Routes calls to chain-specific `,_jsx(_components.code,{children:`RpcClient`}),` instances based on `,_jsx(_components.code,{children:`chainId`}),`. Built from `,_jsx(_components.code,{children:`ISCL_RPC_URL_{chainId}`}),` environment variables.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SignRequest`})}),_jsxs(_components.td,{children:[`Input to `,_jsx(_components.code,{children:`WalletService.sign()`}),`: `,_jsx(_components.code,{children:`intentId`}),`, `,_jsx(_components.code,{children:`walletAddress`}),`, `,_jsx(_components.code,{children:`txRequest`}),` (EIP-1559), `,_jsx(_components.code,{children:`txRequestHash`}),`, `,_jsx(_components.code,{children:`policyDecision`}),`, and optional `,_jsx(_components.code,{children:`approvalToken`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SignedTransaction`})}),_jsxs(_components.td,{children:[`Output of signing: `,_jsx(_components.code,{children:`signedTx`}),` (RLP-encoded hex) and `,_jsx(_components.code,{children:`txHash`}),` (keccak256 of the signed transaction).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`WalletService`})}),_jsx(_components.td,{children:`Signing pipeline in Domain B. Validates the approval token, unlocks the key from the keystore, signs the EIP-1559 transaction, and writes an audit log entry.`})]})]})]})}),_jsx(Accordion,{title:`Infrastructure Terms`,id:`infrastructure-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AJV`})}),_jsxs(_components.td,{children:[`JSON Schema validator. Used in strict mode with `,_jsx(_components.code,{children:`additionalProperties: false`}),` throughout the project for schema enforcement. CJS package requiring `,_jsx(_components.code,{children:`createRequire`}),` for ESM compatibility.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Anvil`})}),_jsx(_components.td,{children:`Local EVM fork from the Foundry toolchain. Used for E2E testing to simulate blockchain state without real funds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`better-sqlite3`})}),_jsxs(_components.td,{children:[`Synchronous SQLite library for Node.js. Backs the audit trail (`,_jsx(_components.code,{children:`AuditTraceService`}),`) and skill registry persistence. Uses WAL journal mode.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Fastify`})}),_jsx(_components.td,{children:`HTTP framework for the ISCL Core API server. Configured with custom AJV for strict JSON Schema validation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`grammY`})}),_jsxs(_components.td,{children:[`Telegram Bot framework used by `,_jsx(_components.code,{children:`@clavion/adapter-telegram`}),`. Provides middleware, session management, and inline keyboard support.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`JCS`})}),_jsx(_components.td,{children:`JSON Canonicalization Scheme (RFC 8785). Produces a deterministic byte-level representation of JSON for consistent hashing of manifests and intents. Used with keccak256.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`pino`})}),_jsx(_components.td,{children:`Structured JSON logger integrated with Fastify. Provides request-scoped logging with correlation IDs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`viem`})}),_jsx(_components.td,{children:`TypeScript library for EVM interaction. Used for transaction building (EIP-1559 serialization), ABI encoding, RPC calls, and address derivation. Preferred over ethers.js.`})]})]})]})}),_jsx(Accordion,{title:`API Terms`,id:`api-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Endpoint prefix`})}),_jsxs(_components.td,{children:[`All API endpoints use the `,_jsx(_components.code,{children:`/v1/`}),` prefix for versioning (e.g., `,_jsx(_components.code,{children:`/v1/tx/build`}),`, `,_jsx(_components.code,{children:`/v1/balance/:token/:account`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`intentId`})}),_jsx(_components.td,{children:`UUID v4 correlation identifier assigned to every TxIntent. Links all audit events, approval tokens, preflight results, and signed transactions for a single operation. Enables end-to-end traceability.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`ISCLError`})}),_jsxs(_components.td,{children:[`Client-side error class wrapping HTTP errors from ISCL Core. Contains `,_jsx(_components.code,{children:`status`}),` (HTTP status code) and `,_jsx(_components.code,{children:`body`}),` (parsed error response). Thrown by `,_jsx(_components.code,{children:`ISCLClient`}),` on non-2xx responses.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PendingApprovalStore`})}),_jsxs(_components.td,{children:[`In-memory store (`,_jsx(_components.code,{children:`Map`}),`) for web-based approval flow. Holds deferred promises keyed by `,_jsx(_components.code,{children:`requestId`}),`. Entries expire after 300 seconds. Cleaned up on a 30-second interval.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PromptFn`})}),_jsxs(_components.td,{children:[`Function type `,_jsx(_components.code,{children:`(summary: ApprovalSummary) => Promise\u0026lt;boolean\u0026gt;`}),` used by `,_jsx(_components.code,{children:`ApprovalService`}),`. Configurable per approval mode: CLI (readline), web (deferred via `,_jsx(_components.code,{children:`PendingApprovalStore`}),`), or custom (tests).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`txRequestHash`})}),_jsx(_components.td,{children:`keccak256 hash of the serialized EIP-1559 transaction. Binds approval tokens to a specific transaction, preventing token reuse across different transactions.`})]})]})]})}),_jsx(Accordion,{title:`Multi-Chain Terms`,id:`multi-chain-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Allowed Chains`})}),_jsxs(_components.td,{children:[`List of supported EVM chain IDs in `,_jsx(_components.code,{children:`PolicyConfig.allowedChains`}),`. Default: Ethereum (1), Optimism (10), Arbitrum (42161), Base (8453).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`ChainObject`})}),_jsxs(_components.td,{children:[`TxIntent field specifying the target blockchain: `,_jsx(_components.code,{children:`{ type: \"evm\", chainId: number, rpcHint?: string }`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`parseRpcEnv`})}),_jsxs(_components.td,{children:[`Utility function that reads `,_jsx(_components.code,{children:`ISCL_RPC_URL_{chainId}`}),` environment variables and constructs an `,_jsx(_components.code,{children:`RpcRouter`}),`. Also supports `,_jsx(_components.code,{children:`BASE_RPC_URL`}),` as a fallback for chain 8453.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`resolveRpc`})}),_jsxs(_components.td,{children:[`Helper that selects the correct `,_jsx(_components.code,{children:`RpcClient`}),` for a given `,_jsx(_components.code,{children:`chainId`}),`: extracts a chain-specific client from an `,_jsx(_components.code,{children:`RpcRouter`}),`, or returns a plain `,_jsx(_components.code,{children:`RpcClient`}),` as-is.`]})]})]})]})}),_jsx(Accordion,{title:`DEX Aggregator Terms`,id:`dex-aggregator-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`1inch Integration`})}),_jsxs(_components.td,{children:[`Optional DEX aggregation via the 1inch Swap API v6. Enabled by setting the `,_jsx(_components.code,{children:`ONEINCH_API_KEY`}),` environment variable. Falls back to Uniswap V3 on failure or when the API key is absent.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AggregationRouterV6`})}),_jsxs(_components.td,{children:[`The 1inch router contract at address `,_jsx(_components.code,{children:`0x111111125421cA6dc452d289314280a0f8842A65`}),`. Same address on all four supported chains.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`maxSlippageBps`})}),_jsxs(_components.td,{children:[`Maximum acceptable slippage in basis points (1 bps = 0.01%). Defined in `,_jsx(_components.code,{children:`TxIntent.constraints`}),`. Converted to a percentage string for the 1inch API (`,_jsx(_components.code,{children:`bps / 100`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`OneInchClient`})}),_jsxs(_components.td,{children:[`HTTP client for the 1inch Swap API v6. Uses Node built-in `,_jsx(_components.code,{children:`fetch`}),` with `,_jsx(_components.code,{children:`AbortController`}),` for timeouts. Zero additional npm dependencies.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`provider`})}),_jsxs(_components.td,{children:[`Optional field on swap actions: `,_jsx(_components.code,{children:`\"uniswap_v3\"`}),` (default) or `,_jsx(_components.code,{children:`\"1inch\"`}),`. Controls which DEX aggregator builds the swap transaction.`]})]})]})]})}),_jsx(Accordion,{title:`Sandbox Terms`,id:`sandbox-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SandboxConfig`})}),_jsxs(_components.td,{children:[`Container configuration for skill execution: `,_jsx(_components.code,{children:`image`}),`, `,_jsx(_components.code,{children:`networkMode`}),` (`,_jsx(_components.code,{children:`none`}),` or `,_jsx(_components.code,{children:`allowlist`}),`), `,_jsx(_components.code,{children:`allowedHosts`}),`, `,_jsx(_components.code,{children:`readOnlyRootfs`}),`, `,_jsx(_components.code,{children:`memoryLimitMb`}),`, `,_jsx(_components.code,{children:`cpuQuota`}),`, `,_jsx(_components.code,{children:`timeoutMs`}),`, `,_jsx(_components.code,{children:`noSpawn`}),`, `,_jsx(_components.code,{children:`env`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SandboxRunner`})}),_jsx(_components.td,{children:`Domain C executor that runs skill code in isolated Docker containers. Enforces memory limits, CPU quotas, network restrictions, and read-only filesystems.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SkillInput`})}),_jsxs(_components.td,{children:[`Data passed into a sandboxed skill execution: `,_jsx(_components.code,{children:`skillName`}),`, `,_jsx(_components.code,{children:`manifest`}),`, and `,_jsx(_components.code,{children:`apiUrl`}),` (ISCL Core endpoint for the skill to call).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SkillOutput`})}),_jsxs(_components.td,{children:[`Result of a sandboxed skill execution: `,_jsx(_components.code,{children:`success`}),`, `,_jsx(_components.code,{children:`exitCode`}),`, `,_jsx(_components.code,{children:`stdout`}),`, `,_jsx(_components.code,{children:`stderr`}),`, `,_jsx(_components.code,{children:`durationMs`}),`.`]})]})]})]})}),_jsx(Accordion,{title:`CLI Terms`,id:`cli-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`clavion-cli`})}),_jsxs(_components.td,{children:[`Command-line tool for key management. Subcommands: `,_jsx(_components.code,{children:`key import`}),` (raw hex from stdin), `,_jsx(_components.code,{children:`key import-mnemonic`}),` (BIP-39 phrase from stdin), `,_jsx(_components.code,{children:`key generate`}),` (random key), `,_jsx(_components.code,{children:`key list`}),` (show addresses).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`MnemonicImportOptions`})}),_jsxs(_components.td,{children:[`Options for BIP-39 mnemonic import: `,_jsx(_components.code,{children:`accountIndex`}),` and `,_jsx(_components.code,{children:`addressIndex`}),` for HD path derivation (`,_jsx(_components.code,{children:`m/44'/60'/{account}'/0/{address}`}),`).`]})]})]})]})}),_jsx(Accordion,{title:`Audit \u0026 Observability Terms`,id:`audit-and-observability-terms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Definition`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AuditEvent`})}),_jsxs(_components.td,{children:[`Single audit log entry: `,_jsx(_components.code,{children:`id`}),` (UUID), `,_jsx(_components.code,{children:`timestamp`}),`, `,_jsx(_components.code,{children:`intentId`}),`, `,_jsx(_components.code,{children:`event`}),` (string tag), `,_jsx(_components.code,{children:`data`}),` (arbitrary JSON). Stored in SQLite and queryable by `,_jsx(_components.code,{children:`intentId`}),` or recency.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Audit Trail`})}),_jsxs(_components.td,{children:[`The ordered sequence of `,_jsx(_components.code,{children:`AuditEvent`}),` records for a given `,_jsx(_components.code,{children:`intentId`}),`. Provides a complete, tamper-evident record of every step in the transaction lifecycle.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Rate Limiting`})}),_jsxs(_components.td,{children:[`Per-wallet transaction throttling enforced by `,_jsx(_components.code,{children:`PolicyEngine`}),` using counters in `,_jsx(_components.code,{children:`AuditTraceService`}),`. Configured via `,_jsx(_components.code,{children:`PolicyConfig.maxTxPerHour`}),`. Events are recorded in a separate `,_jsx(_components.code,{children:`rate_limit_events`}),` SQLite table.`]})]})]})]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Glossary","description":"Key terms and definitions used throughout Clavion","icon":"book","href":"/concepts/glossary","hidden":false}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"clavion","siteName":"Clavion","title":"Glossary - Clavion","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-02-14T00:42:34.184Z","originalFileLocation":"concepts/glossary.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Key terms and definitions used throughout Clavion\">\u003cmeta data-mint-head name=\"application-name\" content=\"Clavion\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Glossary - Clavion\">\u003cmeta data-mint-head property=\"og:description\" content=\"Key terms and definitions used throughout Clavion\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Clavion\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.clavion.xyz/concepts/glossary\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://clavion.mintlify.app/_mintlify/api/og/v2?division=Security+%26+Design\u0026amp;title=Glossary\u0026amp;description=Key+terms+and+definitions+used+throughout+Clavion\u0026amp;theme=642321627952714247391c91\u0026amp;signature=507a0824bc3ba331251ffc2e2b9aaf4912d54ada7fd898526eca1ba84937076f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Glossary - Clavion\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Key terms and definitions used throughout Clavion\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://clavion.mintlify.app/_mintlify/api/og/v2?division=Security+%26+Design\u0026amp;title=Glossary\u0026amp;description=Key+terms+and+definitions+used+throughout+Clavion\u0026amp;theme=642321627952714247391c91\u0026amp;signature=507a0824bc3ba331251ffc2e2b9aaf4912d54ada7fd898526eca1ba84937076f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/clavion/FidyKsJofdgcq_JY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Clavion\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.clavion.xyz/concepts/glossary\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/glossary.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.clavion.xyz/#organization\",\"name\":\"Clavion\",\"url\":\"https://docs.clavion.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/clavion/dC7pLWXbbz7RBPkK/logo/light.svg?fit=max\u0026auto=format\u0026n=dC7pLWXbbz7RBPkK\u0026q=85\u0026s=1ad4e5ef77eeb353a49529884ed0fe1a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.clavion.xyz#website\",\"name\":\"Clavion\",\"url\":\"https://docs.clavion.xyz\",\"publisher\":{\"@id\":\"https://docs.clavion.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.clavion.xyz/concepts/glossary#webpage\",\"url\":\"https://docs.clavion.xyz/concepts/glossary\",\"name\":\"Glossary\",\"description\":\"Key terms and definitions used throughout Clavion\",\"dateModified\":\"2026-02-14T00:42:34.184Z\",\"isPartOf\":{\"@id\":\"https://docs.clavion.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://docs.clavion.xyz/concepts/glossary#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.clavion.xyz/concepts/glossary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Security \u0026 Design\",\"item\":\"https://docs.clavion.xyz/concepts/risk-scoring\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Glossary\",\"item\":\"https://docs.clavion.xyz/concepts/glossary\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.clavion.xyz/concepts/glossary#article\",\"headline\":\"Glossary\",\"name\":\"Glossary\",\"description\":\"Key terms and definitions used throughout Clavion\",\"url\":\"https://docs.clavion.xyz/concepts/glossary\",\"mainEntityOfPage\":{\"@id\":\"https://docs.clavion.xyz/concepts/glossary#webpage\"},\"dateModified\":\"2026-02-14T00:42:34.184Z\",\"publisher\":{\"@id\":\"https://docs.clavion.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.clavion.xyz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Clavion\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Clavion","nav":{"global":null,"tabs":[{"tab":"Start","pages":[{"title":"Start","href":"/start"}]},{"tab":"Concepts","groups":[{"group":"Architecture","pages":[{"title":"Core Concepts","href":"/concepts"},{"title":"Architecture","href":"/concepts/architecture"},{"title":"Trust Domains","href":"/concepts/trust-domains"},{"title":"Transaction Lifecycle","href":"/concepts/transaction-lifecycle"},{"title":"Policy Engine","href":"/concepts/policy-engine"},{"title":"Approval Model","href":"/concepts/approval-model"}]},{"group":"Security \u0026 Design","pages":[{"title":"Risk Scoring","icon":"gauge","href":"/concepts/risk-scoring"},{"title":"Threat Analysis","icon":"shield-halved","href":"/concepts/threat-analysis"},{"title":"Architecture Decision Records","description":"Key architectural decisions and their rationale","icon":"file-lines","href":"/concepts/adrs"},{"title":"Glossary","icon":"book","href":"/concepts/glossary"}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"Operations","pages":[{"title":"Operations","href":"/operations"}]}]},"title":"Glossary - Clavion","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}