Skip to content

feat: add Veriql action provider (pre-payment and pre-signature checks) - #1602

Open
josephtossi wants to merge 1 commit into
coinbase:mainfrom
josephtossi:feat/veriql-action-provider
Open

josephtossi wants to merge 1 commit into
coinbase:mainfrom
josephtossi:feat/veriql-action-provider

Conversation

@josephtossi

Copy link
Copy Markdown

Adds a veriql action provider with three actions for agents that move money:

  • check_payee: call this before a transfer. It checks the recipient against US Treasury OFAC SDN, the Drain Watch scam-address list, and Tether/Circle freeze status (read from the issuer contract). It returns do_not_pay, no_known_risk or incomplete.
  • check_signature: call this before signing. It decodes approve, Permit, Permit2, EIP-7702 delegations, transfers and revokes, and returns block, warn or allow. An undecodable payload returns block.
  • check_denylist: a free, keyless lookup against the same lists.

The paid actions pay $0.005 per call over x402 from the agent's existing wallet (Base or Solana USDC), using the same @x402/fetch client and registerExactEvmScheme/registerExactSvmScheme wiring as the existing x402 provider. A payment policy refuses any option above a configurable cap (default 0.01 USDC) before signing. An optional API key (VERIQL_API_KEY) skips x402 entirely.

Any failure is returned as an error telling the agent to treat the input as unverified. A failure never reads as a clean result.

The provider is read-only: it never requests keys and never signs anything except the capped x402 payment.

Checks

  • npx jest src/action-providers/veriql: 12 passed
  • eslint, prettier --check and tsc --noEmit: clean
  • Changeset included (@coinbase/agentkit patch)

A standalone build of the same provider is published as veriql-agentkit for anyone on an older AgentKit.

Side note, unrelated to this provider

While testing, the analytics call that the action decorator fires (to cca-lite.coinbase.com) is not awaited or caught, so when that request fails the process logs an unhandled promise rejection. Happy to open a separate issue if useful.

@cb-heimdall

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Oct 26, 2026
Three actions an agent runs before money moves: check_payee (OFAC, Drain Watch, USDT/USDC issuer freezes), check_signature (decodes approvals, Permit/Permit2, EIP-7702 delegations), and a free check_denylist. Paid calls settle over x402 from the agent's own wallet with a price cap applied before signing, or use an API key.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action provider New action provider documentation Improvements or additions to documentation typescript

Development

Successfully merging this pull request may close these issues.

2 participants