Astral

Docs

Give your trading agent its own quantum-safe account, and stay in control of every trade it can make.

Beta: the contracts had an internal security review; the external audit is in progress. Keep amounts small until it is published.

Getting started

  1. 1Create your account: write down your 24-word recovery phrase and choose a password for this device.
  2. 2Create a trading agent: pick its network (Base, Arbitrum, BNB Chain, Polygon and Robinhood Chain), its daily volume, the trade size that needs your approval, and the tokens it may trade.
  3. 3Connect it to your Grok Bot with the one-time code. The bot creates the agent's key on its own computer.
  4. 4Send tokens and a little of the network's gas token to the agent's address, then write its strategy as a prompt. It trades within its rules.

Start from the new agent page in the dashboard.

Grok Bot

Grok Bot runs MCP servers on its own cloud computer. Send it this message with your connect code, then give it a strategy that uses the quantos tools.

message to your Grok Bot
Add a stdio MCP server named "astral" with the command "npx -y quantos-mcp" and the environment variable QUANTOS_CONNECT_CODE=QTOS-XXXX-XXXX.

Tools it gets: get_agent, get_portfolio, get_limits, get_quote, get_price_history, get_indicators, find_token, get_token_info, swap, send, receive, get_activity, get_request_status. Every refusal comes back with a plain reason, so the bot can adapt instead of retrying.

Strategies can rely on exact numbers: get_indicators returns RSI, moving averages and MACD computed by Astral on hourly market prices. For example: “every hour, call get_indicators for ETH; below RSI 30 buy ETH with 25% of your USDC, above 70 sell half of your ETH.”

Your Grok Bots share one cloud computer, so another bot on your account could use the agent's key. Keep limits tight: they cap what any bot can do with it.

Other agents

Claude Desktop, Claude Code, MCP apps

Add the Astral MCP server with your connect code. The assistant pays on its own, within limits.

ChatGPT, Claude on the web

Not supported yet: they can't run a local MCP server, and the agent's key must stay with the agent.

claude_desktop_config.json
{
  "mcpServers": {
    "astral": {
      "command": "npx",
      "args": ["-y", "quantos-mcp"],
      "env": { "QUANTOS_CONNECT_CODE": "QTOS-XXXX-XXXX" }
    }
  }
}

Limits & approvals

  • Daily volume — per token sold, reset at midnight UTC. The agent's account refuses anything above it.
  • Ask me above — trades above this size need your approval, signed on your device for that exact trade. An approval never lifts the daily volume.
  • Allowed tokens — an agent can only buy and sell the tokens you picked.
  • Any token (optional) — turn it on and the agent can also trade memecoins and any other token by contract address. It buys them only with your allowed tokens, so inside their limits, and sells them back into them; it can never send them to an address. Before each buy, Astral refuses tokens that look like scams: honeypots, high taxes, an owner able to change balances, or no way to sell back. A memecoin can still lose most of its value.
  • Network fees — a daily budget in the network's gas token. Each agent operation reserves its maximum fee from it, so even a stolen agent key can't burn the wallet's balance in fees. Your own actions don't count.
  • Pause / disconnect — pause stops all trading (or every agent at once); disconnect revokes the agent's key.

Funding & fees

Each agent has its own wallet address, on the network you picked. Send tokens to it from any wallet or exchange, on that network, plus a little of its gas token (ETH on Base, Arbitrum and Robinhood Chain, BNB on BNB Chain, POL on Polygon). The wallet pays every network fee itself, including for your own actions; Astral sponsors nothing and adds no fee besides 1% of each swap.

Only you can withdraw, at any time, even while the agent is paused. Tokens and NFTs someone sends to the wallet outside its allowed list show up as unverified: they are never counted in its value, and only you can move them.

Recovery

Your 24-word recovery phrase restores your account on any device: Sign in, then import it (or your private key) and choose a password there. If you lose the phrase too, recovery contacts (people you trust who use Astral) can together give control to a new key. Before approving, each of them compares a safety code with you on the phone. The new key takes over after a waiting time; if it wasn't you, cancel with your current key.

Developers

Agents connect through the Astral MCP server. On first run it generates the agent's ML-DSA-44 key in ~/.quantos and registers only the public key. For every trade, the Astral API prepares the operation and checks it against the agent's limits; the MCP server re-checks it (account, chain, tokens, amounts, minimum output), recomputes the hash and signs it locally. Astral never signs.

mcp.json
{
  "mcpServers": {
    "astral": {
      "command": "npx",
      "args": ["-y", "quantos-mcp"],
      "env": { "QUANTOS_CONNECT_CODE": "QTOS-XXXX-XXXX" }
    }
  }
}

The tools it exposes are listed in Developers in the dashboard.

Security model

WhoKeyCan
AgentML-DSA-44, on the Grok Bot / agent machineSwap and send within limits, allowed tokens and its fee budget
Owner (you)ML-DSA-44, from your 24 words, encrypted by your passwordEverything: limits, approvals, pause, withdraw, keys, upgrades
Recovery contactsTheir own ML-DSA-44 keysTogether, give control to your new device after a delay you can cancel
AstralNonePrepare, check and relay; the relayer is refunded by the wallet

Contracts

The same addresses on Base, Arbitrum, BNB Chain, Polygon and Robinhood Chain. Their source code is published and verified on Sourcify. Each agent wallet is its own contract, upgradeable only by its owner.

AgentAccountFactory (v1.1)0xAF857fa06D3F1F053E99acEcbC16a98629634D04
AgentAccount implementation (v1.1)0x07950350245bAa1AB298804007Fd8Afda05F08c2
AgentAccountFactory (v1.0, earlier wallets)0xF3bab07F0CeD8e83aA960b02F0763D7dFCEa0773
MLDSA44Verifier0x40aF62DB0008C0c3B3391ea44Da6ca7AdbB15c96
MLDSAKeyDeployer0x2CB766933334f318B5b7983eE6C80758eE6f43dF
EmergencyPauseRegistry0x2d9d2296eD7f9d1A35147224Ec7f3a5CcA29516E
EntryPoint v0.7 (ERC-4337)0x0000000071727De22E5E9d8BAf0edAc6f37da032