# Base ERC-20 Approval Exposure Analyzer

> Base ERC-20 Approval Exposure Analyzer is a paid API for AI agents from signalharness.ai, paid per call via x402, $0.015/call, status unknown (last checked 2026-09-15).

Analyzes caller-supplied transaction or approval data to identify ERC-20 token approval exposures (owner, spender, token, delta, unlimited flag) on the Base network.

## Facts

- Endpoint: POST https://signalharness.ai/api/agent/services/base_erc20_approval_exposure/invoke
- Price: $0.015/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/base-erc-20-approval-exposure-analyzer-6bafcb32
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_8XcHOZl3cDgxGyYiBDK64

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability base-erc-20-approval-exposure-analyzer-6bafcb32 -d '<json body>'
```

Example prompt: Can you analyze this Base transaction data and tell me which spenders received ERC-20 token approvals, how much allowance they were granted, and whether any approvals are unlimited?

## When to prefer this

Use this endpoint when you have raw ERC-20 approval transaction data or event logs from the Base network and need to extract structured approval exposure details (who approved whom, for how much, whether unlimited). Ideal for security audits, pre-signing checks, and DeFi risk summaries. Prefer this over on-chain RPC calls when you already have the data and need fast, structured parsing without live blockchain queries.

## Known failure modes

- Malformed or non-JSON request_json input returns a parse error
- Missing required approval fields in the input data may produce incomplete analysis
- Data describing non-Base networks may be analyzed but flagged or produce unexpected network context
- Overly large input (exceeding 65536 character limit) will be rejected
- The service does not verify on-chain state — analysis is limited to caller-supplied data only

## How this service works

Explore 330 pay-per-call x402 API services and 27 agent-native digital products, with Base USDC pricing, secure Polar checkout, and free discovery.

## Output

Returns a structured JSON analysis containing: a list of approval records (owner, spender, token address, allowance before/after, delta, unlimited flag), a spender exposure summary (total allowance per spender, unlimited flag), and Base network context (chain IDs, fee model, protocol family). Also includes a warning that live on-chain allowances are not queried or revoked.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "request_json": {
   "type": "string",
   "maxLength": 65536,
   "minLength": 2
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "replay": false,
  "result": {
   "warnings": [
    "Does not query or revoke current allowances."
   ],
   "service_id": "base_erc20_approval_exposure",
   "analysis_json": "{\"approvals\":[{\"after\":\"100\",\"before\":\"0\",\"delta\":\"100\",\"owner\":\"0x0000000000000000000000000000000000000001\",\"spender\":\"0x0000000000000000000000000000000000000002\",\"token\":\"0x0000000000000000000000000000000000000001\",\"unlimited\":false}],\"network_context\":{\"accepted_chain_ids\":[\"8453\",\"84532\"],\"deposit_transaction_type\":\"0x7e\",\"fee_model\":\"L2 execution plus caller-supplied L1 data/operator components\",\"protocol_family\":\"OP Stack\"},\"spender_exposure\":[{\"spender\":\"0x0000000000000000000000000000000000000002\",\"total_after\":\"100\",\"unlimited\":false}]}",
   "evidence_scope": "caller_supplied_data",
   "analyzed_network": "base"
  },
  "status": "succeeded",
  "receipt": {
   "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
   "usage": [],
   "status": "succeeded",
   "network": "eip155:8453",
   "artifacts": [],
   "endedAtMs": 0,
   "latencyMs": 0,
   "paymentId": "example-payment",
   "receiptId": "example-receipt",
   "requestId": "example-request",
   "serviceId": "base_erc20_approval_exposure",
   "executionId": "example-execution",
   "startedAtMs": 0,
   "amountAtomic": "15000",
   "resultSha256": "b1af0703709aad699dd6c556c7f91457ae948eae262e3f400e491f395b7ee4c3",
   "serviceVersion": "1.0.0",
   "settlementReference": "0x0000000000000000000000000000000000000000000000000000000000000000"
  },
  "artifacts": [],
  "requestId": "example-request",
  "executionId": "example-execution"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/base-erc-20-approval-exposure-analyzer-6bafcb32/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from signalharness.ai](https://www.zero.xyz/host/signalharness.ai/llms.txt)
