# TaskMint Field Diff

> TaskMint Field Diff is a paid API for AI agents from taskmint-sign-proof-node22-production.up.railway.app, paid per call via x402, $0.0005/call, status unknown (last checked 2026-10-10).

Compares two object snapshots across specified fields and returns a structured diff showing which fields changed, their before/after values, and a resolved status.

## Facts

- Endpoint: POST https://taskmint-sign-proof-node22-production.up.railway.app/api/agent/field_diff?utm_source=zero.xyz
- Price: $0.0005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/taskmint-field-diff-656a4f0b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ytNWii-VZ5BldPp38PcFV

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 taskmint-field-diff-656a4f0b -d '<json body>'
```

Example prompt: Compare these two product snapshots and tell me which of the fields — price, status, and stock — changed: before was price $49.95, stock 20, status available; after is price $44.95, stock 16, status available.

## When to prefer this

Choose this endpoint when you need a deterministic, structured field-level diff between two object snapshots you already have locally — especially when you want to track specific named fields (price, stock, status, etc.) rather than a full recursive diff. It is ideal for agentic workflows that poll or compare API responses over time and need a reliable, paid-per-call micro-service with retry-safe semantics. Prefer it over general-purpose JSON diff tools when you need structured output with evidence and a clear change flag per field, and when you are already working within the x402/USDC payment infrastructure on Base.

## Known failure modes

- Missing required fields (before, after, fields array) returns a 400 validation error
- fields array exceeding 30 items is rejected
- Invalid or missing request_token format (not 64-char hex) causes rejection
- HTTP 402 returned when payment is required but not authorized
- HTTP 202 with uncertain transport requires retry with identical body and same request_token — do not resubmit with a new token
- Results expire after 24 hours; retrieval after expiry fails
- Using a contract wallet instead of an externally owned wallet causes payment failure

## How this service works

Exact native USDC on Base; externally owned wallets only. Generate a private 32-byte random request_token for each new job, persist the entire body, and reuse it for challenge/retry and recovery. The token grants result access. Do not log or share it. HTTP 202 or an uncertain transport failure requires recovery with the identical body without a signature, never a new purchase. Results expire after 24 hours. Ten bounded deterministic services. Local execution is free; hosted jobs require customer-authorized payment only when billable.

## Output

A JSON object with a 'result' containing: a boolean 'changed' flag, a 'status' field (e.g. 'resolved'), a 'changes' array listing each changed field with its before and after values, a 'flags' array for anomalies, 'checked_fields' listing all fields evaluated, 'evidence' with the full before/after snapshots, 'freshness' note, and a 'version' string. Payment state is also returned.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "payload": {
   "type": "object",
   "required": [
    "before",
    "after",
    "fields"
   ],
   "properties": {
    "after": {
     "type": "object"
    },
    "before": {
     "type": "object"
    },
    "fields": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "maxItems": 30,
     "minItems": 1
    }
   },
   "additionalProperties": false
  },
  "request_token": {
   "type": "string",
   "pattern": "^[a-f0-9]{64}$",
   "description": "Generate 32 cryptographically random bytes as lowercase hex for each new job. Keep this private result credential and reuse the identical body for retries. Replace the synthetic example token."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "state": "paid",
  "result": {
   "flags": [],
   "status": "resolved",
   "changed": true,
   "changes": [
    {
     "after": 44.95,
     "field": "price",
     "before": 49.95
    },
    {
     "after": 16,
     "field": "stock",
     "before": 20
    }
   ],
   "version": "0.5.0",
   "evidence": {
    "after": {
     "price": 44.95,
     "stock": 16,
     "status": "available"
    },
    "before": {
     "price": 49.95,
     "stock": 20,
     "status": "available"
    }
   },
   "freshness": "Client-supplied snapshots only. No live source check.",
   "checked_fields": [
    "price",
    "status",
    "stock"
   ]
  },
  "service": "field_diff"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/taskmint-field-diff-656a4f0b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from taskmint-sign-proof-node22-production.up.railway.app](https://www.zero.xyz/host/taskmint-sign-proof-node22-production.up.railway.app/llms.txt)
