POST /api/color-paletteGenerate a coordinated palette from a base color using a named color-theory scheme: complementary (2 colors), analogous (3), triadic (3), tetradic (4), split-complementary (3), or monochromatic (5 lightness variants). Returns each color in hex, rgb, hsl, and oklch so the agent can drop them straight into any framework. Hue rotation happens in HSL — matches Adobe Color / Coolors expectations, not perceptual Oklab geometry.
| Field | Type | Description |
|---|---|---|
color * | string | Base color (any notation parseColor accepts). |
scheme * | string | One of: complementary, analogous, triadic, tetradic, split-complementary, monochromatic. |
{
"base": "#1d4ed8",
"scheme": "triadic",
"colors": [
{
"hex": "#1d4ed8",
"hsl": {
"h": 224.04,
"s": 76.42,
"l": 48.04
}
},
{
"hex": "#d81d4e",
"hsl": {
"h": 344.04,
"s": 76.42,
"l": 48.04
}
},
{
"hex": "#4ed81d",
"hsl": {
"h": 104.04,
"s": 76.42,
"l": 48.04
}
}
]
}
curl -i -X POST https://agent402.tools/api/color-palette \
-H "Content-Type: application/json" \
-d '{"color":"#1d4ed8","scheme":"triadic"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/color-palette", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"color": "#1d4ed8",
"scheme": "triadic"
}),
});
This is a pure-CPU tool, so an agent without a wallet can pay with proof-of-work instead of USDC: fetch a challenge, solve the sha256 puzzle (16 leading zero bits — a fraction of a second of CPU, no money, no AI tokens), and resend with the X-Pow-Solution header.
import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=color-palette")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/color-palette", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"color":"#1d4ed8","scheme":"triadic"}) });
GET /api/gov-dataSearch 300,000+ US government datasets on catalog.data.gov (CKAN): titles, publishing org, formats, and direct resource …
GET /api/weather-alertsActive National Weather Service alerts for a US state as clean JSON: event, severity, headline, affected areas, onset/ex…
GET /api/earthquakesReal-time USGS earthquake feed: magnitude, place, time, depth, coordinates. Live government data, no key. ?minMag=4.5&pe…