# SolKnife

> Non-custodial Solana toolkit: rug-checks, swaps, portfolios, token minting, multisig, Arweave.

- name: xyz.solknife/toolkit
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 75/100 flags: no-repository
- quality: 76/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/xyz.solknife%2Ftoolkit
- tools: https://api.protogrid.dev/v1/servers/xyz.solknife%2Ftoolkit/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "toolkit": {
      "type": "http",
      "url": "https://solknife.xyz/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 97
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-93% ~updated-97d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 76/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 64 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: solknife_positions_list (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); solknife_ct_state (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); solknife_burn_nft_build (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- warn `tools.token_cost`: about 10,910 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 55, about 10,910 tokens to load them all
- tool set hash: fad36e205e4d9299435e234db6685cab
- tools last changed: 2026-10-02T21:03:35.070Z
- badge: [![protogrid quality](https://protogrid.dev/badge/xyz.solknife/toolkit.svg)](https://protogrid.dev/servers/xyz.solknife/toolkit)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-02 `solknife_reclaim_rent_execute` changed (description)
  - before: Submit reclaim-rent close-batch tx(s) (signed). Each is re-verified against fresh on-chain state for the wallet's reclaimable accounts. Returns per-tx outcomes.
  - after: Submit reclaim-rent close-batch tx(s) (signed). Each is re-verified against fresh on-chain state: its close targets must still be the owner's empty accounts, and its fee must match their rent. Returns per-tx outcomes.

Full history: https://api.protogrid.dev/v1/servers/xyz.solknife%2Ftoolkit/changes

## Remotes

- https://solknife.xyz/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.9263158)

## Packages

_none_

## Tools (55)

- `solknife_arweave_upload_relay`: Upload a base64-encoded file to Arweave via SolKnife's funded Irys account. JSON-only — for agents without a wallet-adapter integration. Allowed contentType: image/png, image/jpeg, image/gif, image/webp, application/json. Max 2 MiB. Returns { arweaveTxId, arweaveUrl }.
- `solknife_burn_nft_build`: Build chunked burn tx(s) for selected NFTs (pNFTs supported).
- `solknife_burn_nft_execute`: Submit burn-nft tx(s) (signed). Structural re-verifier pins the burn ixs + fee per tx. Returns per-tx outcomes.
- `solknife_burn_nft_list`: List a wallet's NFT assets (DAS).
- `solknife_change_authority_build`: Build an unsigned change-authority tx: transfer the mint and/or freeze authority to newAuthority. The new authority is pinned in the tx the client verifies before signing.
- `solknife_change_authority_execute`: Submit a wallet-signed change-authority tx. Structural re-verifier pins the reassign ix(s) + fee.
- `solknife_change_authority_read`: Read a mint's current mint + freeze authorities and whether `owner` holds either (before transferring one).
- `solknife_check_scan`: Rug-check a Solana token: freeze authority, sellability, holders, liquidity. Returns the same ReportResult shape as GET /api/check.
- `solknife_create_account_build`: Build an unsigned ATA-create tx (idempotent) for one or more mints.
- `solknife_create_account_execute`: Submit a wallet-signed ATA-create tx. Structural re-verifier pins the ATA creation ix(s) + allowlist.
- `solknife_create_mint_build`: Build an unsigned create-mint tx. Returns the base64 v0 transaction + lastValidBlockHeight + derived mint address.
- `solknife_create_mint_execute`: Submit a wallet-signed create-mint tx. Structural re-verifier pins the mint creation ix + fee.
- `solknife_ct_apply_pending_build`: Build the ApplyPending tx. The agent-supplied `newDecryptableAvailable` (36 B AES base64) is what the worker computed.
- `solknife_ct_configure_build`: Build the Configure tx. Needs an agent-generated PubkeyValidity proof (96 B base64) + decryptable-zero AES ciphertext (36 B base64).
- `solknife_ct_deposit_build`: Build the Deposit tx (public → confidential pending). `amount` in base units (u64 string).
- `solknife_ct_empty_and_close_build`: Build the combined EmptyAccount + CloseAccount tx. Agent provides the 96 B base64 zero-ciphertext proof.
- `solknife_ct_orphans_build`: Build chunked CloseContextState tx(s) to reclaim orphan ZK ctx rent.
- `solknife_ct_orphans_list`: List a wallet's orphan ZK Proof context-state accounts (left by partial Withdraw or Transfer sagas).
- `solknife_ct_state`: Read confidential-transfer state for owner + mint (mint extension flags, account configured, balance ciphertexts).
- `solknife_ct_submit`: Submit a CT signed tx (single-tx ops) or saga (multi-tx ops). `op` discriminates. For saga ops (withdraw, transfer, reclaim-orphans) supply `signedTransactions` (an array); otherwise supply `signedTransaction`. The server re-verifies the saga shape + fee per op before relaying.
- `solknife_ct_transfer_build`: Build the 5-tx Transfer saga. Agent supplies equality (320 B) + validity-3H (544 B) + range U128 (1000 B) proofs + auditor lo/hi ciphertexts (64 B each) + new AES decryptable (36 B), plus the three ephemeral ctx-state pubkeys.
- `solknife_ct_withdraw_build`: Build the 5-tx Withdraw saga. Agent supplies equality (320 B) + range U64 (936 B) proofs + new AES decryptable (36 B), plus the two ephemeral ctx-state pubkeys.
- `solknife_mint_supply_build`: Build an unsigned mint-to tx. `amount` is a whole-token decimal string; the builder parses it against the mint's decimals.
- `solknife_mint_supply_execute`: Submit a wallet-signed mint-to tx. Structural re-verifier pins the mint-to ix + fee.
- `solknife_mint_supply_read`: Read a mint's authority state plus whether `owner` is its mint authority (prerequisite for mint-to).
- `solknife_multisig_approve_build`: Build an unsigned vote tx: approve or reject the proposal at transactionIndex.
- `solknife_multisig_approve_execute`: Submit the signed vote tx. Pass the same vote value used in the build.
- `solknife_multisig_config_build`: Build an unsigned config-change proposal. op=add-member needs member (+optional permissions); remove-member needs member; change-threshold needs threshold. Only works on m-of-n multisigs (no single config authority).
- `solknife_multisig_config_execute`: Submit the signed config-change proposal tx.
- `solknife_multisig_create_build`: Build an unsigned create-multisig tx. createKey is a fresh random pubkey the agent generates; it must co-sign the tx (two signers: creator + createKey). Returns the derived multisig + vault addresses, base64 v0 tx, and lastValidBlockHeight.
- `solknife_multisig_create_execute`: Submit the signed create-multisig tx (signed by both the creator wallet and the createKey).
- `solknife_multisig_execute_build`: Build an unsigned execute tx for an APPROVED proposal at transactionIndex. The server detects vault vs config and returns executeKind; pass it to execute.execute. computeUnitLimit optionally raises the CU cap for heavy inner transactions.
- `solknife_multisig_execute_execute`: Submit the signed execute-proposal tx. Pass the executeKind returned by execute.build.
- `solknife_multisig_propose_build`: Build an unsigned propose tx. kind=sol-transfer needs recipient+lamports; token-transfer needs mint+recipient+amount (base units); instructions takes raw inner instructions ({programId, accounts, data:base64}) whose payer is the vault PDA. The proposer auto-approves if they can vote.
- `solknife_multisig_propose_execute`: Submit the signed propose-transaction tx.
- `solknife_multisig_state`: Read a Squads v4 multisig by address: members + permissions, threshold, vault balance, and pending proposals (vote tallies, who has voted, whether it can be executed). Returns null if the address is not a multisig.
- `solknife_pool_check`: Read one Meteora DLMM pool: depth, volume, fee yield, token safety summary.
- `solknife_pool_compare`: Compare every Meteora DLMM pool for a token side by side.
- `solknife_portfolio_compose_build`: Build a best-effort single auto-compose transaction for a target portfolio. Charges the configured compose fee when SOLKNIFE_FEE_ACCOUNT is set.
- `solknife_portfolio_compose_execute`: Submit a wallet-signed portfolio compose transaction after top-level program allowlist verification.
- `solknife_portfolio_compose_plan`: Plan a USD-valued portfolio rebalance from target mint percentages. `targets[].bps` must total 10000.
- `solknife_portfolio_holdings`: List a wallet's priced token holdings.
- `solknife_positions_list`: List a wallet's open Meteora DLMM positions with PnL.
- `solknife_reclaim_rent_build`: Build chunked close-batch tx(s) for the wallet's empty token accounts. Up to MAX_RECLAIM_ACCOUNTS addresses.
- `solknife_reclaim_rent_execute`: Submit reclaim-rent close-batch tx(s) (signed). Each is re-verified against fresh on-chain state: its close targets must still be the owner's empty accounts, and its fee must match their rent. Returns per-tx outcomes.
- `solknife_reclaim_rent_list`: List a wallet's reclaimable empty token accounts.
- `solknife_revoke_authority_build`: Build an unsigned revoke-authority tx (mint and/or freeze). Permanent on-chain.
- `solknife_revoke_authority_execute`: Submit a wallet-signed revoke-authority tx. Structural re-verifier pins the revoke ix(s) + fee.
- `solknife_revoke_authority_read`: Read a mint's current mint + freeze authorities and whether `owner` holds either.
- `solknife_swap_execute`: Submit a wallet-signed swap transaction. Returns the ExecuteOutcome (confirmed/failed/expired/unknown).
- `solknife_swap_order`: Jupiter quote + unsigned swap tx. `amount` in input-mint base units. Returns the unsigned tx + lastValidBlockHeight + quote details.
- `solknife_token_meta`: Fetch token metadata (name, symbol, decimals, image) for a mint.
- `solknife_token_metadata_build`: Build an unsigned set/update Metaplex metadata tx. `lock` makes the metadata immutable (irreversible).
- `solknife_token_metadata_execute`: Submit a wallet-signed Metaplex metadata tx. Structural re-verifier pins the metadata ix + fee.
- `solknife_token_metadata_read`: Read a mint's current on-chain Metaplex metadata and whether `owner` can update it.
