presign-guard
Server Details
Pre-sign, token and approval checks for agents: green/orange/red for signatures, tokens, wallets.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Fizzl13/presign-guard
- GitHub Stars
- 1
TDQS
Scored across 6 tools
Each tool targets a distinct use case, but presign_check/presign_check_explain/presign_quick_check and token_verdict/token_quick_verdict are near-duplicates differentiated mainly by price, detail, and rate limits. An agent could pick the wrong variant without close attention to the descriptions.
Names are all lowercase snake_case with a clear prefix, but the action word varies ('check' vs 'verdict' vs 'approvals') and the quick variants place 'quick' inconsistently (presign_quick_check vs token_quick_verdict). Overall predictable, with minor deviations.
Six tools is a well-scoped count for the server's purpose. The free/paid tiers create some redundancy, but each tool corresponds to a meaningful interaction mode or resource type.
The surface covers the core safety workflow: pre-signature checking, human-readable explanations, token risk assessment, and wallet approval auditing. Minor gaps exist, such as direct contract/address checks or NFT approval coverage, but the main domain is well covered.
Available Tools
6 toolspresign_checkPre-sign risk check ($0.01 via x402)ARead-onlyInspect
Paid ($0.01 USDC via x402 on Base): call this before you sign. Send the transaction, token approval or EIP-712 signature (Permit, Permit2, EIP-3009 x402 payment, Seaport) your agent is about to sign; get back green, orange or red with reason codes: who gets access, whether the spender or recipient is flagged, sanctioned (OFAC SDN) or unverified, unlimited allowances, and the token itself (honeypot, fake look-alike, high tax). Only proceed on green; on orange ask your user; never sign on red. Same as POST /v1/check.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | transaction: the target contract | |
| data | No | transaction: 0x-prefixed calldata | |
| type | Yes | What the agent is about to sign | |
| token | No | approval: the token contract | |
| value | No | transaction: native value in wei | |
| amount | No | approval: amount in base units (0 = revoke) | |
| origin | No | optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange | |
| chainId | Yes | EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base) | |
| spender | No | approval: who gets the allowance | |
| typedData | No | signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite readOnlyHint and openWorldHint annotations, the description adds meaningful behavioral context: the $0.01 USDC fee via x402, the types of submitted payloads, the color-coded verdicts, and the specific risk factors checked. This goes well beyond the annotations without contradicting them.
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 dense but well-structured: cost and timing are front-loaded, the input and output are stated concretely, and the safe-action policy is explicit. The closing 'Same as POST /v1/check' is a useful pointer without adding bloat.
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 no output schema, the description still explains what the agent will receive: green/orange/red with reason codes covering spender flags, sanctions, allowances, and token risks. It also covers cost, when to call, and how to act on results, making it complete for an agent to use correctly.
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 reinforces which payload types map to which parameters and gives examples like Permit2 and Seaport, but most parameter meaning already lives in the schema. It adds moderate context but does not carry the semantic burden.
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 identifies a specific action: a pre-sign risk check that evaluates transactions, approvals, and signatures and returns green/orange/red with reason codes. It does not explicitly differentiate itself from siblings like presign_quick_check, but the resource and behavior are unmistakable.
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 gives strong when-to-use guidance: call before signing, proceed only on green, ask the user on orange, and never sign on red. It does not explicitly contrast with sibling tools or state when to choose a quick check instead, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
presign_check_explainPre-sign risk check with explanation ($0.03 via x402)ARead-onlyInspect
Paid ($0.03 USDC via x402 on Base): the same verdict and reason codes as presign_check, plus a 3 to 5 sentence plain-language explanation a person can read before approving (lang en or nl). Same as POST /v1/check/explain.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | transaction: the target contract | |
| data | No | transaction: 0x-prefixed calldata | |
| lang | No | Language of the explanation (default en) | |
| type | Yes | What the agent is about to sign | |
| token | No | approval: the token contract | |
| value | No | transaction: native value in wei | |
| amount | No | approval: amount in base units (0 = revoke) | |
| origin | No | optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange | |
| chainId | Yes | EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base) | |
| spender | No | approval: who gets the allowance | |
| typedData | No | signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description correctly avoids restating that. It adds meaningful behavioral details: the $0.03 USDC cost via x402 on Base, and the 3-5 sentence explanation length. It also references the POST /v1/check/explain endpoint for clarity. No contradictions with the 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 two sentences with no redundancy. It front-loads the key differentiator (explanation) and the cost, then clarifies it matches presign_check's verdict/reason codes. Every sentence earns its place, making it highly efficient.
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 tool with 11 parameters, the schema handles parameter semantics well. The description covers the purpose, cost, output content (verdict/reason codes plus explanation), language options, and references an endpoint. It doesn't detail the exact response structure, but no output schema exists, and the mention of 'verdict and reason codes' is sufficient for an agent to understand the expected outcome.
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 every parameter. The description adds only marginal value, such as indicating the lang parameter is for the explanation language, which is already in the schema. It does not provide additional syntax or format details beyond the schema, so the baseline of 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?
The description clearly states the tool's function: a pre-sign risk check that returns the same verdict and reason codes as presign_check, but adds a plain-language explanation. This explicitly distinguishes it from its primary sibling, presign_check, by the added feature. The verb and resource are specific, and the tool's purpose is unambiguous.
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 a human-readable explanation is needed by contrasting with presign_check ('same as presign_check, plus explanation'). It also mentions the cost, which is a practical consideration. However, it does not explicitly mention when not to use it or alternative tools like presign_quick_check or token_verdict, leaving some room for interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
presign_quick_checkQuick pre-sign verdict (free)ARead-onlyInspect
Free: the green/orange/red verdict only, for a transaction, token approval or EIP-712 signature your agent is about to sign. Limited to 10 calls per hour. For the reason codes and details use presign_check ($0.01); for a plain-language explanation presign_check_explain ($0.03).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | transaction: the target contract | |
| data | No | transaction: 0x-prefixed calldata | |
| type | Yes | What the agent is about to sign | |
| token | No | approval: the token contract | |
| value | No | transaction: native value in wei | |
| amount | No | approval: amount in base units (0 = revoke) | |
| origin | No | optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange | |
| chainId | Yes | EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base) | |
| spender | No | approval: who gets the allowance | |
| typedData | No | signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds useful operational context: it is free, rate-limited to 10 calls per hour, and returns only the quick verdict with no details. This goes beyond the annotations without contradicting them.
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 compact: three sentences that front-load the free verdict, define the scope, state the rate limit, and route to alternatives. Every sentence adds useful information with 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 10-parameter tool with no output schema, the description still provides enough context: it defines the return as a color verdict, explains the rate limit, and names the more detailed sibling tools. The schema handles parameter semantics, and the annotations handle safety. Nothing essential 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?
The schema covers 100% of the 10 parameters with clear type-conditional descriptions, so the baseline applies. The description's mention of transaction, approval, or signature maps to the type enum but adds no new parameter-level meaning beyond what the schema already provides.
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 outcome—green/orange/red verdict—for the concrete resources: transaction, token approval, or EIP-712 signature. It also distinguishes itself from the presign_check siblings by saying it is the free 'verdict only' variant. This makes the tool's purpose unambiguous.
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 explicitly names the alternatives presign_check and presign_check_explain and the conditions for choosing them: need reason codes and details, or plain-language explanation. It also gives the 10-calls-per-hour limit, which informs when the paid siblings should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_quick_verdictQuick token verdict (free)ARead-onlyInspect
Free: the green/orange/red verdict and grade only, for a Solana or EVM token your agent is about to buy, hold or accept. Limited to 10 free calls per hour (shared with presign_quick_check). For the reasons, one-line summary and market data use token_verdict ($0.01).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain the token lives on | |
| address | Yes | Solana mint address (base58) or EVM token contract (0x...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open-world behavior; the description adds a concrete rate limit and clearly states the output is only the verdict/grade, excluding reasons, summary, and market data. It does not contradict annotations, though it leaves minor details like rate-limit failure behavior unstated.
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 compact and front-loaded: it starts with the free verdict/grade output, then rate-limit, then the alternative for richer data. Every sentence earns its place with 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 simple two-parameter read-only tool, the description covers output semantics, supported token families, rate limits, and the richer paid alternative. Even without an output schema, an agent can correctly decide to call it and interpret the returned verdict/grade.
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 chain and address are already documented with formats and examples. The description only echoes 'Solana or EVM token' and adds no real parameter-level information beyond what the schema provides.
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 operation: return a green/orange/red verdict and grade for a Solana or EVM token. It also names the output scope with 'only' and explicitly contrasts with token_verdict, making the tool distinguishable from siblings.
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?
Tells the agent when to use this free quick version and when not to: for reasons, summary, or market data it routes to token_verdict ($0.01). It also warns about the shared 10-calls-per-hour limit with presign_quick_check, giving clear capacity-aware guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_verdictToken verdict ($0.01 via x402)ARead-onlyInspect
Paid ($0.01 USDC via x402 on Base or Solana): call this before your agent buys, holds or accepts a token. Send the chain (solana, base, ethereum, arbitrum, optimism, polygon, bsc) and the token address or mint; get back green/orange/red, a grade (SAFE, CAUTION, RISKY, AVOID), reason codes (mint or freeze authority still active, honeypot, tax or transfer fee, LP not locked, low liquidity, new token, concentrated holders, rugged), a one-line summary, and market data (price, liquidity, market cap, 24h volume, age). Same as GET /v1/token.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain the token lives on | |
| address | Yes | Solana mint address (base58) or EVM token contract (0x...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds value by disclosing the $0.01 USDC cost via x402, the supported chains, and the full set of returned verdict fields. It does not contradict the annotations and adds meaningful context beyond them.
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 dense sentence that front-loads the paid nature and use case, then efficiently enumerates inputs, outputs, and reason codes. Every clause earns its place, and the 'Same as GET /v1/token' pointer is useful. It is long but not bloated.
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?
Despite having no output schema, the description fully enumerates the return payload: verdict color, grade, reason codes, summary, and market data. It also states cost, chains, and input requirements. It is incomplete only regarding error cases and edge behavior, but it is otherwise strong for a two-parameter tool.
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 parameters are already documented with chain enum and address format. The description restates the chain list and the address/mint concept but adds no new semantic detail beyond what the schema already provides, so the baseline score 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?
The description clearly identifies a specific action ('call this before your agent buys, holds or accepts a token') and a specific resource (token risk verdict). It lists the exact outputs. However, it does not explicitly differentiate itself from the sibling tool token_quick_verdict, so it misses the top score.
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 gives clear when-to-use context: before buying, holding, or accepting a token. It also spells out required inputs. It does not provide when-not-to-use guidance or name alternatives, so it falls short of explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_approvalsWallet approval audit ($0.02 via x402)ARead-onlyInspect
Paid ($0.02 USDC via x402 on Base or Solana): audit the open token approvals of an EVM wallet (base, ethereum, arbitrum, optimism, polygon, bsc), for example your agent's own wallet as a periodic check. Get back green/orange/red, a grade, a one-line summary and every ERC-20 allowance with its spender: flagged malicious (red), a plain wallet, on a doubt list, an unverified contract or an unlimited allowance to a spender not on the GoPlus trust list (orange), plus which ones to revoke and a revoke.cash link. NFT approvals are not covered. Same as GET /v1/approvals.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | EVM chain to audit | |
| address | Yes | Wallet address (0x...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context: the cost ($0.02 USDC via x402), the payment rails (Base or Solana), the output categories (green/orange/red, grade, one-line summary, every ERC-20 allowance with spender), and the actionable revoke.cash link. It also discloses the limitation that NFT approvals are not covered. This goes well beyond the 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 dense but well-organized: cost and payment method are front-loaded, then the output details, then the exclusion. Every sentence adds information. It is slightly long but justified by the richness of the tool's output and the paid nature of the call. The 'Same as GET /v1/approvals' line is a useful compact reference.
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 audit tool with two fully documented parameters and no output schema, the description covers the key things an agent needs: what it costs, what chains it supports, what the output looks like, and what it does not cover. It does not describe pagination or rate limits, but for a simple audit call with a defined output shape, this is a minor gap.
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 ('EVM chain to audit' and 'Wallet address (0x...)'). The description adds the chain list and the wallet use case, but it doesn't add deeper parameter semantics such as address format validation or chain-specific nuances. Baseline 3 is appropriate when the schema carries the full parameter documentation.
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 ('audit'), a specific resource ('open token approvals of an EVM wallet'), and the exact chains supported. It also explicitly excludes NFT approvals, which distinguishes it from any sibling that might cover broader approval types. The 'Same as GET /v1/approvals' line further anchors the tool's identity.
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 gives a concrete use case ('for example your agent's own wallet as a periodic check') and states what is not covered ('NFT approvals are not covered'). It does not explicitly name sibling tools or say when to prefer an alternative, but the use case and exclusion provide clear context for when this tool is appropriate.
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.
1 tool update
- Added
wallet_approvals
3 tool updates
- Changed
presign_check1 field changed- added
Input schema / properties / originAdded value: +{ + "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange", + "type": "string" +}
- Changed
presign_check_explain1 field changed- added
Input schema / properties / originAdded value: +{ + "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange", + "type": "string" +}
- Changed
presign_quick_check1 field changed- added
Input schema / properties / originAdded value: +{ + "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange", + "type": "string" +}
2 tool updates
- Added
token_quick_verdict - Added
token_verdict
3 tool updates
- First observed
presign_check - First observed
presign_check_explain - First observed
presign_quick_check
Related MCP Connectors
Preflight checks for agent repository contributions, bounty work, and Base payments.
Pre-trade safety verdicts for agents: token rug/honeypot, calldata guard, wallet risk — signed x402.
Pre-transaction token risk checks for autonomous agents on six chains. Read-only; paid via x402.
Verify URLs, payees, and messages before acting: red/yellow/green trust verdicts for agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceNon-custodial agent wallet with a transaction preflight that decodes an unsigned EVM tx and flags drain patterns (unlimited/large approval, approve-all, token & NFT transferFrom, proxy upgrade, on-chain permit, approvals hidden in multicall) before signing.9102 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for a pre-interaction risk check on any EVM contract/token, enabling agents to verify contracts before approving, swapping, or trusting an address.1MIT

fingersofficial
AlicenseNot gradedqualityCmaintenanceRead-only checks on tokens, NFTs, wallets, contracts and tokenized stocks before an agent acts. Honeypot, peg, copycat, wallet risk. Deep Robinhood Chain coverage. Never your keys.MIT
RNWY MCP Serverofficial
FlicenseNot gradedqualityFmaintenanceProvides trust intelligence for AI agents across 12 chains, including sybil detection, reviewer wallet analysis, and risk tiers, with tools for trust checks, reviewer analysis, and agent comparison.-
Glama MCP Gateway
Add one secure layer between your agents and this server.