# Recurring Spend Guard for AI/MCP Agents

> Recurring Spend Guard for AI/MCP Agents is a paid API for AI agents from api.400860.xyz, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-13).

Returns a structured policy pack for preventing unauthorized repeat-spend by AI/MCP agents, including budget windows, approved resource lists, receipt gates, anomaly stop rules, and an executable TypeScript decision function.

## Facts

- Endpoint: GET https://api.400860.xyz/v1/agent/recurring-spend-guard
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/recurring-spend-guard-for-ai-mcp-agents-fe1d1b26
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_1ykkmuVLLe-O9rP3Fn8H3

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 recurring-spend-guard-for-ai-mcp-agents-fe1d1b26
```

Example prompt: Give me the full recurring-spend guard policy pack for my MCP agent setup — I need the budget window, approved resource list, receipt gate rules, anomaly stop conditions, ledger schema, and the executable TypeScript decision function so my agent can't make unauthorized repeat payments.

## When to prefer this

Choose this endpoint when you need a complete, ready-to-use policy framework for governing AI or MCP agent repeat-spend scenarios, especially when you want an executable TypeScript guard function alongside formal policy documents (budget windows, receipt gates, anomaly stops) rather than building these rules from scratch.

## Known failure modes

- Payment not completed — x402 payment of $0.01 USDC required before content is returned
- Invalid or missing query parameters — returns 400 with schema validation error
- Upstream content unavailable — returns 503 or empty response
- Payment gateway timeout — agent should retry after confirming payment status

## How this service works

400860 Radar is an AI-operated x402 Web3 opportunity network for humans and agents.

## Output

A structured policy pack containing: a budget window definition, list of approved resources, receipt gate requirements, anomaly stop rules, a ledger schema for tracking agent spend, the MCP repeat-payment policy, and a ready-to-run TypeScript decision function that agents can invoke to approve or deny recurring expenditures.

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "additionalProperties": true
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "title": {
       "type": "string"
      },
      "nextStep": {
       "type": "string"
      },
      "productId": {
       "type": "string"
      },
      "expectedOutput": {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      "buyerPreparation": {
       "type": "object",
       "properties": {
        "payNow": {
         "type": "string"
        },
        "objective": {
         "type": "string"
        },
        "notRevenue": {
         "type": "array",
         "items": {
          "type": "string"
         }
        },
        "fundingAction": {
         "type": "string"
        },
        "readinessLoop": {
         "type": "string"
        },
        "revenueSummary": {
         "type": "string"
        },
        "checkoutSession": {
         "type": "string"
        },
        "firstSaleDryRun": {
         "type": "string"
        },
        "paymentRecovery": {
         "type": "string"
        },
        "activationBundle": {
         "type": "string"
        },
        "successCondition": {
         "type": "string"
        },
        "realPaymentCommand": {
         "type": "string"
        }
       },
       "additionalProperties": true
      }
     },
     "additionalProperties": true
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "title": "Agent recurring spend guard",
  "nextStep": "/v1/x402/facilitator-settlement-reconcile",
  "productId": "agent_recurring_spend_guard",
  "expectedOutput": [
   "guardId",
   "recurrencePolicy",
   "approvedResource",
   "budgetWindow",
   "repeatDecisionRules",
   "receiptGate",
   "anomalyStopRules",
   "typescriptRecurringGuard",
   "mcpClientPolicy",
   "ledgerSchema",
   "simulationCases",
   "installSteps",
   "verification",
   "repeatTrigger"
  ],
  "buyerPreparation": {
   "payNow": "https://api.400860.xyz/v1/buyer/pay-now?address=0xBUYER_ADDRESS",
   "objective": "Clear funding/readiness before attempting a real x402 payment.",
   "notRevenue": [
    "402 probes",
    "funding-action reads",
    "checkout-session reads",
    "readiness-loop reads",
    "pay-now reads",
    "downloads",
    "manifest views"
   ],
   "focusedDryRun": "curl -i https://api.400860.xyz/v1/agent/recurring-spend-guard",
   "fundingAction": "https://api.400860.xyz/v1/buyer/funding-action",
   "machinePayNow": {
    "price": "$0.01",
    "method": "GET",
    "resource": "https://api.400860.xyz/v1/agent/recurring-spend-guard",
    "payNowUrl": "https://api.400860.xyz/v1/buyer/pay-now?channel=bazaar-agent_recurring_spend_guard",
    "productId": "agent_recurring_spend_guard",
    "nextAction": "Run payCommand once from a local buyer runtime with a funded Base USDC wallet, then verify revenueSummary instead of treating discovery, 402 probes, or downloads as revenue.",
    "notRevenue": [
     "manifest reads",
     "payment quote reads",
     "pay-now reads",
     "402 probes",
     "downloads",
     "self-test payments"
    ],
    "payCommand": "RADAR_TARGET=https://api.400860.xyz/v1/agent/recurring-spend-guard RADAR_METHOD=GET X402_PAY=true X402_PRIVATE_KEY=0xYOUR_FUNDED_X402_PRIVATE_KEY npx --yes --package https://x402.400860.xyz/downloads/400860-x402-client/400860-x402-client-0.1.4.tgz 400860-x402 pay",
    "recoveryUrl": "https://api.400860.xyz/v1/buyer/payment-recovery?address=0xBUYER_ADDRESS&channel=bazaar-agent_recurring_spend_guard",
    "buyerGuideUrl": "https://api.400860.xyz/v1/open-source-agent/buyer-guide",
    "verificationUrl": "https://api.400860.xyz/v1/revenue/summary",
    "successCondition": "eventCount > 0 && hasExternalRevenue === true after a paid protected handler returns for agent_recurring_spend_guard."
   },
   "readinessLoop": "https://api.400860.xyz/v1/buyer/readiness-loop?address=0xBUYER_ADDRESS",
   "r
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/recurring-spend-guard-for-ai-mcp-agents-fe1d1b26/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.400860.xyz](https://www.zero.xyz/host/api.400860.xyz/llms.txt)
