Agent402 / tools / feedback

Rate a call you paid for

$0.001 per call · USDC via x402 · POST /api/feedback

Tell this server whether a call you paid for delivered what it promised. Bound to the receipt: give it the settlement transaction from that call's PAYMENT-RESPONSE (or Payment-Receipt) header and a verdict of "good" or "bad", and only the wallet the ledger records as having paid for that exact call can write it - so a rating here is always a real customer about a real purchase. One verdict per settlement transaction (sending another replaces yours, it never stacks). A "bad" verdict requires a reason of at least ten characters and is logged for a human with the sha256 of the bytes that call actually served, so the complaint names a specific answer rather than a bad day. Your words are stored for the operator and are never published; the public tally is counts only. Requires an EIP-3009 payment from the same wallet; the $0.001 is the settlement floor, not a charge for complaining, and every refusal is free.

TRY IN PLAYGROUND →

Input

FieldTypeDescription
tx *stringSettlement transaction of the call you are rating, as carried in that response's PAYMENT-RESPONSE (x402) or Payment-Receipt (MPP) header.
verdict *string"good" (it delivered what it promised) or "bad" (it did not).
reasonstringWhat happened, in your own words. Optional on "good", required on "bad" (10 characters minimum, 1000 maximum). Stored for the operator, never published.

Example output

{
  "recorded": true,
  "replaced": false,
  "item": "crypto-price",
  "verdict": "good",
  "settlementTx": "0x2f1fecade9bd945e7817c11e5a34cafe6b349dd8c92a7587efed1de476bddfeb",
  "settledAt": "2026-09-03T15:16:06.000Z",
  "amountUsd": 0.01,
  "responseSha256": "7d2a9b1c4e6f8a0b2c4d6e8f0a1b3c5d7e9f1a3b5c7d9e1f3a5b7c9d1e3f5a7b",
  "note": "responseSha256 is sha256 over the exact JSON bytes that call returned. It identifies the answer your verdict is about."
}

Try it - see the 402 challenge (free)

curl -i -X POST https://agent402.tools/api/feedback \
  -H "Content-Type: application/json" \
  -d '{"tx":"0x2f1fecade9bd945e7817c11e5a34cafe6b349dd8c92a7587efed1de476bddfeb","verdict":"good"}'

The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
import { metaTitle, metaDescription } from "./seo-meta.js";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/feedback", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "tx": "0x2f1fecade9bd945e7817c11e5a34cafe6b349dd8c92a7587efed1de476bddfeb",
    "verdict": "good"
  }),
});
Wallet-only. This tool reaches the network/browser/storage, so it is paid in USDC via x402 (no proof-of-work tier).

Related tools

x402 market pulse

FREE w/ compute · or $0.001 · GET /api/x402-market-pulse

Live cross-provider x402 market sentiment. topProviders: the top x402 sellers ecosystem-wide, ranked by REAL on-chain ac…

try in playground →

x402 quote

$0.002 · GET /api/x402-quote

Probe any URL and decode its HTTP 402 payment requirements (price, asset, network, pay-to) into clean JSON - what an age…

try in playground →

USDC balance

$0.003 · GET /api/usdc-balance

Read the USDC balance of any address on Base, Polygon, Arbitrum, Optimism, Ethereum, Monad, Celo, Avalanche, or Sei. Rea…

try in playground →