Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Description from the maker (original English)
Economic-safety tools for trading agents: executable quote + rug/honeypot pretrade check via x402.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
AGENT_WALLET_KEY, PLEXA_BASE_URL, CHAINValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"getplexa": {
"command": "npx",
"args": [
"-y",
"@getplexa/mcp"
],
"env": {
"AGENT_WALLET_KEY": "your-value",
"PLEXA_BASE_URL": "your-value",
"CHAIN": "your-value"
}
}
}
}Run this in your terminal
claude mcp add getplexa --env AGENT_WALLET_KEY=your-value --env PLEXA_BASE_URL=your-value --env CHAIN=your-value -- npx -y @getplexa/mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"getplexa": {
"command": "npx",
"args": [
"-y",
"@getplexa/mcp"
],
"env": {
"AGENT_WALLET_KEY": "your-value",
"PLEXA_BASE_URL": "your-value",
"CHAIN": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"getplexa": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@getplexa/mcp"
],
"env": {
"AGENT_WALLET_KEY": "your-value",
"PLEXA_BASE_URL": "your-value",
"CHAIN": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
PLEXA_BASE_URL envCHAIN envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The publisher (getplexa.com) is not the repo owner (plexa-xyz); someone else may have listed it
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 0 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: AGENT_WALLET_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry last month.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Finance Toolkit, SolidInvoice, Korea Tax Calculator
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 95 tools with statutory citations.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Model Context Protocol server that gives any MCP client (Claude Desktop, Cursor, your own agent) two economic-safety tools from [Plexa](https://getplexa.com) — the x402-native economic-safety layer for trading agents — paid per call in USDC, no accounts:
| Tool | Wraps | Price | Returns |
|---|---|---|---|
plexa_quote | POST /v1/quote | $0.02 | Executable fill price under size (not mid/spot), price impact (bps), realizable depth, per-leg route, worst-case slippage, confidence — from canonical on-chain quoters on Base, Polygon & Arbitrum. |
plexa_pretrade_check | POST /v1/pretrade/check | $0.05 | Two levels. `verdict`: avoid only when a listed trap is *proven* on-chain at that block (no pool to exit into · the counter-asset pot is under 5% of your size, and the pot is a hard upper bound on what a sale can return · the token's own trading gate is off), clear otherwise — clear means *no provable trap*, not "safe". `risk_profile`: age, holder concentration, liquidity depth incl. exitLiquidityUsd, oracle availability, transfer limits — as data you weigh, not as a rating. Plus reasons, confidence and an executable quote. (Base-only today.) |
It is a thin client of the public API (https://api.getplexa.com) — it pays a 402 automatically, signs the USDC authorization locally with your wallet, and never sees your key. The liquidity engine stays behind the API.
A generic wallet guard answers *"can I sign this transaction?"*. It can't answer the economic question an automated trader actually needs: *what price will this swap really fill at under my size, and is this token a trap (rug / honeypot / thin liquidity)?* Plexa answers both. This package puts those answers one tool-call away inside any MCP-speaking agent.
Nothing to install — point your MCP client at the package via npx. It is fetched and run on demand.
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": { "plexa": { "command": "npx", "args": ["-y", "@getplexa/mcp"], "env": { "PLEXA_BASE_URL": "https://api.getplexa.com", "AGENT_WALLET_KEY": "0x ", "CHAIN": "base" } } } }
Add to ~/.cursor/mcp.json (or Settings → MCP → Add) — the same mcpServers block as above.
Restart the client. You should see the plexa_quote and plexa_pretrade_check tools available.
All configuration is via environment variables (set in the env block of your MCP config):
| Variable | Default | Notes | ||
|---|---|---|---|---|
PLEXA_BASE_URL | https://api.getplexa.com | The public API. The real URL — not a secret. | ||
AGENT_WALLET_KEY | *(none)* | Required to pay. Funded wallet private key — pays per call and signs locally. Plexa never receives it. Without it, tools return a clear 402. | ||
CHAIN | base | base \ | polygon \ | arbitrum (aliases matic, arb, arbitrum-one and CAIP-2 eip155:8453/137/42161 also work; case is normalized). The chain your wallet is funded on; quotes and payment default to it. plexa_pretrade_check is Base-only today — other chains answer 422. |
Funding. Use a dedicated, low-balance wallet with a little USDC on CHAIN to pay per call (quotes $0.02, checks $0.05). The wallet signs an EIP-3009 USDC authorization per request; Plexa returns the result only after the payment settles on-chain (settle-before-serve).
Your key is a secret. Prefer your MCP client's secret storage if it has one. Never commit it.
MCP has no native payment. This server acts as an x402 client: it wraps fetch, so when Plexa replies 402 Payment Required it reads the payment requirements, signs a USDC authorization with your wallet (locally), and retries. The signed authorization is the only thing that leaves your machine — never the key. Payment is made on CHAIN, so you fund one wallet on one chain.
If no AGENT_WALLET_KEY is set, the tools return an honest 402 error explaining a funded wallet is needed — they never fabricate a result.
Once configured, just ask your agent naturally — it will call the tools:
*"Before I buy this token
0x…on Base, check it with Plexa and get me an executable quote for $500."*
The agent calls plexa_pretrade_check (verdict + reasons) and plexa_quote (executable price under $500), pays $0.05 + $0.02 in USDC automatically, and answers with real on-chain economics.
Beyond verdict / triggers / risk_profile / liquidityCoverage, every pre-trade response carries six blocks of context. Live capture, WETH, 2026-08-20T14:46:29Z, Base block 50223921 — the note string each block carries is long and is cut here, nothing else is:
{
"identity": { "name": "Wrapped Ether", "symbol": "WETH", "decimals": 18, "totalSupplyRaw": "239296586519181917702210", "totalSupply": 239296.58651918193 }, "valuation": { "fdvExecutableUsd": 543916397.6557496, "basis": "totalSupply(this chain) x executablePrice(at sizeUSD)" }, "ownership": { "ownerAddress": null, "ownerRenounced": null, "isMintable": false, "creatorAddress": "0xe8a3ecea7d6a688ee903173024225357ddf29e93", "creatorBalance": 0.000289172466091074, "creatorSharePct": 1.208427041511075e-07 }, "dormancy": { "topHolderIdleDays": null, "lastTopHolderMoveBlock": null, "headBlock": null }, "market": { "priceUsdSpot": 2277.76, "volume24hUsd": 551324354.8699999, "marketCapUsd": 542587444, "holderCount": 5223863 }, "sources": { "*": "measured", "risk_profile.concentration": "unavailable:holder-axis-produced-nothing", "flags.F_CONC": "unavailable:holder-axis-produced-nothing", "valuation": "derived:identity.totalSupply*quote.executablePrice", "dormancy": "unavailable:holder-axis-produced-no-block", "ownership.creatorAddress": "derived:sender-of-first-transfer", "ownership.isMintable": "derived:mint-selector-in-bytecode", "market": "vendor:dexscreener+goplus", "market.priceUsdSpot": "vendor:dexscreener", "market.volume24hUsd": "vendor:dexscreener", "market.marketCapUsd": "vendor:dexscreener", "market.holderCount": "vendor:goplus" } }
🔴 `sources` is the map of who said what. measured — ours, read off the chain on this call. derived: — ours, computed from other fields of this same response. vendor: — somebody else's number, republished and signed as theirs. unavailable: — no value, and the reason why. That last one is the point: a missing number that names its own gap cannot be mistaken for a clean result.
Two numbers that look like duplicates and are not: valuation.fdvExecutableUsd is THIS chain's supply at the price your size executes at; market.marketCapUsd is the vendor's global figure. For a bridged token ours is legitimately smaller.
A field changed MEANING, not shape. risk_profile.liquidity.exitLiquidityUsd used to be the counter asset sitting in the direct pools. Since 2026-09-20 it is what selling the position returns: the server quotes the sale of the very position the answer prices and reports the proceeds of the best road (never a sum of roads).
Where the previous number lives: liquidityCoverage.exitPoolInventoryUsd — same figure as before, under its own name. liquidityCoverage.exitPotBasis tells you which kind of number the head figure is: position-sale (measured proceeds), second-hop (a counter-asset road) or pool-inventory (the sale could not be quoted this call, so it fell back to the pre-20.09 meaning).
Why it matters: measured on SOGNI, 2026-09-20 — inventory $113,968 against a sale that returns $4,571 for a $5,000 position. A client comparing the OLD pot with its own size overstated the exit by 8.6% of that size. If your code does min(exitLiquidityUsd, size), it now gets the honest number; if you relied on the old semantics, read exitPoolInventoryUsd instead.
Also in this release:
liquidityCoverage.exitLadderScope and liquidityCoverage.exitReachRoad name the ROAD behind each exit number, so exitLadderStatus: "unsellable" can no longer be read as "this token cannot be sold" — it describes direct Uniswap v4 pools only, while the pot may have been measured via somewhere else. Measured 2026-09-22 on Base: unsellable across 31 v4 pools while the position sold for $4,735.82 through another venue.exitPoolInventoryUsd is no longer an unconditional upper bound: when the v4 sale ladder ran, the v4 share of it is the ladder's REACH, and it never counts the second leg of a two-leg sale.No field was removed and no response shape changed. The minor version moved because a published field's meaning did.
@modelcontextprotocol/sdk + x402.MIT — see LICENSE.
Questions: [support@getplexa.com](mailto:support@getplexa.com) · [getplexa.com](https://getplexa.com)
Informational on-chain data and heuristic economic signals, not financial advice. Absence of flags
is not a guarantee of safety. Verify independently before trading.