Gzip compress
POST /api/gzipCompress a string with gzip (RFC 1952) and return it as base64. Send POST /api/gzip with the required field input and pay $0.001 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with algorithm, inputBytes, outputBytes, ratio and output.
Reports input bytes, output bytes, and the compression ratio so you can decide if it was worth doing. Input can be plain text (utf8) or already-binary content (base64 or hex).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
input | string | yes | Content to compress (max 10MB after decoding) Also accepted as text, data, str, string, body, content. |
inputFormat | string | no | How `input` is encoded: utf8 (default), base64, or hex |
level | number | no | Compression level 1-9 (default 9 = best ratio, slower) |
Example request
curl -i -X POST https://agent402.tools/api/gzip \
-H "Content-Type: application/json" \
-d '{"input":"hello hello hello hello hello hello hello","inputFormat":"utf8"}'
Without payment this returns HTTP 402 Payment Required with the exact price for gzip; any x402 v2 or MPP client pays it and retries.
Example response
{
"algorithm": "gzip",
"inputBytes": 41,
"outputBytes": 21,
"ratio": 0.4878,
"output": "H4sIAA…"
}
| Field | Type | Always present | In the example |
|---|---|---|---|
algorithm | string | yes | gzip |
inputBytes | number | yes | 41 |
outputBytes | number | yes | 21 |
ratio | number | yes | 0.4878 |
output | string | yes | H4sIAA… |
From an MCP client
catalog.call {
"slug": "gzip",
"params": {
"input": "hello hello hello hello hello hello hello",
"inputFormat": "utf8"
}
}
On the hosted connector at https://agent402.tools/mcp, catalog.call runs gzip free (rate-limited, no wallet). Local install: npx -y agent402-mcp.
Errors and behavior
inputis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Free tier: no outbound network call leaves the server for this tool, so proof-of-work (16 leading zero bits of sha256) pays for it.
- A
GETorHEADto /api/gzip returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
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";
const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/gzip", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"input": "hello hello hello hello hello hello hello",
"inputFormat": "utf8"
}),
});
No wallet? Pay with compute
Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), 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=gzip")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/gzip", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"input":"hello hello hello hello hello hello hello","inputFormat":"utf8"}) });
Related tools
Brotli compress
POST /api/brotli-compressCompress a string with Brotli (RFC 7932) and return it as base64. Brotli typically beats gzip by 15-25% on text - useful…
Compression compare
POST /api/compress-compareRun the same input through gzip, brotli, and raw deflate at max settings and report each one's output size and ratio. Us…
Gzip decompress
POST /api/gunzipDecompress a base64-encoded gzip payload. Returns the result as utf8 (text) or base64 (binary). Refuses to expand past 1…
A2A Agent Card validate
POST /api/a2a-card-validateValidate an A2A (Agent2Agent protocol) Agent Card: required fields, skill shape, transport names, capability flags - spe…
Amortization schedule
POST /api/amortizationBuild the full per-period amortization schedule for a fully-amortizing loan. Each row reports the period number, payment…
Annuity present/future value
POST /api/annuityPresent and future value of a level annuity (equal periodic payments). Supports an ordinary annuity (payments at period …