# Korp TxCert

> Korp TxCert is a paid API for AI agents from korp-txcert-sepolia.mute-cell-557f.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-18).

Validates an unsigned EVM transaction against a caller-defined policy and issues a short-lived certificate only if the transaction passes all rules.

## Facts

- Endpoint: POST https://korp-txcert-sepolia.mute-cell-557f.workers.dev/v1/certify?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-18
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/korp-txcert-5fc4de06
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Vaza4o8LQ0HsqdyPbESxP

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 korp-txcert-5fc4de06 -d '<json body>'
```

Example prompt: Before you sign that swap transaction, run it through Korp TxCert to check it against my policy: the sender is 0xAbC...123, it's on chain 84532, the expected action is 'swap', allow only recipient 0xDef...456, cap native value at 0 wei, and block unlimited approvals — only sign if it gets a PASS certificate.

## When to prefer this

Use Korp TxCert when an AI agent needs a pre-signing policy gate before submitting EVM transactions — especially in autonomous or semi-autonomous workflows where spending guardrails, recipient whitelisting, and ERC20 approval controls must be enforced programmatically. Prefer this over simulation tools when you need a policy conformity attestation (certificate) rather than gas estimation or revert prediction. It is specifically suited for Sepolia (chain 84532) testnet workflows and agent safety layers where human oversight is limited.

## Known failure modes

- Transaction violates spending limit — FAIL returned with rule breach detail
- Recipient not in allowedRecipients list — FAIL
- Unlimited ERC20 approval detected when allowUnlimitedApproval is false — FAIL
- Unknown calldata present when allowUnknownCalls is false — FAIL
- chainId mismatch or unsupported chain — request rejected
- Malformed address or calldata — schema validation error
- Certificate expiry — short-lived cert must be used promptly or re-requested
- Payment failure — x402 payment of $0.01 USDC not settled, request blocked

## How this service works

Check an unsigned EVM transaction before an AI agent signs it. Enforces spending limits, recipient restrictions, ERC20 approval rules, unlimited approval protection, and calldata policy. Only PASS receives a short-lived policy certificate. This is policy conformity, not simulation or a safety guarantee.

## Output

Returns a policy conformity result (PASS or FAIL) against the submitted rules. A PASS includes a short-lived policy certificate that the agent can use to authorize signing. A FAIL indicates which policy rule was violated. Does not simulate execution or guarantee on-chain safety — only attests that the transaction conforms to the specified policy at check time.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "from": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$"
  },
  "policy": {
   "type": "object",
   "required": [
    "expectedAction",
    "allowedRecipients",
    "allowedSpenders",
    "maxNativeValueWei",
    "maxTokenSpend",
    "allowUnlimitedApproval",
    "allowUnknownCalls"
   ],
   "properties": {
    "maxTokenSpend": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "token",
       "amount"
      ],
      "properties": {
       "token": {
        "type": "string",
        "pattern": "^0x[0-9a-fA-F]{40}$"
       },
       "amount": {
        "type": "string",
        "pattern": "^(0|[1-9][0-9]*)$",
        "maxLength": 78
       }
      },
      "additionalProperties": false
     },
     "maxItems": 100
    },
    "expectedAction": {
     "enum": [
      "native-transfer",
      "transfer",
      "transferFrom",
      "approve",
      "swap",
      "unknown"
     ],
     "type": "string"
    },
    "allowedSpenders": {
     "type": "array",
     "items": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$"
     },
     "maxItems": 100
    },
    "allowUnknownCalls": {
     "type": "boolean"
    },
    "allowedRecipients": {
     "type": "array",
     "items": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$"
     },
     "maxItems": 100
    },
    "maxNativeValueWei": {
     "type": "string",
     "pattern": "^(0|[1-9][0-9]*)$",
     "maxLength": 78
    },
    "allowUnlimitedApproval": {
     "type": "boolean"
    }
   },
   "additionalProperties": false
  },
  "chainId": {
   "type": "number",
   "const": 84532
  },
  "transaction": {
   "type": "object",
   "required": [
    "to",
    "data",
    "value"
   ],
   "properties": {
    "to": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]{40}$"
    },
    "data": {
     "type": "string",
     "pattern": "^0x(?:[0-9a-fA-F]{2})*$",
     "maxLength": 8194
    },
    "nonce": {
     "type": "string",
     "pattern": "^(0|[1-9][0-9]*)$",
     "maxLength": 78
    },
    "value": {
     "type": "string",
     "pattern": "^(0|[1-9][0-9]*)$",
     "maxLength": 78
    }
   },
   "additionalProperties": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/korp-txcert-5fc4de06/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from korp-txcert-sepolia.mute-cell-557f.workers.dev](https://www.zero.xyz/host/korp-txcert-sepolia.mute-cell-557f.workers.dev/llms.txt)
