# EffectGuard Preflight – Agent Operation Deduplication & Idempotency Check

> EffectGuard Preflight – Agent Operation Deduplication & Idempotency Check is a paid API for AI agents from effectguard-x402-experiment.onrender.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-13).

Checks whether a proposed agent tool call should be executed, reused from cache, blocked as a duplicate, or held for review — before the agent spends money or causes side effects.

## Facts

- Endpoint: POST https://effectguard-x402-experiment.onrender.com/v1/preflight?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/effectguard-preflight-agent-operation-deduplication-idempotency-check-4bd80fd4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_oMjb3pTWya6wuLcIIHzhE

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 effectguard-preflight-agent-operation-deduplication-idempotency-check-4bd80fd4 -d '<json body>'
```

Example prompt: Before I run the 'send_invoice' tool for account acct_123 in session sess_abc, check whether agent agent-7 already ran it with the same arguments in the last 30 seconds — use request ID req_20240601_001 and block it if it's a duplicate.

## When to prefer this

Use this endpoint when multiple AI agents share a single account and may attempt the same tool call concurrently or in rapid succession, and you need to prevent duplicate side effects (double payments, double sends, repeated writes). Prefer this over client-side deduplication when the agents run in separate processes or threads and cannot share in-process state. It is especially valuable before irreversible or expensive operations where exactly-once semantics matter.

## Known failure modes

- Missing required fields (request_id, agent_id, session_id, account_id, tool, arguments) returns 422 validation error
- Expired or invalid Bearer token returns 401 unauthorized
- request_id shorter than 8 characters returns validation error
- max_age_ms outside 0–3600000 range returns validation error
- Service cold-start on Render may cause elevated latency
- WAIT decision means another agent is mid-execution and caller must poll or retry
- REVIEW decision means human review is required before proceeding

## Output

Returns a decision enum (EXECUTE, REUSE, BLOCK_DUPLICATE, WAIT, or REVIEW) with a human-readable reason, an optional cached result and its age in milliseconds, an effect_id for tracking, the current state of the operation, and the match method used to reach the decision.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "title": "PreflightRequest",
     "required": [
      "request_id",
      "agent_id",
      "session_id",
      "account_id",
      "tool",
      "arguments"
     ],
     "properties": {
      "tool": {
       "type": "string",
       "title": "Tool",
       "maxLength": 128,
       "minLength": 1
      },
      "intent": {
       "type": "string",
       "title": "Intent",
       "default": "",
       "maxLength": 2000
      },
      "agent_id": {
       "type": "string",
       "title": "Agent Id",
       "maxLength": 128,
       "minLength": 1
      },
      "arguments": {
       "type": "object",
       "title": "Arguments",
       "additionalProperties": {}
      },
      "account_id": {
       "type": "string",
       "title": "Account Id",
       "maxLength": 128,
       "minLength": 1
      },
      "max_age_ms": {
       "type": "integer",
       "title": "Max Age Ms",
       "default": 30000,
       "maximum": 3600000,
       "minimum": 0
      },
      "request_id": {
       "type": "string",
       "title": "Request Id",
       "maxLength": 128,
       "minLength": 8
      },
      "session_id": {
       "type": "string",
       "title": "Session Id",
       "maxLength": 128,
       "minLength": 1
      }
     },
     "additionalProperties": false
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST",
      "PUT",
      "PATCH"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "title": "PreflightResponse",
     "required": [
      "decision",
      "reason"
     ],
     "properties": {
      "state": {
       "anyOf": [
        {
         "type": "string"
        },
        {
         "type": "null"
        }
       ],
       "title": "State",
       "default": null
      },
      "age_ms": {
       "anyOf": [
        {
         "type": "integer"
        },
        {
        
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/effectguard-preflight-agent-operation-deduplication-idempotency-check-4bd80fd4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from effectguard-x402-experiment.onrender.com](https://www.zero.xyz/host/effectguard-x402-experiment.onrender.com/llms.txt)
