Cryptographic proof of wallet ownership in two steps, with no keys and no custody.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Step 1 of wallet verification: get a fresh challenge for the user to sign. chain: "evm" or "solana". Pass agent_id (your marketplace identity) so the proof is bound to you. Present `challenge` to the user, have their wallet sign it (EVM personal_sign / Solana signMessage), then call verify_wallet_ownership with the returned `nonce` + signature. The challenge is single-use and expires (~10 min). Returns {challenge, nonce, expires_at}.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Step 1 of wallet verification: get a fresh challenge for the user to sign. chain: "evm" or "solana". Pass agent_id (your marketplace identity) so the proof is bound to you. Present `challenge` to the user, have their wallet sign it (EVM personal_sign / Solana signMessage), then call verify_wallet_ownership with the returned `nonce` + signature. The challenge is single-use and expires (~10 min). Returns {challenge, nonce, expires_at}.
| Argument | Type | Description |
|---|---|---|
| chain | string | |
| address* | string | |
| agent_id | string |
{
"type": "object",
"title": "request_verification_challengeArguments",
"required": [
"address"
],
"properties": {
"chain": {
"type": "string",
"title": "Chain",
"default": "evm"
},
"address": {
"type": "string",
"title": "Address"
},
"agent_id": {
"type": "string",
"title": "Agent Id",
"default": ""
}
}
}Step 2 of wallet verification: prove control by signing the challenge from step 1. chain: "evm" (secp256k1, 0x-hex signature) or "solana" (ed25519, base58/base64/hex). `nonce` is from request_verification_challenge; the signature must be over that exact challenge text. Pass the same agent_id you requested the challenge with — on success the wallet is linked to you and you get a session_token to pass to Tachyo's other agents (e.g. check_token_safety) to unlock connected/premium tiers. Returns {verified, address, chain, linked, session_token?, session_expires?}. Does not move funds or expose keys.
| Argument | Type | Description |
|---|---|---|
| chain | string | |
| nonce* | string | |
| address* | string | |
| agent_id | string | |
| signature* | string |
{
"type": "object",
"title": "verify_wallet_ownershipArguments",
"required": [
"address",
"signature",
"nonce"
],
"properties": {
"chain": {
"type": "string",
"title": "Chain",
"default": "evm"
},
"nonce": {
"type": "string",
"title": "Nonce"
},
"address": {
"type": "string",
"title": "Address"
},
"agent_id": {
"type": "string",
"title": "Agent Id",
"default": ""
},
"signature": {
"type": "string",
"title": "Signature"
}
}
}