PnL Labs — Solana Trust & Risk Checks
Server Details
Trust checks for Solana trading: realized-PnL wallet trust, token safety, trade cost, forensics.
- Status
- Healthy
- Uptime
- 100.0% over 61 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- PnLlabs/pnllabs-mcp
- GitHub Stars
- 1
- Server Listing
- pnllabs-mcp
TDQS
Scored across 4 tools
The four tools target clearly distinct questions: structural token safety, trade execution cost, wallet funding origin/age, and wallet PnL-based trust. Although two tools concern wallets, their outputs and purposes are well separated, so an agent should not misselect among them.
Every tool follows the same check_<object>_<attribute> pattern: check_token_safety, check_trade_cost, check_wallet_forensics, check_wallet_trust. This is predictable and easy to scan.
Four tools is well-scoped for a focused Solana trust and risk checker, with each tool covering a distinct risk dimension rather than padding the surface. No tool feels redundant or expendable.
The set covers core token and wallet risk checks, including holder concentration, sniper detection, honeypot simulation, slippage, funding origin, and realized PnL. It lacks explicit authority/liquidity-lock style checks, but agents can still address primary trust and risk workflows.
Available Tools
4 toolscheck_token_safetyCheck Token Structural RiskARead-onlyIdempotentInspect
Analyzes structural risk of a Solana token from on-chain data: real-holder concentration with bonding-curve and liquidity-pool accounts excluded, presence of known sniper-bot addresses among early buyers, and a simulated buy/sell round trip to detect honeypot behavior. Returns: verdict (LOW_RISK, ELEVATED, HIGH_RISK, CRITICAL, UNKNOWN), stable reason codes, and top-holder percentages. Scope is structural only; it does not detect risk that exists purely in trading behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Solana token mint address (base58, 32-44 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/openWorld/idempotent annotations, description discloses methodology (excludes bonding-curve/LP accounts, simulates buy/sell) and output components (verdict, reason codes, percentages). It also notes limitation about trading-behavior risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main purpose, then outputs, then scope. No wasted words; each sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param tool with no output schema, description covers behavior, outputs, and limitations well. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides 100% description coverage for mint (base58, 32-44 chars), and the description does not add parameter-specific detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Analyzes structural risk of a Solana token from on-chain data', lists concrete components (holder concentration, sniper bots, honeypot simulation). Clearly distinguishes from sibling wallet/trade cost tools by focusing on token structural risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States clear scope ('structural only') and what it does NOT detect ('trading behavior'), which helps choose when to use it. However, it does not explicitly mention alternatives like check_wallet_forensics or check_trade_cost, so it earns a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_trade_costEstimate Trade Execution CostARead-onlyIdempotentInspect
Estimates what a trade of a given size would cost in a Solana token's main liquidity pool. Returns: expected slippage in percent, an estimated round-trip cost calibrated against measured live execution overhead, a recommended maximum size in SOL, pool liquidity, and a verdict (ACCEPTABLE_COST, ELEVATED_COST, HIGH_COST, UNTRADEABLE, NO_POOL, UNKNOWN).
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Solana token mint address (base58) | |
| size_sol | No | Trade size in SOL (default 0.5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds value by detailing the exact return fields and the verdict enum, and mentions that the round-trip cost is 'calibrated against measured live execution overhead', giving insight into methodology without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence followed by a list of return values. It is front-loaded with the core purpose and avoids unnecessary words. The return list is slightly long but serves a clear function given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description compensates well by enumerating all return components and possible verdicts. It also provides some context on calibration. It does not mention potential errors outside the verdict list, but the verdicts cover no-pool and unknown cases, making it reasonably complete for a read-only estimator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add much beyond the schema: it references 'a given size' for size_sol but does not describe format or default behavior, which the schema already covers. No additional parameter meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates trade execution cost in a Solana token's main liquidity pool, listing specific outputs (slippage, round-trip cost, recommended max size, liquidity, verdict). This distinguishes it from sibling tools focused on token safety, wallet forensics, and wallet trust.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to estimate trade cost) but does not explicitly state when to use this tool over alternatives or any exclusions. Sibling names provide context, but there is no direct guidance on selection or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_wallet_forensicsTrace Wallet Funding OriginARead-onlyIdempotentInspect
Traces where a Solana wallet's funding came from and how old it is, using on-chain transfer history. Returns: origin classification (CEX_FUNDED, WALLET_FUNDED, UNKNOWN_ORIGIN, UNVERIFIABLE_ORIGIN, UNKNOWN), the funding transaction, wallet age, and a fresh_wallet flag.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Solana wallet address (base58, 32-44 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description is free to add analytical context: it discloses the source of the analysis (on-chain transfer history), the classification taxonomy returned, and that a fresh_wallet flag exists. It omits latency, rate limits, and what UNVERIFIABLE_ORIGIN vs UNKNOWN_ORIGIN practically mean for the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: purpose first, returns second. Nothing is repeated from the name/title, and no filler. The returns enumeration is load-bearing because no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only query with no output schema, the description adequately covers purpose and enumerates the returned fields. The only real gap is the absence of any guidance on how this differs from check_wallet_trust in a wallet-checking workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 100% schema coverage, and the schema already documents format (base58, 32-44 chars). The description adds no syntax, defaulting, or validation nuance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (traces), resource (wallet funding origin), and method (on-chain transfer history), and the title reinforces it with 'Trace Wallet Funding Origin'. It is functionally distinguishable from check_wallet_trust or check_token_safety by its funding-origin/age focus, but it never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no when-to-use, when-not-to-use, or alternative guidance. An agent deciding between this and check_wallet_trust for a wallet risk question gets no routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_wallet_trustCheck Wallet TrustARead-onlyIdempotentInspect
Recomputes the realized SOL profit and loss of a Solana wallet from its on-chain transaction history and returns a trust verdict. Returns: verdict (TRUSTED, NEUTRAL, UNTRUSTED, INSUFFICIENT, UNVERIFIABLE, UNKNOWN), a confidence level, realized profit/loss in SOL, the number of coins analyzed, stable reason codes, and flags such as known_sniper_bot. Returns UNVERIFIABLE when the history cannot be reconstructed reliably rather than estimating.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Solana wallet address (base58, 32-44 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuine behavioral context: it recomputes rather than trusts cached data, and notably returns UNVERIFIABLE rather than estimating when history can't be reconstructed. It does not discuss rate limits, cost, or latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then enumerates return fields and the UNVERIFIABLE fallback in tight sentences. Slightly list-heavy, but with no output schema this enumeration earns its place rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-parameter tool with no output schema, the description usefully covers what is returned (verdict enum, confidence, PnL, coin count, reason codes, sniper flags) and the UNVERIFIABLE edge case. Complete enough for correct invocation, though sibling differentiation is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (address) at 100% schema description coverage, so the schema already documents format and constraints (base58, 32-44 chars). The description adds no extra meaning about the address argument, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: recomputes realized SOL PnL from on-chain history and returns a trust verdict for a Solana wallet. Clear on its own, but it does not explicitly distinguish itself from the sibling check_wallet_forensics, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (call it to get a trust verdict on a wallet) but there is no explicit when-to-use, no exclusions, and no routing to or away from siblings like check_wallet_forensics or check_token_safety. Nothing misleading, but the agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
check_token_safety1 field changed- changed
Input schema / properties / mint / descriptionPrevious value: -"Solana token mint address (base58)"New value: +"Solana token mint address (base58, 32-44 chars)"
- Changed
check_trade_cost1 field changed- changed
Input schema / properties / size_sol / descriptionPrevious value: -"intended trade size in SOL (default 0.5)"New value: +"Trade size in SOL (default 0.5)"
- Changed
check_wallet_forensics1 field changed- changed
Input schema / properties / address / descriptionPrevious value: -"Solana wallet address (base58)"New value: +"Solana wallet address (base58, 32-44 chars)"
- Changed
check_wallet_trust1 field changed- changed
Input schema / properties / address / descriptionPrevious value: -"Solana wallet address (base58)"New value: +"Solana wallet address (base58, 32-44 chars)"
4 tool updates
- First observed
check_token_safety - First observed
check_trade_cost - First observed
check_wallet_forensics - First observed
check_wallet_trust
Related MCP Connectors
Rug pull risk and on-chain forensics for tokens on Solana and six EVM chains.
Solana onchain intelligence for AI agents: wallet risk, due-diligence, perps funding, smart money.
Solana token/wallet rug-risk scoring. Free scan; $2 SOL unlocks full wallet report. No signup.
Pre-trade safety + wallets: Solana/EVM token risk, honeypots, counterparties, balances, txs, CVEs.
Related MCP Servers
- AlicenseAqualityAmaintenanceOn-chain Solana token safety for trading agents — traces coordinated wallet funding, same-block Jito bundles, serial-rug deployers and live coordinated dumps into one Exit-Liquidity Risk verdict before a swap. Free tier, then $0.02 USDC/query via x402.152 npm1MIT
- FlicenseAqualityDmaintenanceOn-chain investigation and analysis tools for Solana blockchain, enabling detection of wash trading, funding source tracing, holder concentration analysis, and MEV/bundle activity identification.43-
- FlicenseNot gradedqualityCmaintenanceTrust scoring for AI agents on the Solana agent registry. Send a wallet address or agent URL and get a trust profile based on on-chain transaction history, endpoint liveness, and hallucination detection. Built from 100+ experiments on agent-to-agent trust.-
- AlicenseAqualityAmaintenanceRug pull risk scores and on-chain forensics for memecoins on Solana, Ethereum, Base and Robinhood Chain - launch-bundle detection, funding-origin tracing, deployer history, insider networks and whale flow. 15 read-only tools.1515 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.