wallet-desk-brief
One EVM wallet in. A who-is-this-wallet brief out. Read only.
Alchemy holdings plus Arkham attribution (x402 via Circle Gateway;
verify prints routed-x402 for both). The agent synthesizes; the agent
does not place a trade.
This is not financial-intel (asset/ticker market brief), not a
protocol desk, and not trade execution.
When To Use
Use when the user names one EVM wallet (0x…) and wants a short
attribution + holdings read: who the address is labeled as, what tokens
it holds, and a hedged desk note.
Do not use for "is <asset> a buy", ticker/macro fusion, protocol desks,
Solana-inbound addresses, or any request that should place an order. If
the user asks to trade on the result, decline that part and say so.
Rails
Both shipped steps settle x402 via Circle Gateway (skill rail is that
taxonomy label — not mixed):
- Alchemy (
x402.alchemy.com) — GET /data/v1/assets/tokens/by-address.
Manifest rail stays x402 via Circle Gateway.
selat skill verify --live-probe prints routed-x402 (~$0.001).
The call hops the SELAT Router. This is not a no-router-hop claim.
- Arkham (
api.arkm.com/x402) — POST /intelligence/address.
Same taxonomy. Verify prints routed-x402 (~$0.21 live quote).
Already in the SELAT federated catalog / discovery snapshot as
api.arkm.com/x402.
CoinGecko simple-price is not a pin. It live-402s (MPP on Tempo,
~$0.063) but takes CoinGecko coin ids, not Alchemy contract holdings.
Skip it. Do not add a third rail for it.
The selat CLI auto-detects protocol at call time. Rail names are not
a pay-chain claim — the buyer is the funded Gateway chain. A reachable
SELAT_ROUTER_URL is required for every shipped step, including Alchemy.
Workflow
- Install:
selat skill install wallet-desk-brief
- Normalize the ask into one EVM
--address. Lowercase is fine.
Refuse Solana addresses, Arc, and CCTP paths.
- Tell the user the live quote and wait for a yes before spending.
Do not pass
--yes. Do not auto-pay. Do not run selat init (or any
wallet-creation command) for the user — if setup is missing, ask
and wait. Live quotes (2026-08-22, probe-only): Alchemy $0.001
(routed-x402), Arkham $0.21 (routed-x402). Full-run cap $0.50.
- Paid run (requires an armed session budget; the runner will refuse
if none is armed):
selat skill run wallet-desk-brief --address <0x>
- The CLI compiles each step into a
selat-pay call and prints each
result. Afterwards, report what was actually spent.
Recommended agent procedure (cheapest-first; always retarget --address):
- Holdings — Alchemy
GET /data/v1/assets/tokens/by-address
(~$0.001, routed-x402). Token footprint for this wallet.
- Attribution — Arkham
POST /intelligence/address
(~$0.21, routed-x402). Entity, label, contract flag.
- Synthesize a compact who-is-this-wallet brief: address, Arkham
label/entity (or "unlabeled"), holdings snapshot, what would change
the read, source notes. Hedged and non-advisory. Do not invent a
CoinGecko, Allium, Dune, or Twitter step.
Relay the brief in plain language with the dollar cost. Keep endpoint
URLs and raw JSON out of what the user sees. When the user only wants
holdings or only attribution, call that step with selat-pay instead
of the full manifest.
Inputs And Outputs
| Param |
Required |
Default |
Description |
address |
yes |
Vitalik 0xd8dA…6045 |
EVM wallet for Alchemy + Arkham. Always pass the user's 0x explicitly. |
Output: per-step JSON (Alchemy token footprint, Arkham entity/label)
that the agent fuses into one non-advisory who-is-this-wallet brief.
Gotchas
- Pinned providers only. Use Alchemy tokens-by-address and Arkham
intelligence/address as wired. Do not substitute Allium, Dune, Exa,
Nansen, NeoTrade, Otto perps, token-screen, vault-yield-scout, or
in-skill catalog discover. Do not revive a protocol desk.
- Alchemy is
routed-x402. Verify prints routed-x402. Do not claim
a Gateway-batched nanopayment with no router hop. Do not claim
Alchemy skips SELAT_ROUTER_URL.
- Arkham is POST —
address goes in body. Alchemy is GET —
address is a query param. Do not flip them.
- CoinGecko simple-price is skipped. Probe-only 2026-08-22:
POST https://coingecko.mpp.paywithlocus.com/coingecko/simple-price
prints mode=routed-mpp ~$0.063. Body requires ids (coin slugs),
not Alchemy contract addresses, so it does not price those holdings.
Not a third rail.
- Retarget the default. Verify uses a well-known EVM wallet so both
steps are exercisable. A run for any other address must pass
--address.
- EVM only. Do not pass Solana addresses, Arc, or CCTP paths.
maxAmount is a guardrail, not the price. Per-step caps $0.01
(Alchemy) and $0.40 (Arkham); full-run cap $0.50. Live quotes
(2026-08-22): Alchemy $0.001, Arkham $0.21. Do not raise the $1 CLI
per-call ceiling.
- Verify is free / probe-only.
selat skill run requires an armed
session budget. No auto-pay. No --yes. No --skip-schema-check.
- The live 402 is the source of truth. If a step stops serving a
challenge,
selat skill verify flags it — omit it and re-add when
the gateway serves it.
- Non-advisory, always. Cite the paid sources; do not present the
brief as financial advice. Never place a trade.
Validation
--chain base in the probe commands below is only the flag selat-pay
requires today — a probe reads a free, chain-independent quote and never
settles. A real paid run resolves the settlement chain from your funded
Circle Gateway balance, not the manifest.
- Static:
selat skill validate ./skills/wallet-desk-brief
- Live gate (free, probe-only — pass
--live-probe, do not add --pay):
selat skill verify ./skills/wallet-desk-brief --live-probe --address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
- Single-step probe (no pay):
selat-pay GET "https://x402.alchemy.com/data/v1/assets/tokens/by-address?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" --chain base --probe-only --live-probe
selat-pay POST "https://api.arkm.com/x402/intelligence/address" --body '{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}' --chain base --probe-only --live-probe
References
1---2name: wallet-desk-brief3description: Use this skill when the user wants a who-is-this-wallet brief on one EVM address — e.g. "who is 0x...", "label this wallet", "wallet desk brief on 0x...", "what tokens does this address hold and who owns it", "Arkham + holdings read of 0x...". Pins Alchemy tokens-by-address (x402 via Circle Gateway; verify prints routed-x402) and Arkham intelligence/address (x402 via Circle Gateway; verify prints routed-x402). Read only. Not financial-intel (asset/ticker brief), not a trade, not a protocol desk. Pays per call via selat-pay (USDC via Circle Gateway), no API keys.4license: Apache-2.05---67# wallet-desk-brief89One **EVM wallet** in. A **who-is-this-wallet** brief out. Read only.10Alchemy holdings plus Arkham attribution (`x402 via Circle Gateway`;11verify prints `routed-x402` for both). The agent synthesizes; the agent12does **not** place a trade.1314This is **not** `financial-intel` (asset/ticker market brief), **not** a15protocol desk, and **not** trade execution.1617## When To Use1819Use when the user names **one EVM wallet** (`0x…`) and wants a short20attribution + holdings read: who the address is labeled as, what tokens21it holds, and a hedged desk note.2223Do not use for "is \<asset\> a buy", ticker/macro fusion, protocol desks,24Solana-inbound addresses, or any request that should place an order. If25the user asks to trade on the result, decline that part and say so.2627## Rails2829Both shipped steps settle `x402 via Circle Gateway` (skill `rail` is that30taxonomy label — not mixed):3132- **Alchemy** (`x402.alchemy.com`) — `GET /data/v1/assets/tokens/by-address`.33 Manifest rail stays `x402 via Circle Gateway`.34 `selat skill verify --live-probe` prints **`routed-x402`** (~$0.001).35 The call hops the SELAT Router. This is **not** a no-router-hop claim.36- **Arkham** (`api.arkm.com/x402`) — `POST /intelligence/address`.37 Same taxonomy. Verify prints **`routed-x402`** (~$0.21 live quote).38 Already in the SELAT federated catalog / discovery snapshot as39 `api.arkm.com/x402`.4041CoinGecko `simple-price` is **not** a pin. It live-402s (`MPP on Tempo`,42~$0.063) but takes CoinGecko **coin ids**, not Alchemy contract holdings.43Skip it. Do not add a third rail for it.4445The `selat` CLI auto-detects protocol at call time. Rail names are **not**46a pay-chain claim — the buyer is the funded Gateway chain. A reachable47`SELAT_ROUTER_URL` is required for every shipped step, including Alchemy.4849## Workflow50511. Install: `selat skill install wallet-desk-brief`522. Normalize the ask into **one** EVM `--address`. Lowercase is fine.53 Refuse Solana addresses, Arc, and CCTP paths.543. Tell the user the live quote and **wait for a yes** before spending.55 Do not pass `--yes`. Do not auto-pay. Do not run `selat init` (or any56 wallet-creation command) for the user — if setup is missing, **ask57 and wait**. Live quotes (2026-08-22, probe-only): Alchemy **$0.001**58 (`routed-x402`), Arkham **$0.21** (`routed-x402`). Full-run cap $0.50.594. Paid run (requires an **armed session budget**; the runner will refuse60 if none is armed):61 `selat skill run wallet-desk-brief --address <0x>`625. The CLI compiles each step into a `selat-pay` call and prints each63 result. Afterwards, report what was actually spent.6465Recommended agent procedure (cheapest-first; always retarget `--address`):66671. **Holdings** — Alchemy `GET /data/v1/assets/tokens/by-address`68 (~$0.001, `routed-x402`). Token footprint for this wallet.692. **Attribution** — Arkham `POST /intelligence/address`70 (~$0.21, `routed-x402`). Entity, label, contract flag.713. **Synthesize** a compact who-is-this-wallet brief: address, Arkham72 label/entity (or "unlabeled"), holdings snapshot, what would change73 the read, source notes. Hedged and non-advisory. Do not invent a74 CoinGecko, Allium, Dune, or Twitter step.7576Relay the brief in plain language with the dollar cost. Keep endpoint77URLs and raw JSON out of what the user sees. When the user only wants78holdings or only attribution, call that step with `selat-pay` instead79of the full manifest.8081## Inputs And Outputs8283| Param | Required | Default | Description |84|---|---|---|---|85| `address` | yes | Vitalik `0xd8dA…6045` | EVM wallet for Alchemy + Arkham. Always pass the user's `0x` explicitly. |8687Output: per-step JSON (Alchemy token footprint, Arkham entity/label)88that the agent fuses into one non-advisory who-is-this-wallet brief.8990## Gotchas9192- **Pinned providers only.** Use Alchemy tokens-by-address and Arkham93 intelligence/address as wired. Do not substitute Allium, Dune, Exa,94 Nansen, NeoTrade, Otto perps, token-screen, vault-yield-scout, or95 in-skill catalog discover. Do not revive a protocol desk.96- **Alchemy is `routed-x402`.** Verify prints `routed-x402`. Do not claim97 a Gateway-batched nanopayment with **no router hop**. Do not claim98 Alchemy skips `SELAT_ROUTER_URL`.99- **Arkham is POST — `address` goes in `body`.** Alchemy is GET —100 `address` is a query param. Do not flip them.101- **CoinGecko simple-price is skipped.** Probe-only 2026-08-22:102 `POST https://coingecko.mpp.paywithlocus.com/coingecko/simple-price`103 prints `mode=routed-mpp` ~$0.063. Body requires `ids` (coin slugs),104 not Alchemy contract addresses, so it does not price those holdings.105 Not a third rail.106- **Retarget the default.** Verify uses a well-known EVM wallet so both107 steps are exercisable. A run for any other address must pass `--address`.108- **EVM only.** Do not pass Solana addresses, Arc, or CCTP paths.109- **`maxAmount` is a guardrail, not the price.** Per-step caps $0.01110 (Alchemy) and $0.40 (Arkham); full-run cap $0.50. Live quotes111 (2026-08-22): Alchemy $0.001, Arkham $0.21. Do not raise the $1 CLI112 per-call ceiling.113- **Verify is free / probe-only.** `selat skill run` requires an armed114 session budget. No auto-pay. No `--yes`. No `--skip-schema-check`.115- **The live 402 is the source of truth.** If a step stops serving a116 challenge, `selat skill verify` flags it — omit it and re-add when117 the gateway serves it.118- **Non-advisory, always.** Cite the paid sources; do not present the119 brief as financial advice. Never place a trade.120121## Validation122123> `--chain base` in the probe commands below is only the flag `selat-pay`124> requires today — a probe reads a free, chain-independent quote and never125> settles. A real paid run resolves the settlement chain from your funded126> Circle Gateway balance, not the manifest.127128- Static: `selat skill validate ./skills/wallet-desk-brief`129- Live gate (free, probe-only — pass `--live-probe`, do **not** add `--pay`):130 `selat skill verify ./skills/wallet-desk-brief --live-probe --address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`131- Single-step probe (no pay):132 `selat-pay GET "https://x402.alchemy.com/data/v1/assets/tokens/by-address?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" --chain base --probe-only --live-probe`133 `selat-pay POST "https://api.arkm.com/x402/intelligence/address" --body '{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}' --chain base --probe-only --live-probe`134135## References136137- `manifest.json` — the machine-readable payment recipe this skill runs.138- [`references/endpoints.md`](references/endpoints.md) — the pinned endpoints, rails, skipped CoinGecko note, and live prices.139- [`references/agent-skill-authoring-sop.md`](../../references/agent-skill-authoring-sop.md) — authoring standard.140- selat-pay — https://github.com/SELAT-AI/selat-pay