presign-guard

Pre-sign, token and approval checks for agents: green/orange/red for signatures, tokens, wallets.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
99%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,940Tokens (tool definitions)
~2.3 KBTypical response size
Moderate attention impact (1.52% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "presign-guard": {
      "url": "https://presign-guard.onrender.com/mcp"
    }
  }
}

Remote endpoints

https://presign-guard.onrender.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢presign_quick_check(type, chainId, token, spender, amount, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "approval",
        "transaction",
        "signature"
      ],
      "description": "What the agent is about to sign"
    },
    "chainId": {
      "type": "integer",
      "description": "EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
    },
    "token": {
      "type": "string",
      "description": "approval: the token contract"
    },
    "spender": {
      "type": "string",
      "description": "approval: who gets the allowance"
    },
    "amount": {
      "type": "string",
      "description": "approval: amount in base units (0 = revoke)"
    },
    "to": {
      "type": "string",
      "description": "transaction: the target contract"
    },
    "data": {
      "type": "string",
      "description": "transaction: 0x-prefixed calldata"
    },
    "value": {
      "type": "string",
      "description": "transaction: native value in wei"
    },
    "typedData": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {}
        },
        {
          "type": "string"
        }
      ],
      "description": "signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)"
    },
    "origin": {
      "type": "string",
      "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange"
    }
  },
  "required": [
    "type",
    "chainId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢token_quick_verdict(chain, address)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "solana",
        "base",
        "ethereum",
        "arbitrum",
        "optimism",
        "polygon",
        "bsc"
      ],
      "description": "Chain the token lives on"
    },
    "address": {
      "type": "string",
      "description": "Solana mint address (base58) or EVM token contract (0x...)"
    }
  },
  "required": [
    "chain",
    "address"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢presign_check(type, chainId, token, spender, amount, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "approval",
        "transaction",
        "signature"
      ],
      "description": "What the agent is about to sign"
    },
    "chainId": {
      "type": "integer",
      "description": "EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
    },
    "token": {
      "type": "string",
      "description": "approval: the token contract"
    },
    "spender": {
      "type": "string",
      "description": "approval: who gets the allowance"
    },
    "amount": {
      "type": "string",
      "description": "approval: amount in base units (0 = revoke)"
    },
    "to": {
      "type": "string",
      "description": "transaction: the target contract"
    },
    "data": {
      "type": "string",
      "description": "transaction: 0x-prefixed calldata"
    },
    "value": {
      "type": "string",
      "description": "transaction: native value in wei"
    },
    "typedData": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {}
        },
        {
          "type": "string"
        }
      ],
      "description": "signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)"
    },
    "origin": {
      "type": "string",
      "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange"
    }
  },
  "required": [
    "type",
    "chainId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢presign_check_explain(type, chainId, token, spender, amount, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "approval",
        "transaction",
        "signature"
      ],
      "description": "What the agent is about to sign"
    },
    "chainId": {
      "type": "integer",
      "description": "EVM chain id: 1, 10, 56, 137, 8453, 42161 (8453 = Base)"
    },
    "token": {
      "type": "string",
      "description": "approval: the token contract"
    },
    "spender": {
      "type": "string",
      "description": "approval: who gets the allowance"
    },
    "amount": {
      "type": "string",
      "description": "approval: amount in base units (0 = revoke)"
    },
    "to": {
      "type": "string",
      "description": "transaction: the target contract"
    },
    "data": {
      "type": "string",
      "description": "transaction: 0x-prefixed calldata"
    },
    "value": {
      "type": "string",
      "description": "transaction: native value in wei"
    },
    "typedData": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {}
        },
        {
          "type": "string"
        }
      ],
      "description": "signature: the exact eth_signTypedData_v4 payload (Permit, Permit2, EIP-3009 x402 payment, Seaport)"
    },
    "origin": {
      "type": "string",
      "description": "optional: the site asking for the signature or transaction (URL or hostname); a domain under 30 days old is orange"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "nl"
      ],
      "description": "Language of the explanation (default en)"
    }
  },
  "required": [
    "type",
    "chainId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢token_verdict(chain, address)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "solana",
        "base",
        "ethereum",
        "arbitrum",
        "optimism",
        "polygon",
        "bsc"
      ],
      "description": "Chain the token lives on"
    },
    "address": {
      "type": "string",
      "description": "Solana mint address (base58) or EVM token contract (0x...)"
    }
  },
  "required": [
    "chain",
    "address"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢wallet_approvals(chain, address)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "arbitrum",
        "optimism",
        "polygon",
        "bsc"
      ],
      "description": "EVM chain to audit"
    },
    "address": {
      "type": "string",
      "description": "Wallet address (0x...)"
    }
  },
  "required": [
    "chain",
    "address"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools