Diogenes Web3, DeFi & 402 Security MCP
Server Details
Smart contract audit oracles, Solana risk analysis, MEV defense & HTTP 402 verifiers.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- Repository
- stand-out-of-my-sun/diogenes-web3-security-mcp
- GitHub Stars
- 1
- Server Listing
- Diogenes Web3, DeFi & HTTP 402 Security MCP
TDQS
Scored across 15 tools
Each tool targets a distinct resource+action pair, and the descriptions do the heavy lifting by explicitly naming the sibling tool to use instead (e.g. audit_smart_contract_code vs scan_solana_cpi_reentrancy, estimate_bitcoin_mempool_fees vs plan_bitcoin_utxo_consolidation, evaluate_solana_token_risk vs inspect_solana_token_liquidity). Even the densest cluster — the four Solana token/program tools — is separated by clear verbs (scan, evaluate, inspect, track) plus scope notes. An agent should be able to route reliably without guessing.
Every name follows the same snake_case verb_noun convention (audit_*, calculate_*, compare_*, decode_*, detect_*, estimate_*, evaluate_*, inspect_*, plan_*, scan_*, simulate_*, track_*, verify_*). Verbs vary appropriately by action rather than randomly, and object nouns include the chain/resource for readability. No camelCase or stylistic outliers.
15 tools sits squarely in the healthy range and each one maps to a concrete security decision (pre-trade, pre-sign, pre-broadcast, pre-pay). The surface spans four coherent domains (EVM, Solana, Bitcoin L1, HTTP 402 payments) without padding or redundancy. No tool appears to be a near-duplicate included just to inflate the count.
Coverage of the stated domain is broad and lifecycle-aware: contract/source auditing, calldata and typed-data decoding, address poisoning, MEV/slippage, bridge routing, Solana program and token risk, whale flow, Bitcoin fee/UTXO planning, and 402 challenge verification. Remaining gaps are minor: there is no EVM equivalent of a wallet-wide token-approval allowance enumeration/revocation check, and no Solana transaction simulation counterpart to simulate_evm_transaction_calldata, so an agent auditing a Solana transaction payload would hit a dead end. These are workable around but not fully covered.
Available Tools
15 toolsaudit_smart_contract_codeEVM & Move Smart Contract Honeypot, Tax & Reentrancy AuditorARead-onlyIdempotentInspect
Statically audits Solidity, Vyper, or Move smart contract source code for honeypot transfer taxes, hidden mint backdoors, proxy upgrade traps, and reentrancy. Use when auditing smart contract source code or bytecode before deploying or interacting with a protocol; for scanning Solana Anchor/Rust programs specifically for Cross-Program Invocation (CPI) signer/account vulnerabilities, use scan_solana_cpi_reentrancy instead. Read-only edge call (32 KB, 60 RPM): accepts 'code_or_address' ('chain' defaults to 'evm_solidity'), uses '?demo=true' or L402 (45 sats); HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Target blockchain VM architecture; defaults to 'evm_solidity' when omitted. | |
| code_or_address | Yes | Smart contract source code snippet, ABI, or contract address to audit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk_level | Yes | Severity classification ('LOW', 'MEDIUM', 'HIGH', or 'CRITICAL'). |
| is_honeypot | Yes | True if transfer restrictions or excessive sell taxes (>10%) are present. |
| security_score | Yes | Composite contract safety score from 0 (critical exploit) to 100 (verified safe). |
| vulnerabilities | Yes | Specific vulnerability findings and line-level remediation advice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds operational traits an agent could not infer: 32 KB input ceiling, 60 RPM limit, demo-mode flag versus L402 payment of 45 sats, and HTTP 400 on invalid input. That is exactly the kind of context annotations cannot express.
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?
One dense paragraph, front-loaded with purpose and the sibling routing rule. The pricing/rate-limit clause is crammed into the same sentence and slightly blurs the scan, but no sentence is wasted.
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 two-parameter read tool with an output schema, rich annotations, and 100% schema coverage, nothing needed for correct invocation is missing: scope, exclusions, cost model, rate limit, and failure mode are all present.
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 coverage is 100%, so baseline is 3; the description modestly adds value by restating the 'chain' default and the accepted forms of 'code_or_address' (source, ABI, or address), which clarifies that an address is valid input. It does not enumerate the enum values beyond the schema, so it stays a step short of full marks.
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?
Specific verb ('Statically audits') plus concrete resource ('Solidity, Vyper, or Move smart contract source code') and an enumerated threat list (honeypot transfer taxes, hidden mint backdoors, proxy upgrade traps, reentrancy). It also explicitly carves itself out from the sibling scan_solana_cpi_reentrancy, so an agent can disambiguate without opening schemas.
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 the trigger ('before deploying or interacting with a protocol') and names the exact alternative with the condition that selects it ('for scanning Solana Anchor/Rust programs... use scan_solana_cpi_reentrancy instead'). Both when-to-use and when-to-use-something-else are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_spot_swap_rateCross-Asset Spot Exchange Rate & Satoshi Conversion CalculatorARead-onlyIdempotentInspect
Calculates instantaneous spot exchange rates and equivalent USD, BTC, and satoshi values across BTC, ETH, SOL, SUI, and USDC. Use when converting a token amount into USD or satoshis for invoice pricing or accounting; for quoting executable non-KYC cross-chain bridge routes with bridge fees and settlement times, use compare_crosschain_bridge_routes instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'currency' ('amount' defaults to 'standard'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Quantity of the source asset to convert; defaults to 100 when omitted. | |
| currency | Yes | Source asset ticker symbol to convert from. |
Output Schema
| Name | Required | Description |
|---|---|---|
| source_amount | Yes | Input asset quantity. |
| equivalent_sats | Yes | Equivalent value denominated in Bitcoin satoshis. |
| source_currency | Yes | Input asset symbol converted. |
| total_usd_value | Yes | Equivalent spot value in US Dollars (USD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which already establish readOnly/idempotent/non-destructive) by disclosing statelessness, a 32 KB payload cap, a 60 RPM rate limit, the '?demo=true' and L402 (20 sats) access paths, and the HTTP 400 failure mode. These are operational traits an agent cannot infer from structured fields.
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 tight sentences, front-loaded with purpose before usage and then operational constraints; nothing is repeated from the annotations. Slight density cost from bundling rate limit, payment scheme, and error code into one sentence, but each clause carries distinct 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 stateless two-parameter read with an output schema (so return shape need not be described), the description covers access modes, limits, and failure behavior adequately. The only real gap is the muddled statement about the amount default, which leaves a caller unsure of the exact fallback value.
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 coverage is 100%, so the baseline would be 3, but the description's parenthetical 'amount' defaults to 'standard'' conflicts with the schema, which documents 'defaults to 100 when omitted'. That is confusing rather than additive, and 'standard' is not a value in the numeric amount domain; the only real gain is naming the 'currency' argument.
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 ('Calculates') and resource ('instantaneous spot exchange rates and equivalent USD, BTC, and satoshi values'), and enumerates the supported assets. It also explicitly names the sibling it is not (compare_crosschain_bridge_routes), so an agent can disambiguate without opening either schema.
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?
Gives a concrete when-to-use trigger ('converting a token amount into USD or satoshis for invoice pricing or accounting') and an explicit alternative with its own condition ('for quoting executable non-KYC cross-chain bridge routes... use compare_crosschain_bridge_routes instead'). Both the positive and negative selection cases are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_crosschain_bridge_routesNon-KYC Cross-Chain Bridge Route & Settlement Fee ComparatorARead-onlyIdempotentInspect
Compares non-custodial, non-KYC cross-chain swap routes (THORChain native L1 swaps, Maya Protocol, Blockstream Liquid) by basis-point fee, net output sats, and settlement time. Use when routing cross-chain treasury settlements (e.g. Solana USDC or Base ETH into native Bitcoin); for calculating mid-market spot exchange rates without bridge routing fees, use calculate_spot_swap_rate instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'from_asset' ('to_asset' defaults to 'BTC_NATIVE'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Input asset amount to quote; defaults to 100.0 when omitted. | |
| to_asset | No | Destination chain asset identifier; defaults to 'BTC_NATIVE' when omitted. | |
| from_asset | Yes | Origin chain asset identifier to bridge from. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fee_bps | Yes | Total protocol and slip fee in basis points. |
| best_route | Yes | Optimal non-KYC bridge protocol selected (e.g. 'THORCHAIN_NATIVE_SWAP'). |
| kyc_required | Yes | Always false; only non-custodial permissionless routes are returned. |
| estimated_output_sats | Yes | Net settled output denominated in Bitcoin satoshis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, and the description adds substantial context beyond that: stateless edge call, 32 KB max, 60 RPM limit, demo mode or L402 payment (20 sats), and HTTP 400 on invalid input. It also clarifies that from_asset is the required input and to_asset defaults to BTC_NATIVE.
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 dense sentences with no wasted words. The comparison scope and differentiator are front-loaded ahead of operational details, so the agent gets the key routing decision first.
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 an output schema, 100% parameter coverage, and rich annotations, the description fills the remaining gaps: target use case, alternative tool, access/payment model, rate limits, and error behavior. Nothing an agent needs to select or invoke it correctly is missing.
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 even with no parameter detail in the description. The description does mention from_asset and to_asset defaults, but that information duplicates what the schema already documents; it does not add new semantics such as amount formatting or enum constraints.
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 ('Compares') plus the exact resource (non-KYC cross-chain swap routes across THORChain, Maya, and Liquid) and the metrics compared (bp fee, net output sats, settlement time). It also explicitly distinguishes itself from the sibling calculate_spot_swap_rate, so an agent can tell them apart without opening either schema.
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?
Gives an explicit use case ('routing cross-chain treasury settlements, e.g. Solana USDC or Base ETH into native Bitcoin') and names the alternative tool with the condition that selects it ('for calculating mid-market spot exchange rates without bridge routing fees, use calculate_spot_swap_rate instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_eip712_permit_signatureEIP-712 Typed Data & Uniswap Permit2 Phishing Signature DecoderARead-onlyIdempotentInspect
Decodes EIP-712 and Uniswap Permit2 off-chain typed-data payloads to verify spender identity, detect unlimited (uint256.max) token approvals, and flag expired deadlines. Use when inspecting an off-chain eth_signTypedData_v4 or Permit2 payload before signing; for decoding raw on-chain hex transaction calldata (0x...) for eth_sendTransaction, use simulate_evm_transaction_calldata instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'typed_data_json' ('chain_id' defaults to '1'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | EVM chain ID used to verify canonical router spender addresses; defaults to '8453' (Base) when omitted. | |
| typed_data_json | Yes | JSON string or object containing the EIP-712 / Permit2 message (spender, amount, deadline). |
Output Schema
| Name | Required | Description |
|---|---|---|
| signing_verdict | Yes | Safety recommendation ('SAFE_BOUNDED_PERMIT' or 'CRITICAL_UNLIMITED_APPROVAL_UNVERIFIED_SPENDER'). |
| spender_address | Yes | Normalized lowercase EVM address of the permit spender. |
| spender_identity | Yes | Identified protocol router label or 'Unknown Third-Party Spender'. |
| unlimited_approval_detected | Yes | True if the approval value equals uint256.max / uint160.max. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive), it discloses operational traits the agent cannot see elsewhere: stateless edge call, 32 KB payload cap, 60 RPM throttle, L402 payment option, demo mode, and HTTP 400 on invalid input. The only defect is that one of these operational details is wrong (see parameter note), so it stops just short of full trust.
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?
Purpose, verification targets, and the sibling alternative are front-loaded before the operational constraints. Dense but essentially waste-free; the final clause (demo/L402/400) is slightly crammed into one sentence, which is the only reason it is not a 5.
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?
Output schema exists, so return values need no explanation, and the description fully covers scope, safety profile, alternatives, and limits. It is near-complete for a 2-parameter read tool, with the chain_id default conflict the one gap that matters to correct invocation.
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 coverage is 100%, so the baseline would be 3, but the description actively contradicts the schema: it says 'chain_id' defaults to '1' while the schema says it defaults to '8453' (Base). Since chain_id governs which canonical router spender addresses are used for verification, this error can cause a wrong-chain approval to be judged safe. It also references a '?demo=true' query flag that appears in neither parameter.
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 ('Decodes') plus the exact resource ('EIP-712 and Uniswap Permit2 off-chain typed-data payloads') and the outputs of interest (spender identity, uint256.max approvals, expired deadlines). It also contrasts itself with the sibling simulate_evm_transaction_calldata, so an agent can separate the off-chain signing case from raw calldata without opening either schema.
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?
Explicit when-to-use ('inspecting an off-chain eth_signTypedData_v4 or Permit2 payload before signing') and an explicit when-not with the named alternative and its condition ('raw on-chain hex transaction calldata (0x...) for eth_sendTransaction, use simulate_evm_transaction_calldata instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_address_poisoning_scamCounterparty Address Poisoning & Vanity Prefix/Suffix Spoof DetectorARead-onlyIdempotentInspect
Compares a target recipient wallet address against recent transaction history to detect vanity prefix/suffix lookalike spoofing and zero-value dusting attacks. Use when verifying a recipient EVM or Solana wallet address before sending funds; for decoding hex smart contract calldata payloads, use simulate_evm_transaction_calldata instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'target_address' ('address_standard' defaults to 'auto_detect'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| target_address | Yes | Candidate recipient EVM (0x...) or Solana Base58 wallet address to verify. | |
| address_standard | No | Address encoding format; defaults to 'auto_detect' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| verdict | Yes | Transfer safety decision ('SAFE_VERIFIED' or 'DANGER_POISONING_ATTACK'). |
| target_address | Yes | Audited recipient address. |
| poisoning_detected | Yes | True if a prefix/suffix collision with a different middle body is found. |
| prefix_suffix_collision_score | Yes | Similarity score (0.0 to 1.0) against known counterparty addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes well beyond them: max 32 KB payload, 60 RPM rate limit, stateless edge call, L402 pricing (20 sats), '?demo=true' bypass, and HTTP 400 on invalid input. These operational traits are exactly what an agent needs before calling an edge endpoint; the only gap is that index/latency behavior is left to the output schema.
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 tight sentences ordered purpose → when/alternative → operational limits, with zero filler. The final sentence is dense (size, rate, payment, error code all crammed into one clause chain) and could be split for scanability, which keeps it from a 5.
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 2-parameter stateless lookup with an output schema and full annotation coverage, the description supplies everything else an agent needs: what it detects, when to call it, the alternative, resource limits, payment model, and failure behavior. Nothing material is missing.
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 both parameters are already documented with enum values and defaults. The description restates that 'address_standard' defaults to 'auto_detect' and surfaces an out-of-schema '?demo=true' flag, but adds no format or validation syntax beyond the schema. Baseline 3 is correct when the schema does the heavy lifting.
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 first sentence states a specific verb and resource (compares a recipient wallet address against recent transaction history) and names the two exact threat classes it detects: vanity prefix/suffix lookalike spoofing and zero-value dusting. It also names the sibling tool it is not (simulate_evm_transaction_calldata), so an agent can route without opening either schema.
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?
Explicit trigger: 'Use when verifying a recipient EVM or Solana wallet address before sending funds.' It provides an exclusion plus a concrete alternative ('for decoding hex smart contract calldata payloads, use simulate_evm_transaction_calldata instead'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_bitcoin_mempool_feesBitcoin Mainnet Mempool Feerate Estimator (sat/vB)ARead-onlyIdempotentInspect
Fetches real-time Bitcoin mainnet mempool feerate recommendations in satoshis per virtual byte (sat/vB) across fastest, half-hour, hour, and economy confirmation tiers. Use when checking current Bitcoin L1 network congestion before broadcasting an on-chain BTC transaction; for calculating exact SegWit/Taproot UTXO batch consolidation vByte weights and dust thresholds, use plan_bitcoin_utxo_consolidation instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'confirmation_target', supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation_target | No | Target confirmation speed tier; defaults to 'half_hour' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hourFee | Yes | Recommended feerate in sat/vB for ~60-minute confirmation. |
| economyFee | Yes | Low-priority feerate in sat/vB for non-urgent batch sweeps. |
| fastestFee | Yes | Recommended feerate in sat/vB for next-block (~10 min) inclusion. |
| halfHourFee | Yes | Recommended feerate in sat/vB for ~30-minute confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: declares statelessness, a 32 KB payload cap, 60 RPM rate limit, demo-mode bypass, L402 payment of 10 sats, and HTTP 400 on invalid input. These are operational facts an agent cannot infer from the annotations or schema.
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 purpose, then routing guidance, then operational constraints. Dense but every clause is functional; the parenthetical '(max 32 KB, 60 RPM)' is compressed rather than verbose, though the sentence is somewhat overloaded.
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?
Output schema exists so return shape needn't be described, and annotations cover the safety profile. Description fills the remaining gaps an agent needs: auth mechanics (L402/demo), rate/payload limits, error behavior, and sibling routing. Nothing material is missing.
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 coverage is 100% and the sole parameter already documents the enum and the 'half_hour' default, so the schema carries the load. The description reinforces meaning by naming the tiers (fastest, half-hour, hour, economy) in the context of confirmation speed, adding slight framing value over the raw enum values.
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?
Names a specific verb (Fetches) and resource (Bitcoin mainnet mempool feerate recommendations) with the exact unit (sat/vB) and the four confirmation tiers enumerated. An agent can distinguish it immediately from estimate_solana_priority_fees and plan_bitcoin_utxo_consolidation.
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?
Explicitly states the use case ('before broadcasting an on-chain BTC transaction') and names the alternative with the condition that selects it ('for calculating exact SegWit/Taproot UTXO batch consolidation vByte weights and dust thresholds, use plan_bitcoin_utxo_consolidation instead'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_solana_priority_feesSolana Compute-Unit Priority Fee & Jito MEV Tip EstimatorARead-onlyIdempotentInspect
Calculates optimal Solana compute-unit (CU) microlamport priority fees and Jito bundle tip lamports to achieve target block-inclusion probability. Use when setting SetComputeUnitPrice and Jito tips before broadcasting a Solana transaction; for querying Bitcoin L1 sat/vB mempool fee rates, use estimate_bitcoin_mempool_fees instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'priority_level' ('tx_type' defaults to 'simple_transfer'), supports '?demo=true' or x402 (10 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_type | No | Transaction category used to estimate compute unit limit; defaults to 'dex_swap' when omitted. | |
| priority_level | Yes | Target inclusion urgency tier on Solana mainnet-beta. |
Output Schema
| Name | Required | Description |
|---|---|---|
| estimated_landing_probability | Yes | Projected next-block inclusion probability (0.0 to 1.0). |
| recommended_jito_tip_lamports | Yes | Recommended Jito block-engine tip in lamports for MEV-protected landing. |
| recommended_compute_unit_limit | Yes | Suggested ComputeBudget compute unit ceiling. |
| recommended_micro_lamports_per_cu | Yes | Recommended priority fee in microlamports per compute unit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety profile is covered. The description still adds real operational context beyond that: statelessness, a 32 KB payload cap, 60 RPM rate limit, demo mode or x402 payment of 10 sats, and an HTTP 400 on invalid input. However, it never says what 'optimal' means or which chain/endpoint is actually called, so it is good rather than exemplary.
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?
Purpose is front-loaded in the first sentence, usage and exclusion in the second, operational constraints last — a logical order with no filler. The final clause is a run-on cramming statelessness, size cap, rate limit, payment modes and error code into one sentence, which costs some readability.
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?
With an output schema present, return values need not be described, and the description covers rate limits, size limits, payment/auth paths and failure behavior for a read-only edge call. The one substantive gap is the tx_type default mismatch and the unspecified definition of 'optimal' estimation.
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 coverage is 100% with both enums documented, so the baseline would be 3. But the description asserts 'tx_type' defaults to 'simple_transfer', while the schema explicitly says it defaults to 'dex_swap' when omitted — the description actively introduces conflicting parameter semantics rather than merely restating them.
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 and resource ('Calculates ... compute-unit microlamport priority fees and Jito bundle tip lamports') plus the objective (target block-inclusion probability). It also explicitly distinguishes itself from the nearest sibling, estimate_bitcoin_mempool_fees, so an agent can route without opening either schema.
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?
Gives an explicit use condition ('when setting SetComputeUnitPrice and Jito tips before broadcasting a Solana transaction') and an explicit when-not with the named alternative ('for querying Bitcoin L1 sat/vB mempool fee rates, use estimate_bitcoin_mempool_fees'). Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_dex_mev_riskPre-Swap DEX MEV Sandwich & Frontrunning Risk EvaluatorARead-onlyIdempotentInspect
Evaluates decentralized exchange (DEX) swap parameters against pool depth and mempool visibility to quantify MEV sandwich risk and compute optimal slippage tolerance in basis points. Use when configuring slippage tolerance and private-RPC routing before executing an on-chain DEX token swap; for comparing cross-chain bridge settlement routes across different L1 blockchains, use compare_crosschain_bridge_routes instead. Read-only edge call (32 KB, 60 RPM): accepts 'pair' ('execution_venue' defaults to 'uniswap_v3_public'), uses '?demo=true' or L402 (25 sats); HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Trading pair symbol or pool identifier (e.g. 'ETH/USDC' or 'SOL/USDC'). | |
| execution_venue | No | Target DEX protocol or RPC relay; defaults to 'uniswap_v3_public' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sandwich_risk | Yes | Assessed MEV extraction risk tier ('LOW', 'MEDIUM', or 'HIGH'). |
| recommended_rpc | Yes | Suggested MEV-protected broadcast endpoint. |
| optimal_slippage_bps | Yes | Recommended maximum slippage tolerance in basis points (1 bps = 0.01%). |
| frontrunning_detected | Yes | True if public mempool broadcast exposes the swap to predatory bots. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds operational context including response size (32 KB), rate limit (60 RPM), demo vs L402 payment access, and HTTP 400 on invalid input. These details help an agent plan calls without guessing about access, rate limits, or error behavior.
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 front-loaded with purpose and usage guidance, then packs operational details tightly without wasting sentences. Every clause contributes either selection guidance or invocation context.
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 output schema exists, the description need not explain return values. It covers purpose, when to use it, the main alternative, access/payment mechanics, rate limits, defaults, and error handling, making it complete for correct invocation.
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 schema already documents both parameters and the execution_venue enum. The description only repeats that it accepts 'pair' and that execution_venue defaults to 'uniswap_v3_public', adding little semantic value beyond the schema.
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 names a specific verb, resource, and scope: it evaluates DEX swap parameters against pool depth and mempool visibility to quantify MEV sandwich risk and compute optimal slippage tolerance. It also explicitly distinguishes itself from compare_crosschain_bridge_routes.
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?
It states exactly when to use the tool: configuring slippage tolerance and private-RPC routing before executing an on-chain DEX swap. It also names the alternative tool and condition for cross-chain bridge route comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_solana_token_riskSolana SPL Token Mint/Freeze Authority & Rug-Pull Risk EvaluatorARead-onlyIdempotentInspect
Evaluates a Solana SPL token's rug-pull probability by checking active mint authority, freeze authority, mutable metadata, and top-holder concentration. Use when making a pre-trade security decision on whether a Solana SPL token is safe to buy; for retrieving SPL token symbol, decimals, and DEX liquidity pool metadata via x402, use inspect_solana_token_liquidity instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'token_address' ('risk_profile' defaults to 'strict_decentralized'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| risk_profile | No | Tolerance policy for centralized freeze authorities; defaults to 'strict_decentralized' when omitted. | |
| token_address | Yes | Base58-encoded Solana SPL token mint address (32–44 characters). |
Output Schema
| Name | Required | Description |
|---|---|---|
| risk_score | Yes | Rug-pull risk score from 0.0 (renounced/safe) to 1.0 (critical danger). |
| valid_base58 | Yes | True when the provided address is a valid Base58 Solana public key. |
| should_transact | Yes | True when the token passes authority and concentration safety checks. |
| freeze_authority_present | Yes | True if an active authority can freeze holder token accounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive behavior, and closed-world scope. The description adds valuable operational context beyond annotations: statelessness, a 32 KB limit, 60 RPM rate limit, demo/L402 payment options, and HTTP 400 on invalid input, with no contradiction.
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 front-loaded with the core purpose and the sibling differentiation before operational details. Despite being information-dense, each clause contributes useful selection or invocation context, and there is no filler.
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 stateless two-parameter evaluator with an output schema, the description covers purpose, sibling routing, input expectations, rate/size limits, payment modes, and error behavior. An agent has enough information to select and invoke it correctly without needing return-value documentation.
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 both parameters and the risk_profile enum are already well documented. The description reiterates the default risk_profile and token_address input but adds only marginal meaning beyond the schema's own parameter descriptions.
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 states a specific verb and resource: evaluating a Solana SPL token's rug-pull probability via mint authority, freeze authority, mutable metadata, and holder concentration. It explicitly distinguishes this security assessment from inspect_solana_token_liquidity, which handles symbol, decimals, and DEX liquidity metadata.
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?
It gives a clear when-to-use condition: pre-trade security decisions on whether a Solana SPL token is safe to buy. It also names the alternative tool and the exact condition for using that sibling instead, leaving little room for misselection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_solana_token_liquiditySolana SPL Token Metadata, Decimals & Authority Registry LookupARead-onlyIdempotentInspect
Retrieves canonical Solana SPL token metadata including name, ticker symbol, decimal precision, and current mint/freeze authority addresses. Use when resolving SPL token decimals, ticker symbols, and registry metadata for portfolio or swap formatting; for computing a composite security risk score and binary should_transact verdict, use evaluate_solana_token_risk instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'mint' ('network' defaults to 'mainnet-beta'), supports '?demo=true' or x402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Base58-encoded Solana SPL token mint address (e.g. 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'). | |
| network | No | Solana cluster to query; defaults to 'mainnet-beta' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mint | Yes | Queried Base58 SPL token mint address. |
| symbol | Yes | Canonical token ticker symbol (e.g. 'USDC', 'SOL', 'JUP'). |
| decimals | Yes | Token decimal precision used for raw lamport/atomic unit conversion. |
| authorities_renounced | Yes | True when both mint_authority and freeze_authority are null. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavioral facts: stateless edge call, 32 KB response cap, 60 RPM rate limit, default network, '?demo=true' or x402 payment of 20 sats, and an HTTP 400 failure mode for invalid input. That is well beyond annotation coverage.
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-loaded with the payload first and the exclusion routing second, and virtually every clause carries operational information. It is somewhat dense with parentheticals crammed into a single long sentence, which slightly hurts scannability.
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 two-parameter read tool with an output schema, everything an agent needs to call it correctly is present: scope, alternative, auth/payment path, rate and size limits, and error behavior. Return-value details are correctly delegated to the output schema.
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 coverage is 100% and both parameters (base58 mint, network enum with default) are already fully documented in the schema. The description only restates that 'mint' is accepted and that 'network' defaults to mainnet-beta, adding no new semantics.
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?
Names a specific verb and resource set ('Retrieves canonical Solana SPL token metadata including name, ticker symbol, decimal precision, and mint/freeze authority addresses') and explicitly contrasts with the sibling evaluate_solana_token_risk. An agent can distinguish the two without opening a schema.
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?
Gives an explicit when-to-use ('resolving SPL token decimals, ticker symbols, and registry metadata for portfolio or swap formatting') and a named alternative with its own condition ('for computing a composite security risk score and binary should_transact verdict, use evaluate_solana_token_risk instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_bitcoin_utxo_consolidationBitcoin SegWit/Taproot UTXO Dust Consolidation & Fee-Window PlannerARead-onlyIdempotentInspect
Analyzes a set of Bitcoin UTXO balances in satoshis to compute exact vByte transaction weight, identify uneconomical dust inputs, and recommend whether to consolidate now or hold. Use when optimizing on-chain Bitcoin treasury UTXO sets to minimize long-term miner fee drag; for fetching current live Bitcoin mempool sat/vB feerates alone, use estimate_bitcoin_mempool_fees instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'utxos_sats_json' ('script_type' defaults to 'p2wpkh_segwit'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| script_type | No | Bitcoin input script type determining vByte weight per input; defaults to 'p2wpkh_segwit' when omitted. | |
| utxos_sats_json | Yes | JSON array or comma-separated list of UTXO values in satoshis (e.g. '[1200, 45000, 85000]'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| utxo_count | Yes | Number of UTXO inputs analyzed. |
| recommended_action | Yes | Execution timing advice ('CONSOLIDATE_NOW' or 'HOLD_UNTIL_SUB_15_SAT_VB'). |
| high_fee_dust_utxos | Yes | Count of UTXOs whose input weight costs more than 3% of their value. |
| estimated_consolidation_vbytes | Yes | Total virtual byte (vB) size of the consolidation transaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety bar is met structurally. The description adds genuinely useful context the annotations do not encode: stateless execution, a 32 KB payload cap, 60 RPM throttling, demo/L402 payment options, and an HTTP 400 on invalid input. However it omits what the recommendation output contains and how weight is derived, so it is solid but not exhaustive.
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?
Purpose is front-loaded in the first sentence, followed by the when-to-use/alternative routing and then operational constraints. Dense but nearly every clause carries information; the packing of rate limit, auth, and error behavior into one parenthetical sentence is slightly crowded but not wasteful.
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?
With only two simple parameters, full schema coverage, and an output schema, the description need not explain return values. It covers the remaining agent-critical unknowns: statelessness, payload cap, rate limit, payment/auth path, and failure behavior on invalid input.
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%: both utxos_sats_json (JSON array or comma-separated satoshi values) and script_type (enum with default) are fully documented in the schema. The description restates the script_type default rather than adding new meaning such as accepted value ranges or size limits per UTXO. Baseline 3 applies when the schema carries the load.
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 (analyzes) and resource (Bitcoin UTXO satoshi values) plus the three concrete outputs: vByte weight, dust identification, and a consolidate/hold recommendation. It explicitly distinguishes itself from the sibling estimate_bitcoin_mempool_fees, so an agent can route without opening either schema.
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?
Gives an explicit when-to-use condition ('optimizing on-chain Bitcoin treasury UTXO sets to minimize long-term miner fee drag') and names the alternative plus the exact condition that selects it ('for fetching current live Bitcoin mempool sat/vB feerates alone, use estimate_bitcoin_mempool_fees instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_solana_cpi_reentrancySolana Anchor & Rust Cross-Program Invocation (CPI) Vulnerability ScannerARead-onlyIdempotentInspect
Scans Solana Anchor and native Rust program instructions for unverified Cross-Program Invocation (CPI) program IDs, missing signer checks, and PDA bump seed canonicalization bugs. Use when auditing Solana Rust/Anchor source code or instruction account structs for CPI privilege escalation; for checking live SPL token mint/freeze authorities and rug-pull risk by mint address, use evaluate_solana_token_risk instead. Read-only edge call (32 KB, 60 RPM): accepts 'rust_source_or_idl' ('framework' defaults to 'anchor'), uses '?demo=true' or L402 (30 sats); HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Solana program framework used; defaults to 'anchor' when omitted. | |
| rust_source_or_idl | Yes | Solana Rust/Anchor source code or IDL JSON string to scan for CPI vulnerabilities. |
Output Schema
| Name | Required | Description |
|---|---|---|
| audit_verdict | Yes | Overall Solana program verdict ('SAFE_ANCHOR_PROGRAM' or 'CRITICAL_CPI_VULNERABILITY'). |
| pda_bump_safe | Yes | True when canonical bump seeds are enforced on all PDA derivations. |
| missing_signer_checks | Yes | Accounts mutated without enforcing Signer<'info> or has_one constraints. |
| arbitrary_cpi_detected | Yes | True if invoke/invoke_signed is called without validating the target program account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive/closed-world, and the description adds genuinely new operational context: a 32 KB input ceiling, 60 RPM rate limit, demo-mode and L402 pricing (30 sats), and an HTTP 400 failure mode for invalid input. The only gap is that it doesn't explain what the scan report contains, though an output schema exists to carry that.
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 sentences, front-loaded with the capability and the exclusion, then a dense operational footer. Every clause carries information, though the trailing parenthetical packing limits, pricing, and error codes into one run-on is slightly compressed compared with the clean opening.
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 two-parameter scanner with a full output schema and complete annotations, the description supplies what structured fields cannot: failure modes, rate/size limits, and payment/auth options. Only the consequence of exceeding the 32 KB limit and the shape of the report are left unstated, and the latter is covered by the output schema.
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 both parameters are already fully documented, including the framework enum and its 'anchor' default — which the description merely restates. It confirms the required input is a source-or-IDL string but adds no syntax, size, or format guidance beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
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 and resource ('Scans Solana Anchor and native Rust program instructions') and enumerates the exact bug classes targeted: unverified CPI program IDs, missing signer checks, PDA bump seed canonicalization. It also explicitly distinguishes itself from evaluate_solana_token_risk, so an agent can route between the two without opening either schema.
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?
Gives a clear when-to-use ('auditing Solana Rust/Anchor source code or instruction account structs for CPI privilege escalation') and names the alternative with its own trigger condition ('checking live SPL token mint/freeze authorities and rug-pull risk by mint address, use evaluate_solana_token_risk instead'). Both directions of the routing decision are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_evm_transaction_calldataPre-Sign EVM Hex Calldata Selector Decoder & Drain SimulatorARead-onlyIdempotentInspect
Decodes raw EVM hexadecimal transaction calldata (0x...) by 4-byte function selector to expose hidden ERC-20 approve/transferFrom calls, setApprovalForAll drains, and multicall bundles. Use when auditing raw hex transaction data (to, value, data) before broadcasting an on-chain EVM transaction; for inspecting off-chain EIP-712 JSON typed-data signatures, use decode_eip712_permit_signature instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'calldata_hex' ('network' defaults to 'base_mainnet'), supports '?demo=true' or L402 (20 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Target EVM network for simulation context; defaults to 'base_mainnet' when omitted. | |
| calldata_hex | Yes | Hexadecimal EVM transaction data string starting with '0x' (e.g. '0x095ea7b3000000000000000000000000...'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| selector_hex | Yes | Extracted 4-byte function selector (e.g. '0x095ea7b3'). |
| decoded_method | Yes | Human-readable ABI function signature matched to the selector. |
| simulation_verdict | Yes | Pre-sign safety recommendation ('SAFE_CALLDATA' or 'HIGH_RISK_APPROVAL_DETECTED'). |
| approval_or_drain_risk | Yes | True if the call grants token/NFT allowances or transfers assets to an untrusted target. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/idempotent/openWorld, so the safety profile is covered; the description adds genuinely non-obvious context: statelessness, a 32 KB input cap, 60 RPM rate limit, query-param demo mode or L402 payment (20 sats), and HTTP 400 on invalid input. It does not describe what the decoded output contains, but that is largely covered by the output schema.
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?
A single dense passage that front-loads the decoding purpose and risk surface before the usage routing, then the operational constraints. No sentence is filler; even the rate limit and payment note are operationally relevant to calling it correctly.
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?
With an output schema present, the description need not explain return values, and annotations cover safety. It still supplies limits, error behavior, auth/payment options and network default — everything an agent needs to invoke it successfully.
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 coverage is 100%, so both parameters are already documented, and the description mostly restates them ('calldata_hex', network default 'base_mainnet'). The only added meaning is the undocumented '?demo=true' query-parameter/payment path, which is marginal. Baseline 3 is correct when the schema does the heavy lifting.
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 and resource — decoding raw EVM hex calldata by 4-byte selector — and names the attack patterns it surfaces (approve/transferFrom, setApprovalForAll, multicall). It also explicitly distinguishes itself from the sibling decode_eip712_permit_signature, so an agent can route between the two without opening either schema.
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?
Gives an explicit situation for use ('auditing raw hex transaction data (to, value, data) before broadcasting') and an explicit alternative with the condition that selects it ('for inspecting off-chain EIP-712 JSON typed-data signatures, use decode_eip712_permit_signature instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_solana_whale_flowsSolana Whale Wallet Net-Flow & Insider Cluster TrackerARead-onlyIdempotentInspect
Tracks 24-hour net accumulation or distribution flows across top Solana whale wallets and flags coordinated insider wallet clusters for a given SPL token. Use when analyzing on-chain smart-money order flow and holder clustering on Solana; for checking static SPL contract mint/freeze authority permissions, use evaluate_solana_token_risk instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'token' ('window' defaults to '1h'), supports '?demo=true' or x402 (50 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Base58 Solana SPL token mint address or ticker symbol to track whale flows for. | |
| window | No | Aggregation lookback window for net whale flow; defaults to '24h' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| token | Yes | Tracked Solana token identifier. |
| signal | Yes | Order-flow classification ('ACCUMULATION' or 'DISTRIBUTION'). |
| net_flow_24h_usd | Yes | Signed 24-hour net whale flow denominated in USD. |
| insider_cluster_detected | Yes | True if synchronized funding patterns indicate an insider wallet cluster. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses statelessness, a 32 KB size cap, 60 RPM rate limit, '?demo=true' and x402 (50 sats) payment paths, and HTTP 400 on invalid input. This is exactly the operational context annotations cannot carry.
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 purpose, then usage, then operational constraints; every sentence carries weight. Docked one point because the embedded default-window detail is both wrong and adds noise against the 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?
Output schema covers return values and annotations cover safety, so the description only needs operational context — which it supplies (rate limit, size, payment, demo). The one gap is the ambiguous/conflicting window default that undercuts otherwise complete guidance.
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 coverage is 100%, so baseline would be 3, but the description states window 'defaults to 1h' while the schema says it 'defaults to 24h when omitted' — an active contradiction that could cause wrong-window calls. The description adds no reliable meaning beyond the schema and instead introduces conflicting default info.
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 and resource: tracks net accumulation/distribution flows across top Solana whale wallets and flags coordinated insider clusters for an SPL token. It explicitly distinguishes itself from the sibling evaluate_solana_token_risk, so an agent can tell them apart without opening schemas.
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?
Provides explicit when-to-use (analyzing on-chain smart-money order flow and holder clustering) and a named alternative for a different task (static mint/freeze authority checks → evaluate_solana_token_risk). The routing decision is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_http402_payment_challengePre-Payment HTTP 402 (L402 / x402 / MPP) Invoice & Macaroon Fraud VerifierARead-onlyIdempotentInspect
Decodes inbound HTTP 402 Payment Required challenges (L402 BOLT11 + Macaroon, x402 Solana USDC, MPP Base intents) to verify cryptographic payment-hash binding and block overcharge fraud. Use when auditing a 402 challenge header before an autonomous agent pays a Lightning invoice or USDC transfer; for checking on-chain Bitcoin L1 mempool feerates, use estimate_bitcoin_mempool_fees instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'www_authenticate' ('protocol_hint' defaults to 'L402'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| protocol_hint | No | Expected HTTP 402 payment protocol; defaults to 'L402' when omitted. | |
| www_authenticate | Yes | Raw WWW-Authenticate or Payment-Required HTTP header string from a 402 response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| protocol_detected | Yes | Identified 402 settlement protocol ('L402', 'x402', or 'MPP'). |
| overcharge_detected | Yes | True if the invoice amount exceeds the declared endpoint price ceiling. |
| payment_safety_verdict | Yes | Authorization recommendation ('SAFE_TO_PAY' or 'REJECT_HASH_MISMATCH'). |
| macaroon_payment_hash_matches_bolt11 | Yes | True when the macaroon caveat hash matches the BOLT11 invoice payment hash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses statelessness, a 32 KB payload ceiling, a 60 RPM rate limit, and that invalid input yields HTTP 400 — operational facts an agent cannot get from structured fields. Annotations already cover the safety profile, so this is pure added value.
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 dense, well-ordered sentences: purpose, usage/alternative, operational constraints — properly front-loaded with no filler. It is somewhat run-on, and the '?demo=true' / '15 sats' fragment is compressed to the point of obscurity.
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?
With an output schema handling return values and annotations covering safety, the description still supplies what an agent needs to call correctly: input source (raw WWW-Authenticate header), default protocol, size/rate limits, and error behavior. Nothing material is missing.
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 coverage is 100%, so the baseline is 3; the description restates the 'protocol_hint' default of L402 which the schema already documents verbatim. The reference to '?demo=true' and 'L402 (15 sats)' is cryptic and maps to no declared parameter, adding ambiguity rather than semantics.
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 specific verbs (decodes, verifies) against a specific resource (inbound HTTP 402 payment challenges) and enumerates the three supported protocol shapes (L402 BOLT11+Macaroon, x402 Solana USDC, MPP Base). It explicitly names the sibling it is not (estimate_bitcoin_mempool_fees), so an agent can route without opening the schema.
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?
Gives an explicit trigger — 'Use when auditing a 402 challenge header before an autonomous agent pays a Lightning invoice or USDC transfer' — plus a named alternative for the adjacent need. When-to-use and when-to-use-something-else are both present.
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.
28 tool updates
- Added
audit_smart_contract_code - Added
calculate_spot_swap_rate - Added
compare_crosschain_bridge_routes - Removed
contract_audit - Removed
crypto_address_poisoning_check - Removed
crypto_bridge_quote - Removed
crypto_eip712_permit_decoder - Removed
crypto_utxo_consolidation_planner - Added
decode_eip712_permit_signature - Added
detect_address_poisoning_scam - Added
estimate_bitcoin_mempool_fees - Added
estimate_solana_priority_fees - Added
evaluate_dex_mev_risk - Added
evaluate_solana_token_risk - Removed
http402_challenge_verifier - Added
inspect_solana_token_liquidity - Removed
mempool_fee - Removed
mev_risk - Added
plan_bitcoin_utxo_consolidation - Added
scan_solana_cpi_reentrancy - Added
simulate_evm_transaction_calldata - Removed
solana_risk - Removed
swap_rate - Added
track_solana_whale_flows - Added
verify_http402_payment_challenge - Removed
x402_solana_priority_fee_oracle - Removed
x402_token_meta - Removed
x402_whale_radar
13 tool updates
- First observed
contract_audit - First observed
crypto_address_poisoning_check - First observed
crypto_bridge_quote - First observed
crypto_eip712_permit_decoder - First observed
crypto_utxo_consolidation_planner - First observed
http402_challenge_verifier - First observed
mempool_fee - First observed
mev_risk - First observed
solana_risk - First observed
swap_rate - First observed
x402_solana_priority_fee_oracle - First observed
x402_token_meta - First observed
x402_whale_radar
Related MCP Connectors
Smart-contract risk reports for AI agents on 20 EVM chains, paid per call via x402 ($0.02 USDC).
Paid Solana token safety checks over Streamable HTTP MCP (x402 USDC on Solana + Base).
Solana token risk: free preview tools; paid x402 full reports (Solana; swap-guard also Base).
Read-only smart-contract security intelligence for autonomous agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceSolana enterprise compliance screening and RFC 9110 x402 HTTP micro-payment settlement for AI agents with fail-closed OFAC and drainer threat intelligence.4Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides autonomous EVM smart contract auditing and DeFi vulnerability triage, with a focus on flash loan arbitrage price impact and MEV sandwich protection for Aave and Uniswap v3. Enables deterministic callgraph verification and signature phishing defense via a native Model Context Protocol server.8-
- AlicenseAqualityCmaintenanceEnables AI assistants and CLI users to run automated bytecode security audits of EVM smart contracts on Base Mainnet, detecting risky opcodes and interface signatures, scoring risk, and unlocking verified results via x402 USDC micropayments.3MIT
- AlicenseAqualityDmaintenancePaid access to Solana DeFi risk intelligence — rug/honeypot scans, liquidity-pool analysis, and wash-trade-filtered pool rankings. Automatically settles micropayments in USDC via x402.1032 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.