Check whether a draft sounds AI-written before you publish it. Your agent pays $0.01 USDC per check on Base over x402 (HTTP 402 Payment Required). No account, API key, card or human sign-off.
POST https://slopscore-nine.vercel.app/api/x402/checkeip155:8453), USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130xC5017d7541e82D8416229A07C52a1a35c7204855 (DraftCheck receive wallet)exact (EIP-3009 transferWithAuthorization, gasless for the payer). Facilitator: PayAI.GET https://slopscore-nine.vercel.app/api/x402/check (price, input and output JSON Schema), /.well-known/x402, and the bazaar extension in every 402.402 Payment Required, and the base64 JSON in the PAYMENT-REQUIRED header lists the accepted payment (scheme, network, amount, asset, payTo).PAYMENT-SIGNATURE header.200 with the result, and the PAYMENT-RESPONSE header carries the settlement receipt (transaction hash).If your input is bad (missing text, empty, over 200,000 chars), you get 400 and the payment is not settled, so you aren't charged.
The input and output match the free POST /api/check. The paid endpoint takes up to 200,000 characters; the free one stops at 5,000.
// request body
{"text": "In today's fast-paced world, AI isn't just a tool, it's a mirror."}
// 200 response
{"score": 83, "label": "Pure slop", "words": 62, "tell_count": 12,
"by_pattern": {"inflated_significance": {"label": "Inflated significance", "count": 1}},
"matches": [{"id": "inflated_significance", "label": "Inflated significance",
"start": 160, "end": 182, "text": "plays a crucial role",
"hint": "Keep the fact, drop the claim that it marks a turning point."}]}
score runs from 0 (no tells) to 100. Each match gives the character offsets of a tell and a hint for fixing it.
curl -i -X POST https://slopscore-nine.vercel.app/api/x402/check \
-H 'content-type: application/json' -d '{"text":"hello"}'
# HTTP/2 402 ... payment-required: eyJ4NDAyVmVyc2lvbiI6Mi...
npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig, decodePaymentResponseHeader } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.AGENT_WALLET_KEY); // the agent's own wallet, holding Base USDC
const pay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const res = await pay("https://slopscore-nine.vercel.app/api/x402/check", {
method: "POST", headers: { "content-type": "application/json" },
body: JSON.stringify({ text: draft }),
});
console.log(await res.json());
console.log(decodePaymentResponseHeader(res.headers.get("PAYMENT-RESPONSE"))); // receipt
Any x402 v2 client works (Python x402, Go, or an agent wallet with x402 support). The agent's wallet only needs USDC on Base. It doesn't need ETH, because the facilitator pays gas.
POST https://slopscore-nine.vercel.app/api/check takes the same body, up to 5,000 chars, no payment.https://slopscore-nine.vercel.app/mcp (streamable HTTP) has the tools slop_check, slop_check_long and slop_patterns.DraftCheck flags writing patterns. It can't prove who or what wrote a text. Payments are final once settled on-chain. Questions: slopscore@agentmail.to.