Skip to the content
Foretel

How it works

Foretel is a receipt for a trading call. You seal the call before the price moves, open it after, and the price on Robinhood Chain’s own pools decides how it went.

1. Seal

You choose an asset, a direction, a target move and a horizon (1 hour to 30 days), and may add a note. Your browser draws a random 32-byte salt and computes

commitment = keccak256(abi.encode(caller, asset, direction, targetBps, horizon, note, salt))

Only that commitment goes on chain, with two times: when the call may be opened (the end of its horizon) and the last moment it may be (three days later). The contract records your address and the block’s time. Nobody, Foretel included, can read the call from the commitment.

2. Open

After the horizon you send the call and the salt. The contract recomputes the commitment and accepts the contents only if they are exactly what you sealed. You can also sign a permit that lets an agent or a relayer open it for you (EIP-712, on the API page).

A call not opened by its deadline is hidden. It stays on your record and counts as a miss, so sealing many calls and opening only the good ones does not help.

3. Score

The price is read from the asset’s pool at two blocks: the block your seal landed in, and the last block at or before the seal’s time plus the horizon. Each reading is the pool’s own 5-minute average (its oracle), or, where a pool keeps too short a history, the median of seven spot reads across the same 5 minutes. One trade in one block cannot set the price a call is scored at. An asset priced in WETH is turned into dollars with the WETH/USDG pool at the same block; USDG is taken as one dollar.

The result is the move in the call’s own direction: for a long, end / start - 1; for a short, 1 - end / start. A hit is a result at least as large as the target. Every call’s page lists the pool, the blocks and each reading.

4. The record

Win rate is hits / (hits + misses + hidden). The average is the mean result of opened calls; per day divides each result by its horizon in days first, so a 5% move in a day counts more than 5% in a month. A streak is the hits in a row, back from the newest decided call. The leaderboard lists callers with at least 3 decided calls in the window (7 days, 30 days, all time), counted by when the calls were sealed. A call on an asset Foretel does not price (sealed from another app straight to the contract) is shown but never scored, and does not count.

A caller can link an X account (a signed message, then a public post with a code, read through X’s public embed service) and trading wallets (the same text signed by both addresses). Links are public and cannot be removed. For each opened call, Foretel compares the called asset’s balance in the caller’s address and every linked wallet at the two scoring blocks; a long call where any of them held less at the end is marked sold during call.

6. Your salt

Without the salt nobody can open a call, so it is kept three ways: in your browser, in a file you download, and as a sealed copy on Foretel’s server, encrypted in your browser with a key made from your wallet’s signature of a fixed text. The server never has that key and cannot read the copy. Foretel opens a call for you only if you ask it to: an agent using @foretel/mcp can hand over one call’s salt with a permit you sign, and the Foretel Oracle then opens that call (revealFor) when its horizon ends. That is the only way a salt reaches the server in a form it can read, and only for that call.

7. The Foretel Oracle

Experimental agent. Not financial advice. Its calls are public on-chain, wins and losses.

The Oracle is Foretel’s own agent, using Foretel like anyone else: it seals calls with its own wallet and opens every one when its horizon ends, a miss exactly like a hit. Its record sits on the leaderboard with everyone’s. Its rules are fixed and read only the chain; the same readings always give the same call:

  1. It looks only at the assets Foretel lists (below).
  2. Trend: the asset’s dollar price (the pool’s 5-minute average) now, against 4 hours ago and 1 hour ago. Both moves must point the same way, at least 0.80% over 4 hours and 0.30% over the hour.
  3. Activity: at least 4 swaps and $1,000 traded in the pool in the last hour, counted from the pool’s own Swap events.
  4. Depth: the pool’s quote-side balance has not fallen more than 15% in the hour.
  5. Ranking: the size of the 4-hour move, scaled down when the hour’s volume is under $10,000; a tie goes to the larger volume, then the lower token address.
  6. The call: in the trend’s direction, for 4 hours, target half the 4-hour move rounded to 0.25%, between 0.50% and 5.00%.
  7. Pace: at most 5 seals a UTC day, at least 2 hours apart, one open call per asset, looked at every 15 minutes.

Its note is the rule’s own sentence with the readings (with a language model key on the server, a model may reword that sentence; it never makes the decision). Its limits are held by the database, not by its code: it may sign only seal, reveal and revealFor on ForetelSeal; at most 5 seals a day and 20 auto-reveals; 0.005 ETH of gas in all; it waits when its wallet holds under 0.0005 ETH, stops itself after three failures in a row, and has a kill switch. Its key was made on Foretel’s server and is stored there only encrypted; a sealed copy for the owner’s offline recovery rides in each nightly backup. Nothing in its wallet but gas.

8. For agents

Any AI agent can use Foretel through @foretel/mcp: it builds unsigned seal and reveal transactions for the agent’s own wallet and keeps each salt on the agent’s machine.

What Foretel does not prove

  • That the caller traded the call. A seal proves when a call was made and what it said. It is not a position.
  • That the caller is who they say. An X link proves the X account and the address agreed to be linked; nothing more.
  • That a wallet trace is complete. It compares two balances in the wallets the caller linked. A sale bought back before the end does not show, and wallets that were never linked are not seen.
  • That one address is one person. Anyone can seal from many addresses; a record is the record of one address.
  • That a pool’s price is the market’s. Calls are scored on Robinhood Chain’s pools only. A thin pool can drift from other markets, which is why an asset needs the liquidity below to be callable.
  • That the Oracle is worth following. It is an experiment run in public. Its rules are simple on purpose, and its record shows exactly how they did, including the misses.
  • Anything about the future. A record is past calls. It is not advice, and nobody earns anything here: Foretel has no token and no rewards.

The contract

ForetelSeal on Robinhood Chain (chain id 4663) has no owner, no admin, no upgrade path, accepts no ETH and holds nothing. It is at 0x8cb7c8ea9999fd71cacffe48e07320ac1bba0f9f, read from block 106,620,076.

What can be called, and from which pool

An asset is callable while its pool passes a check read on chain every 30 minutes: the pool is the one its factory gives for the pair, it prices the asset in WETH or USDG, it holds at least $100,000 of that quote (an asset already listed is hidden only below $75,000), and its price reads. These figures were read at block 106,637,650, 2026-11-05 09:36 UTC.

AssetPoolQuoteFeeQuote in poolPrice
WETH crypto0x52e65b17fb6e5ba00ed806f37afcd2daa50271caUSDG0.01%$4,749,691$2,412
PIPEDOG chain token0xb7f10f74b39291b9290b779978e19a7637c742d6WETH1.00%$1,935,844$0.000477
PONS chain token0x10cc6bd38112cac182db90b6a71d8bb5939526baWETH1.00%$997,765$0.2202
CASHCAT chain token0xa70fc67c9f69da90b63a0e4c05d229954574e313WETH1.00%$876,404$0.1047
cbBTC crypto0x934e60d1c6c34242b92159a5bcc710fafa50ad87WETH0.05%$849,705$80,229
CRCL stock token0x654e4143e82a5824445ade0824351c2a9acd95a8USDG0.30%$748,919$75.19
GLD stock token0x7a6a053eccf1446a2633e05aa6d40d09381997ecUSDG0.30%$648,882$377.78
SPY stock token0xddcbba3666f578e3f09516f21ff85bfee859ab5eWETH0.05%$615,851$767.52
USO stock token0x02175608f1b5e6b5ed221ccfdc7be197d111d915USDG0.30%$606,591$144.61
WALLET chain token0x9501a20bedb8bea0798fe5d4c411f5e270965d49WETH1.00%$561,048$0.01113
NVDA stock token0x62ab521f71431f78ac374cdbadc6cda3c8916b6cWETH0.05%$369,253$198.37
MSTR stock token0x70504a6fafdbfb75fe971faa4dd716e79ac5624cWETH1.00%$366,991$143.08
SPCX stock token0xc61284332117c3fb23a2a56cceffd07f7af60029USDG0.05%$366,986$133.81
MSFT stock token0xeb60bcd1d920ad6e102690ccfc6fb488899e1510USDG0.30%$364,900$555.40
COST stock token0x0a2121a50a09ed0796ae81f9c53ff9398355a398USDG0.30%$355,720$1,053
AMZN stock token0x8ac92da74ab5f3b1d024dc1943ad7e15dc4179efUSDG0.30%$342,207$267.96
TSLA stock token0xa953ca88ff430e9487c60ca34d757414f4efda07WETH0.30%$321,841$376.92
MU stock token0xd057b1bc54917855bbee58ead58647f47cab35e5USDG0.30%$292,396$771.95
DELTA chain token0xd64fbda67e1015df43fa5e49f02ca844729e5f94WETH1.00%$253,595$0.009472
GOOGL stock token0x8c2b4303fa0b99d07a5d3e9411497a277e65b673WETH1.00%$250,639$288.80
AMC stock token0xaa34fea710a1a737840329051d81d3b0b7c564d5USDG0.30%$245,322$3.42
META stock token0xa4bdb396a69617eb7f70e2cc1ef526f7340b1b0dWETH0.30%$220,757$634.28
GME stock token0xe9713f453adb9245b19559790c96f470a18f2fdfUSDG1.00%$209,878$25.10
AAPL stock token0x8bb3514e2204e1cdf3ac149efee7ff04d91b719fWETH0.05%$169,288$350.11
CHUMP chain token0x714442e9a611f8561a7df108d6d925132937cfb8WETH1.00%$163,498$0.00382
Index chain token0xd29893ffac8b29ec4db2cfe0cdb3fe1377c028ffWETH1.00%$160,105$0.008821
MRNA stock token0xb40196272a6d2eb5edf6d93bc4dc39856ad95e0eUSDG0.30%$156,331$255.83
MANCER chain token0x543127d6a1932689faacc1afad4a81146d9ccf54WETH1.00%$150,739$0.001629
HMM chain token0x2b0d0183d017c58b924401ca8ac362f6e01f0e9eWETH1.00%$144,892$0.006178
JUGGERNAUT chain token0x588b0785f50063260003b7790c42f1ef74902746WETH1.00%$141,182$0.004121
HIMS stock token0xc8c90d3a1c1a24967e773ac2ad0d456ba3e31f64USDG0.30%$137,419$26.67
TENDIES chain token0x237609918f330add285b8bc5f8f2922283d1c4c5WETH1.00%$137,082$0.003678
RBLX stock token0x6d25417718a8d6c529130a8ccc4bfbf0a18219d3WETH0.30%$132,155$48.74
Anon chain token0x9b5a506b26a4d0710046401e98c3fde6f7da8029WETH0.30%$125,880$0.3015
QQQ stock token0xd60a5d14db690b7afad71f76b108071d7175597dUSDG0.05%$117,136$686.04
COIN stock token0x6707aeac7d0e519b083219d27bb427364363183aWETH0.30%$115,382$150.94
AI chain token0xc4a21f9d6485fc5893dd4a491b320a83daf4da1dWETH1.00%$111,608$0.057
AVGO stock token0x5b7c404f1d7d77f9f3885ab13d7764f8a173028cUSDG0.30%$86,182$319.22

Not callable now: ORBIO (the pool holds 60,830 USD of USDG, under 100,000 USD); ABYSS (the factory does not give this pool for the pair); RAM (the factory does not give this pool for the pair); UP (the factory does not give this pool for the pair). A call already sealed on an asset that is later hidden is still scored from the same pool.

WETH is priced in dollars from the WETH/USDG pool 0x52e6...71ca.