CHECKPOINT

How CHECKPOINT works

What it reads, what it decides, what it would ask you to trust, and what it can't see.

What this is

CHECKPOINT sits between a trading agent and its wallet. When the agent has a buy ready, it sends three things: the token, the amount, and what the owner actually said. CHECKPOINT answers proceed, ask or block, with the reasons and a ready question for the owner.

It never holds keys, never signs, and never moves funds. It reads public data and returns an answer. Whether the agent listens is up to whoever built the agent.

The gap

Trading agents decide from market lists: price, volume, momentum, age. The things that actually take your money aren't on that list. A creator who can still mint or freeze, a transfer hook that refuses your sell, a supply that was bundled at launch, a dev who has launched 900 coins: none of it shows up as a column.

The agent's reading of your words drifts too. In our own runs, "$20" became 20 SOL, and a coin got called "AI-named" when nothing about it was AI. The agent wasn't attacked. It was just confidently wrong, the way models are, holding a wallet.

Wallet warnings catch drainers and phishing. They don't know what you asked your agent for, so they can't tell a fine trade from the wrong one.

What it checks

Three groups. The first can stop a buy outright. The others ask before the agent signs.

CheckRead fromDefaultWhen it fails
Nobody can mint moremint authoritymust be revokedblock
Nobody can freeze your tokensfreeze authoritymust be revokedblock
No trap extensionstoken-2022 mintno permanent delegate, transfer hook, transfer tax, frozen-by-default, pauseblock
You can sell it backa live Jupiter quote, token → SOLa route must existblock
Enough liquidity to get outpool liquidity$2,000 (under $500 blocks)ask
Not bundledbundler wallets' share at the topunder 20%ask
Mostly real holdersbot wallets' share nowunder 35%ask
Supply spread outtop 10 holders, pools excludedunder 40%ask
Not a serial launchercoins launched by the dev walletunder 10ask
Not dumping right nowlast 5 minutesnot down 30% or moreask
Within budgetyour wordsonly if you gave oneblock
Market cap, age, theme, dev still holds, X accountyour wordsonly what you saidask

Holder, bundle, bot and dev numbers come from Jupiter's token data. Mint, freeze and extensions are read from the Solana mint account itself.

Method

your words ──► extract ──► rules ─┐
                                   ├──► decide ──► proceed / ask / block
the token  ──► facts   ──► facts ─┘      (plain code, same input = same answer)

Extract. One model call turns your words into rules: budget, market cap range, age, theme, and anything you said about the dev, holders or socials. It only writes down what you said. If you said something nobody can check before buying ("will 10x"), it's listed and shown, not guessed at.

Facts. No model. Jupiter's token data for market, holders, bundles, bots and dev history; the mint account on Solana for authorities and extensions; a live Jupiter quote to see the coin can be sold back.

Decide. Plain code compares the facts to the rules. No model in this step, so every answer can be traced to a number and a threshold.

The split is the point. "The AI decided so" is worth nothing in a dispute. "You said under $100k, the market cap is $112k" is worth something, and you can check it yourself.

Proceed, ask, block

block when the coin can take your money whatever you asked for (mint, freeze, trap extensions, no exit, almost no liquidity), or the buy breaks a hard limit you set, like your budget.

ask when the buy doesn't match your words, or the holders look wrong. It comes with a ready question for the owner: "Before I buy $X: bundlers held 36% of supply at the top. Buy anyway?"

proceed when everything you asked for checks out and nothing on the chain says no. That's not a promise the coin goes up. It means the agent bought what you asked for, and the coin can't take it from you by design.

Using it

One HTTP call before the agent signs. Send the token and the owner's words, or rules you already have. See the API page for the request, the answer, and examples.

Who you are trusting

  • Nothing with your funds. CHECKPOINT never sees a key or a transaction. Worst case, it gives a wrong answer.
  • Jupiter's token data. Holder, bundle, bot and dev numbers are Jupiter's. If they're wrong or late, so are we. A coin a few seconds old may not have them yet, and those checks then show as unknown.
  • The extract step. A model reads your words. It can misread them. The rules it read are always shown next to the answer, so you can see it.
  • A quote is not a trade. A sell route existing now doesn't guarantee it exists in an hour.

Limitations

  • It checks one buy at a time. It doesn't watch the position after, or tell the agent when to sell.
  • Thresholds are defaults picked by hand, and the benchmark is how we check them. A coin can pass every check and still go to zero. Most memecoins do.
  • Theme matching looks for words in the name, ticker, description and links. A real AI coin with a vague name can be asked about; a fake one with "AI" in its name can pass.
  • Pumpfun coins only in this edition. Other launchpads mostly work, but nothing was tuned for them.
  • No checks on the agent's own transaction: what it signs is its business. CHECKPOINT judges the buy it's about to make.

This edition

v0.1. The demo agent is a real model (claude-haiku-5-5) shopping the live pumpfun market through Jupiter's trending, top-traded and new-coin lists. It gets a buy ready and stops: nothing is bought on the demo. The API is open and rate-limited.