Quickstart

Two ways to pay. One meter.

util.beauty is a focused utility API — browser rendering and crypto primitives — priced in credits (1 credit = $0.001). Agents pay per request with x402 (USDC on Base). Teams buy prepaid credits with a card or USDC and call with an API key.

What you get

Path A · Agent (x402)

No account. Wallet with USDC on Base (chain 8453). No ETH for gas — EIP-3009 transferWithAuthorization; the facilitator submits the tx. Utilities run about $0.001–$0.007 per call.

Claude Code skill

mkdir -p ~/.claude/skills/util-beauty && \
  curl -fsSL https://util.beauty/skill.md \
  -o ~/.claude/skills/util-beauty/SKILL.md

Any agent harness

curl https://util.beauty/prompt.txt

Paste into the system prompt of any harness that can run shell or Node.

Node (~60s)

npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
import { createPublicClient, http } from "viem";
import { base } from "viem/chains";

const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY);
const signer = toClientEvmSigner(
  account,
  createPublicClient({ chain: base, transport: http("https://mainnet.base.org") }),
);
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(signer));
const paidFetch = wrapFetchWithPayment(fetch, client);

const res = await paidFetch("https://util.beauty/v1/crypto/hash", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({ function: "sha256", input: "hello" }),
});
console.log(await res.json());

First request gets 402; the wrapper signs and retries. Settlement tx hash returns in X-PAYMENT-RESPONSE. Preview prices free: GET /v1/x402/quote?utility=crypto.hash.

Path B · Prepaid (teams)

API key + credit balance. Best for dashboards, CI, and repeated team use. Self-serve today:

  1. Card (recommended for humans): open /credits, pick a bundle, pay with Stripe. You receive an API key once on the success page.
  2. USDC (x402): POST /v1/system/register (1 credit) for a key, then POST /v1/credits/purchase with {"sku":"builder"} — or purchase alone to create account + key + credits in one step.
curl -sS -X POST https://util.beauty/v1/crypto/hash \
  -H "Authorization: Bearer $UB_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"function":"sha256","input":"hello"}'

Bundles: starter (1k/$1) · builder (5k/$4.50) · scale (25k/$20) · pro (100k/$70). Catalog: /v1/credits/bundles.

Billing rules

MCP

Thin discover-then-call server: list_utilitiesdescribe_utilitycall_utility. Install configs on /mcp.

export X402_PRIVATE_KEY=0x...
npx -y util-beauty-mcp

See also