Check what an install can do with your keys and funds
onchain_agent_check_installUSE WHEN you are about to install a crypto package, MCP server or skill and want to know what it can do with your keys and funds: before npm/pnpm/yarn/bun add, npx -y, pip install, uvx or claude mcp add, or before pasting an {"mcpServers": …} config.
NOT FOR a token, repo, endpoint or agent you were handed (use onchain_agent_preflight instead), install steps for a stack pick (use onchain_agent_get_deploy_spec), or an agent skill's disclosure (use onchain_agent_search_skills).
RETURNS a Sato Check custody summary for every target in the command or config you pass, answering four questions: does it take your key, does your key leave, can it move funds on its own, what changed.
Each answer rests on evidence of one class — declared (the project says so), traced (our static read of the published artifact) or observed (a sandbox run with planted test keys). A stored profile answers first; an unstored target is read live within a bounded budget. Targets that could not be profiled are listed in unresolved with the reason. has_observed_key_egress is true only when a planted test key was seen leaving — the one fact to stop on.
RULE ENFORCED: a profile describes what was read and run, with dates. It is not a safety rating, an audit or an endorsement; "unknown" means we could not look, and "none found" is not "not there". Local signing is what a wallet does.
RETURNS (json): { schema: "sato.custody/v1", subjects: [{ subject, summary: { key_access, key_egress, fund_action_count, notable, version, as_of, check_url }, answers: { key_access, key_egress, fund_actions, changes }, solana_receipt }], unresolved: [{ input, reason }], has_observed_key_egress }. solana_receipt is where that version's reading is recorded on Solana ({ attestation_address, explorer_url, cluster, as_of, digest_hex }), or null when none is. install/cmd/package/text are read as command, mcp/mcpServers as config (labelled); {} checks nothing and answers needs_input. Read-only.
Example: { command: "npm i viem @goat-sdk/core" } · { config: "{"mcpServers":{"wallet":{"command":"npx","args":["-y","some-wallet-mcp"]}}}" }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | No | Read as `command`. | |
| mcp | No | Read as `config` (an MCP config block, as text or an object). | |
| text | No | Read as `config` when it is a JSON block, else as `command`. | |
| config | No | An MCP config block as text, e.g. {"mcpServers": {...}}. A JSON object is read as its text. Up to 16 KB is checked. | |
| command | No | An install command, e.g. "npm i @solana/web3.js viem" or "claude mcp add wallet -- npx -y some-wallet-mcp". | |
| install | No | Read as `command`. | |
| package | No | Read as `command` (an install command or package names). | |
| mcpServers | No | Read as `config`: { mcpServers: <this> }. |