x402-native, pay-per-call. Two HTTP tools an agent pays for inline — no accounts, no keys held. Quotes on Base, Polygon & Arbitrum — pay in USDC from any of them or Solana.
x402-nativemultichaindecision-grade
the gap
A wallet guard like Blockaid tells an agent whether a transaction is malicious — can I sign this? It can't tell the agent should I trade this? — what price actually fills under size, and whether the token is an economic trap. Plexa answers the economic question.
two endpoints, one engine
POST /v1/quote$0.02
Executable liquidity under a given size: real fill price (not mid/spot), price impact (bps), realizable depth, per-leg route, worst-case slippage, confidence. Priced from canonical on-chain quoters, on Base, Polygon & Arbitrum.
POST /v1/pretrade/check$0.05
avoid — only when a trap is proven at that block: nowhere to sell, less than 5% of your size sitting in the pool as the counter asset, or trading switched off by the contract itself. Otherwise clear — no proven traps, which is not “safe”. Plus risk_profile: age, concentration, depth, the amount a sale would be paid from — as numbers; the call is yours. Analysis runs on Base today; you can pay from any of the four rails. Same endpoint, same price, also at /v1/token-safety and /v1/rug-check.
The first call from a new wallet is free — the full response, every field, same engine as a paid one. One free call per wallet, on either endpoint; nothing is settled on-chain for it.
A real capture, trimmed to the fields explained here — nothing invented. executablePrice is how much token 1 USDC buys at the requested size: the real fill, not a mid. validUntil says until when asking again returns this same answer; coverage says how many of the five axes reported. liquidityCoverage is the exit check showing its work: conclusive: true means it reached a verdict-grade conclusion; 45 pools were found across 13 factories with none left unread. In Uniswap v4, 10 pools of this pair were seen and the sale was simulated in each — 1 accepted it, 8 refused (a refusal is a measurement about that pool, not a gap in our data), 7 run a hook inside the swap, and singletonScanTruncated admits the scan hit its work cap. The two block numbers are the start and end of those reads: one apart here, so no single block describes the answer exactly, and that gap is the uncertainty. In concentration, ageSec: 140 with stale: false means the holder numbers were measured 140 seconds earlier and served from cache. Absent numbers come back null with a reason, never as 0.
connect & configure
As an MCP tool
Add the Plexa MCP server to any agent (Claude Code / Claude Desktop / any MCP host). It exposes plexa_quote and plexa_pretrade_check. Payment is handled automatically via x402 from a wallet you configure — Plexa never sees the key.
As an agent skill
An Agent Skill, pretrade-exit-check, teaches an agent when the pre-trade check is worth its $0.05 and how to read the answer — the verdict vocabulary, what liquidityCoverage proves, and which fields are allowed to be null. Install: npx skills add plexa-xyz/skills.
Direct HTTP (x402)
Any x402 client works (e.g. @x402/fetch). Call the endpoint; on 402 the client signs a USDC payment (EIP-3009) and retries — the response is served only after on-chain settle. Pass chain: base / polygon / arbitrum.
Use a dedicated, low-balance wallet. This key signs payments; it is not an API key. Keep it in your environment and let the host expand ${AGENT_WALLET_KEY} — if your MCP host does not support expansion, put the literal value in a file with restrictive permissions and never commit it. Plexa never sees the key: it stays in your client.
Live on npm: @getplexa/mcp — run with npx -y @getplexa/mcp. The public API is live at api.getplexa.com.
open-source reference agent
See Plexa in action
A complete, MIT-licensed reference agent — a dust consolidator that discovers small token balances, checks each through Plexa, and swaps the safe ones. Client-only: it uses nothing but the public API, so it doubles as a working integration pattern you can fork.