For agents

A check your agent runs before it trades

An agent trading on its own at three in the morning won't notice a token it can't sell. One call before the trade tells it, in one word, whether to go ahead.

Three steps

Ask. Read one word. Act.

01

Ask before the money moves.

Before a swap or a payment, your agent sends the chain and the address.

02

Read one word.

The action field says proceed, limit_exposure or do_not_proceed. The summary is one sentence it can show its user.

03

Act on it.

A normal reply always carries a decision. Anything else (an error, a timeout, "unknown") means not verified, and the safe thing is not to trade.

What your agent does with each answer

AnsweractionWhat your agent does
AllowproceedTrade.
Cautionlimit_exposureGo in small, or ask its user first. The risks are listed in reasons.
Blockdo_not_proceedDon't trade. Show the summary.
Unknownnone, status 503Treat it as not verified. If the reply says retryable, ask again after Retry-After seconds. Not charged.

Two checks

One for a swap, one for a payment

BEFORE A SWAP · ABOUT A SECOND

The token check.

Answers "is this token safe to buy?" It runs a buy and a sell in a simulation and reads who can change the token's rules or empty its pool.

POST /v1/check/token with "context": "swap"

Tell it how much. Add the size of the trade in dollars ("amount_usd": 500) and the check also tries a trade of that size. If the pool is too small for it, or the token would let your agent buy that much and sell only in pieces, the answer says so before the money moves.

BEFORE A PAYMENT · ABOUT A FIFTH OF A SECOND

The quick check.

Answers "is this wallet safe to pay?" It catches sanctioned wallets, wallets that forward everything they receive to a thief, and look-alike wallets planted in a wallet's history with fake USDC or USDT transfers. An agent that copies an address from its history, or matches it by its first and last characters, is exactly who those are made for.

POST /v1/check/quick with "context": "pay"

Three ways to connect

Three ways to connect your agent

Live

Pay per check.

No account, no sign-up. Your agent pays in USDC on Base inside the call itself: $0.03 for a token check, $0.01 for a wallet check.

The code, step by step.

Live

MCP.

Add Lorg Check as a tool in Claude, Cursor and other MCP clients, so the agent asks before it trades.

Paste the settings below, with the public key, and ask. Settings for every client.

Pilot now

An API key.

For a team running one agent or many. One HTTPS call with a key, and no payment per call.

Ask for a pilot key.

Try it now

Try it now, with a key anyone can use

This key is public: it is printed here on purpose. It works today against the pilot service, which runs every check on live Base and Ethereum data. No account, no sign-up, nothing charged.

  • The keylorg_test_wxXht1MyxKVyQwjyxN5JPHGfatXIZbL9
  • What it doesBoth checks, as MCP tools (check_token and check_address) or as a plain HTTPS call.
  • Its limits10 checks a minute for each caller, and 1,000 a day shared between everyone using it. Enough to try it. For real use, ask for a key of your own.
  • Wherestaging.lorglabs.com, our sandbox: the same checks on the same live data, nothing charged. For real use, api.lorglabs.com: pay per check, or a key of your own.
// MCP: add this to your client's settings (Cursor and others) { "mcpServers": { "lorg-check": { "url": "https://staging.lorglabs.com/mcp", "headers": { "Authorization": "Bearer lorg_test_wxXht1MyxKVyQwjyxN5JPHGfatXIZbL9" } } } } # Claude Code: one command claude mcp add --transport http lorg-check https://staging.lorglabs.com/mcp \ --header "Authorization: Bearer lorg_test_wxXht1MyxKVyQwjyxN5JPHGfatXIZbL9" # or a plain call: DEGEN on Base, for a $500 trade curl https://staging.lorglabs.com/v1/check/token \ -H "Authorization: Bearer lorg_test_wxXht1MyxKVyQwjyxN5JPHGfatXIZbL9" \ -d '{ "chain": "base", "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed", "amount_usd": 500 }'

Then ask your agent: "is this token safe to buy?" Claude Desktop, VS Code and others: the MCP docs

Pay per check

Pay per check, step by step

Your agent needs a wallet holding USDC on Base (no ETH: the payment is a signed authorisation). It never needs an account with us.

  • 1. AskSend the request with no payment. The reply is 402, with the price in it.
  • 2. PayYour agent signs a USDC payment for that amount from its own wallet, and sends the same request again with the payment attached.
  • 3. ReceiveThe signed answer comes back, with a receipt for the payment.
  • Never chargedA mistyped request is refused before any payment is asked for. An error or an "unknown" costs nothing: the payment settles only when we return an answer.
  • LimitsWithout a key, one address can make 30 requests a minute. An agent that needs more should hold a key.
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch"; import { ExactEvmScheme } from "@x402/evm"; import { privateKeyToAccount } from "viem/accounts"; // the agent's own wallet, holding USDC on Base const wallet = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY); const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, { schemes: [{ network: "eip155:*", client: new ExactEvmScheme(wallet) }], }); // ask, pay and receive, in one call const reply = await fetchWithPayment("https://api.lorglabs.com/v1/check/token", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ chain: "base", address: token, amount_usd: 500 }), }); // act on one word const { action, summary } = await reply.json(); if (reply.status !== 200 || action === "do_not_proceed") stop(summary);

Run as written on 14 Oct 2026 · the full guide

What it can rely on

What your agent can rely on

  • We never guess. If a check we need can't run, the answer is "unknown", never "allow".
  • It only pays for answers. An "unknown" or an error costs nothing.
  • Every answer is signed. It carries the exact block and time it was true, so the agent, or its owner, can prove later what we told it.
  • Nothing is moved. We only answer a question. Nothing is sent, signed or moved. The trade we run is a simulation.
  • "Allow" is not a guarantee. It means we found nothing that should stop the trade at the moment we looked. A token can still fall in price, and things can change after the check.

Check before you trade.

Base and Ethereum today. More chains to come.