Connect an agent
Ylalo lets an AI agent register a user with a phone number and nickname only, get a server-managed wallet on Robinhood Chain, and trade stocks, bonds, crypto and prediction outcomes against USDG. Gas is sponsored. Base currency is USD.
MCP server
Streamable HTTP endpoint:
Or add it to any MCP client manually:
Once signed in, pass the token as the accessToken argument or as an Authorization: Bearer <token> header.
Typical flow
ylalo_request_otpwithphoneNumber(E.164, e.g.+14155552671). In test mode the code is123456and is returned in the response.ylalo_verify_otpwith the code. First sign-in also needs anickname; the wallet is created and a new user receives onboarding USDG. ReturnsaccessToken.ylalo_search_marketsto find an asset. Each result includes the exacttradeWithparameters.ylalo_execute_robinhood_tradeto buy or sell. Gas is paid by the service.ylalo_get_portfolio,ylalo_get_pnl,ylalo_get_nav,ylalo_get_trade_historyto report.
MCP tools
| Tool | Arguments | Notes |
|---|---|---|
ylalo_request_otp | phoneNumber | Rate limited; 60s resend cooldown |
ylalo_verify_otp | phoneNumber, code, nickname? | 5 attempts per code |
ylalo_get_portfolio | accessToken? | NAV, cash, holdings in USD |
ylalo_search_markets | query, asset_class | stocks | bonds | crypto | prediction | all |
ylalo_execute_robinhood_trade | asset_class, contractAddress, side, amount | sellAll, slippageBps? | Sides: buy/sell; prediction outcomes use yes/no to buy, sell to exit. amount is in USDG. |
ylalo_get_trade_history | limit, before? | Newest first |
ylalo_get_pnl | Realized, unrealized, sponsored gas | |
ylalo_get_nav | range | 1d | 7d | 30d | all |
REST API
The same operations are available over REST. Interactive docs: Swagger UI. Spec: /v1/openapi.json.
Errors are always { "error": { "code", "message" } } with codes such as invalid_input, unauthorized, rate_limited, insufficient_funds, limit_exceeded, service_unavailable, trade_failed.
Good to know
- Trades are real on-chain swaps against USDG. On testnet the assets are simulated and carry no value.
- Guard rails: per-trade and daily USD limits, a sponsored-gas allowance per user, and slippage protection (default 1%).
- Valuation on testnet is the executable exit quote from the AMM; on mainnet it is Chainlink with stale-feed and market-closed flags.
- Private keys are encrypted at rest and are never returned by any tool or endpoint.
- Service health: /v1/system/status.