Wren Pre-sign Check
Server Details
Check a tx, EIP-712 payload, text or Base token before your agent signs. Paid per call over x402.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct artifact: a transaction/typed-data payload (presign_check), a free fixed sample (presign_demo), an untrusted text string (screen_text) and a Base ERC-20 address (token_facts). The one real boundary blur is text: presign_check accepts 'untrusted text' and reports injected instructions, which overlaps with screen_text's purpose, so an agent could reasonably pick either. The 'call before signing' vs 'call before acting on text' framing mostly resolves it.
All names are snake_case with clear two-word structure, and the presign_ prefix neatly groups the paired check/demo tools. It is not a single consistent verb_noun scheme, however: presign_check and screen_text are verb-led while token_facts is noun-led. Minor deviation, still highly readable.
Four tools is lean but each maps to a real pre-action safety need, so nothing feels padded out for its own sake. The one questionable inclusion is presign_demo, a free documentation/sample endpoint rather than a genuine capability, though it does earn a modest place by showing the report shape before a paid call. No obvious missing companion tool at this scope.
The safety-check surface is well covered for its stated domain: payload decoding and findings, text injection screening with decoding layers, and token bytecode/privilege facts. Minor gaps remain, e.g. no way to inspect the spender/recipient address itself (contract vs EOA, verification status, reputation) beyond lookalike flagging against a caller-supplied known list. Coverage is otherwise coherent for a pre-sign gate.
Available Tools
4 toolspresign_checkPre-sign checkARead-onlyIdempotentInspect
Call before your agent signs anything. Send tx fields (to, data, value, chainId), or typedData (an eth_signTypedData_v4 payload), or untrusted text, with an optional wren-guard policy. Returns block, review or allow, the decoded call and every finding: unlimited approvals, permits, Permit2, setApprovalForAll, EIP-7702 delegation, deployments, injected instructions and, with a policy, unknown recipients, caps and lookalike addresses. Static check, not a simulation. Costs $0.01 USDC on Base per call, paid over x402 (MCP transport): an unpaid call returns a PaymentRequired result, and an x402 MCP client retries with the payment in _meta["x402/payment"]. You sign one USDC authorisation for exactly that price to Wren's wallet: no approvals. Bad input is rejected before anything is charged.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Destination contract or recipient (0x address); omit for a deployment | |
| data | No | Calldata, 0x hex | |
| text | No | Untrusted text that asked for this action, screened for injected instructions | |
| value | No | Native value in wei (decimal or 0x hex) | |
| policy | No | Optional wren-guard config: allowlist, spenders, caps and flags | |
| chainId | No | Chain id, decimal | |
| typedData | No | eth_signTypedData_v4 payload (instead of a transaction) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses this is a static check rather than a simulation, the exact category of findings returned, the $0.01 USDC x402 payment mechanics, that unpaid calls return PaymentRequired and retry via _meta["x402/payment"], that only a single-scoped authorisation is signed with no approvals, and that invalid input is rejected before charging.
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?
Dense but front-loaded, leading with the trigger and the inputs before the return values and payment mechanics. The payment sentences are long but each carries non-obvious operational information an agent needs to avoid failing on an unpaid call.
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 no output schema and a nested policy object, the description still explains the verdict vocabulary, what the findings cover, and the payment/error path. An agent has everything it needs to call this correctly without opening anything else.
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 adds real value the schema lacks: it explains that tx fields, typedData and untrusted text are alternative input modes and that the policy is optional, conveying the mutual-exclusivity structure a flat schema can't.
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: a pre-signature static check that takes tx fields, typedData or text and returns block/review/allow with decoded call and findings. It's clear apart from siblings, though it never names presign_demo or screen_text to carve out the boundary (the untrusted-text parameter overlaps notably with screen_text).
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?
'Call before your agent signs anything' gives a clear trigger, and it specifies which input mode to send (tx fields, typedData, or text) with an optional policy. It stops short of explicit when-not guidance or naming the sibling tools an agent should reach for instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
presign_demoFree pre-sign exampleARead-onlyIdempotentInspect
Free. Runs one fixed example (an unlimited approval, setApprovalForAll, a never-expiring permit, an EIP-7702 delegation, an injected memo or a normal x402 payment) through the same checker, so you can see the report shape before paying for presign_check.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Which fixed example to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context: the tool is free, uses fixed examples, runs through the same checker, and is meant to preview report shape.
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 front-loaded sentence that starts with the key qualifier 'Free.' It is efficient, though the long parenthetical listing all six examples makes it somewhat dense.
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 one-parameter demo tool with full enum coverage and clear annotations, the description supplies everything needed to call it correctly. It explains cost, purpose, relationship to presign_check, and that the output is a sample report shape.
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 enum values are documented, so the schema carries most parameter meaning. The description still adds readable semantics for each example, such as 'never-expiring permit' and 'normal x402 payment,' which clarifies what the enum selects.
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 gives a specific verb and resource: it runs a fixed example through the same checker used by presign_check. It also differentiates the tool from its sibling by emphasizing that this is a free demo intended to show the report shape before paying.
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 explicitly states the usage condition: use this to see the report shape before paying for presign_check. The alternative is named directly, so the agent can distinguish demo usage from real paid checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_textPrompt-injection screenARead-onlyIdempotentInspect
Call before your agent acts on untrusted text (a reply, DM, web page, tool output or memory). Returns safe, suspicious or malicious with the matched patterns, after decoding base64, hex, Morse, leetspeak, ROT13, reversed and hidden Unicode. Optional known: your own addresses, to flag poisoned lookalikes. Deterministic rules, no LLM. Costs $0.003 USDC on Base per call, paid over x402 (MCP transport): an unpaid call returns a PaymentRequired result, and an x402 MCP client retries with the payment in _meta["x402/payment"]. You sign one USDC authorisation for exactly that price to Wren's wallet: no approvals. Bad input is rejected before anything is charged.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The untrusted text to screen (up to 16,384 characters) | |
| known | No | Optional: your own 0x addresses, to flag poisoned lookalikes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the classification outputs, the decoding methods covered, deterministic non-LLM rules, the exact price, x402 payment retry behavior, and that invalid input is rejected before charging. These details are crucial for an agent to invoke the paid tool correctly and are not contradicted by the read-only/idempotent 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 front-loaded with when to call and what is returned, then covers decoding, the optional parameter, determinism, pricing, and payment flow. For a paid x402 tool, the payment and validation details earn their place rather than feeling like padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values, and it does: safe/suspicious/malicious plus matched patterns. It also explains payment behavior and input validation, leaving no major gap 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 both parameters are already documented in the schema. The description restates that `known` is for your own addresses to flag poisoned lookalikes and that `text` is untrusted, but adds no format or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: screen untrusted text and return safe, suspicious, or malicious with matched patterns. The purpose is immediately understandable and operationally distinct from the sibling names. It does not explicitly contrast itself with siblings, which keeps it from a 5.
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 clear triggering context: call before acting on untrusted text such as a reply, DM, web page, tool output, or memory. It does not mention when not to use it or name alternatives, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_factsBase token contract factsARead-onlyIdempotentInspect
Call before your agent approves, receives or sends a Base ERC-20. Returns code size, EIP-7702 delegation, name, symbol, decimals, supply, proxy and upgrade admin, owner or renounced, and which privileged functions the bytecode has (mint, pause, blocklist, fees, limits, trading switch, upgrade). Facts only: no grades, not investment advice. If Base can't be read, nothing is charged. Costs $0.01 USDC on Base per call, paid over x402 (MCP transport): an unpaid call returns a PaymentRequired result, and an x402 MCP client retries with the payment in _meta["x402/payment"]. You sign one USDC authorisation for exactly that price to Wren's wallet: no approvals. Bad input is rejected before anything is charged.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The token contract's 0x address on Base |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, but the description adds materially more: the x402 payment flow, the $0.01 USDC cost, the PaymentRequired result and retry mechanism, the no-approval authorization, the no-charge-on-failure policy, and the fact that bad input is rejected before charging. These are behaviors an agent cannot infer from annotations alone.
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 key trigger condition is front-loaded, and the payload details are packed into dense but purposeful sentences. The payment and x402 mechanics are necessarily verbose, but the description remains well-organized and mostly free of waste.
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 no output schema, the description takes responsibility for enumerating the returned facts (code size, EIP-7702 delegation, name, symbol, decimals, supply, proxy/admin, owner, privileged functions), and it fully explains the payment/retry behavior. An agent has everything needed to call this correctly and understand the response.
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?
There is one parameter and schema description coverage is 100%, so the schema already defines the address argument. The description does not add format, validation, or semantic detail about the address parameter beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns contract facts (code size, delegation, token metadata, privileges) for a Base ERC-20. That is far more specific than the tool name, but it never names or distinguishes itself from the sibling tools (presign_check, screen_text), so it stops short of a 5.
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?
"Call before your agent approves, receives or sends a Base ERC-20" gives an explicit trigger condition. It also frames the scope as "facts only: no grades, not investment advice." There are no named alternatives or explicit exclusions, so it is clear context without full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
presign_check - First observed
presign_demo - First observed
screen_text - First observed
token_facts
Related MCP Connectors
Check a Base contract, transaction or web page before you act. Free pricing, paid per call in USDC.
Use before signing an EVM tx or EIP-712 message: risk flags + verdict. Informational, no simulation
Pre-transaction token risk checks for autonomous agents on six chains. Read-only; paid via x402.
Pre-trade token safety checks for AI agents on Solana and Base. x402 USDC per call, no key.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to run pre-sign risk checks on transactions, approvals, EIP-712 signatures, token addresses, wallet approvals, sanctions screening, and prompt-injection texts, returning green/orange/red verdicts with machine-readable reason codes before signing.1AGPL 3.0
- AlicenseAqualityBmaintenanceEnables agents to run pre-signature security checks: identifying who can replace a Solana program's code or control an EVM contract's upgrades, surfacing dependency advisories for lockfiles, scanning public repos before release, and setting 30-day signed-webhook alerts on changes. Calls are paid per use in USDC over x402 from a wallet with per-call caps and a session budget.830 npmMIT
- AlicenseNot gradedqualityCmaintenanceChecks token contract safety for honeypot, tax, proxy, blacklist, ownership risks, and returns a risk score, enabling rug-pull protection for agents via pay-per-call x402 micropayments.MIT
- FlicenseAqualityCmaintenanceAgent-Level Transaction Safety Oracle. Before an AI agent signs a blockchain transaction, it returns a SAFE/UNSAFE verdict with a SENTINEL Score (AAA-D) and risk flags. Pay-per-call $0.005 USDC via x402 on Base.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.