Key-value memory without an account, UUID, hash, JWT, JSON validation, time and random
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use when an agent needs a value it stored earlier with /kv/put: returns the text (and parsed json when it was stored as JSON), size. Returns the exact paid x402 request for your input (GET /kv/get, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
Key, 1-128 characters from A-Z a-z 0-9 . _ : / -
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http agent-memory-utils https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/mcp/agent-memory-utils
Use when an agent needs a value it stored earlier with /kv/put: returns the text (and parsed json when it was stored as JSON), size. Returns the exact paid x402 request for your input (GET /kv/get, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| key* | string | Key, 1-128 characters from A-Z a-z 0-9 . _ : / - |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{1,128}$",
"description": "Key, 1-128 characters from A-Z a-z 0-9 . _ : / -"
}
}
}Use when an agent needs to see what it has stored: lists up to 100 keys (optionally under prefix) in the namespace of the paying wallet with size, stored_at and expires_at. Returns the exact paid x402 request for your input (GET /kv/list, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Keys per page |
| cursor | string | cursor from the previous page |
| prefix | string | Only keys starting with this |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Keys per page"
},
"cursor": {
"type": "string",
"description": "cursor from the previous page"
},
"prefix": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{0,128}$",
"description": "Only keys starting with this"
}
}
}Use when an agent needs memory between runs without an account: store value (text or JSON, up to 8 KB) under key in a private namespace keyed to the wallet that pays. Returns the exact paid x402 request for your input (POST /kv/put, $0.001 per call), with a link to the full schema; POST that JSON body to the URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| key* | string | Key, 1-128 characters from A-Z a-z 0-9 . _ : / - |
| ttl | integer | Seconds to keep the key |
| value* | string | object | array | number | boolean | Text, or JSON stored as text (max 8 KB) |
{
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9._:/-]{1,128}$",
"description": "Key, 1-128 characters from A-Z a-z 0-9 . _ : / -"
},
"ttl": {
"type": "integer",
"default": 2592000,
"maximum": 7776000,
"minimum": 60,
"description": "Seconds to keep the key"
},
"value": {
"type": [
"string",
"object",
"array",
"number",
"boolean"
],
"description": "Text, or JSON stored as text (max 8 KB)"
}
}
}Use when you need publicly verifiable random numbers: n integers in [min,max], a pick from choices=a,b,c or a unique draw, derived from a drand (League of Entropy) beacon round with round. Returns the exact paid x402 request for your input (GET /random, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| n | integer | how many values |
| max | integer | largest integer (inclusive) |
| min | integer | smallest integer (inclusive) |
| salt | string | your label mixed into the derivation |
| round | integer | a drand quicknet round that has already been published; default latest |
| unique | boolean | no repeated values (draw without replacement) |
| choices | string | comma-separated items to pick from instead of min/max (up to 100) |
Use when you need the current UTC time from a server clock, the local time, UTC offset and DST flag in up to 10 IANA time zones (tz=Europe/Berlin,Asia/Tokyo). Returns the exact paid x402 request for your input (GET /time, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| at | string | time to convert: ISO 8601 (2026-10-05T09:00, with or without offset) or unix seconds/milliseconds; default now |
| to | string | IANA zone(s) to convert at= into, comma-separated, up to 10 |
| tz | string | IANA zone(s), comma-separated, up to 10 (e.g. Europe/Berlin,Asia/Tokyo). With at= and no offset in it, the first zone is the zone of that wall time |
{
"type": "object",
"required": [],
"properties": {
"at": {
"type": "string",
"description": "time to convert: ISO 8601 (2026-10-05T09:00, with or without offset) or unix seconds/milliseconds; default now"
},
"to": {
"type": "string",
"description": "IANA zone(s) to convert at= into, comma-separated, up to 10"
},
"tz": {
"type": "string",
"description": "IANA zone(s), comma-separated, up to 10 (e.g. Europe/Berlin,Asia/Tokyo). With at= and no offset in it, the first zone is the zone of that wall time"
}
}
}Use when you need base64 in or out: encode UTF-8 text to base64 (standard or url_safe) or decode base64 back to text (hex when the bytes are not UTF-8), up to 64 KB, no external call. Returns the exact paid x402 request for your input (GET /util/base64, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| input* | string | Text to encode, or base64 to decode |
| action | string | encode or decode |
| url_safe | boolean | Use the url-safe alphabet without padding |
{
"type": "object",
"required": [
"input"
],
"properties": {
"input": {
"type": "string",
"maxLength": 65536,
"description": "Text to encode, or base64 to decode"
},
"action": {
"enum": [
"encode",
"decode"
],
"type": "string",
"default": "encode",
"description": "encode or decode"
},
"url_safe": {
"type": "boolean",
"default": false,
"description": "Use the url-safe alphabet without padding"
}
}
}Use when you need a checksum or digest of a string: sha256 (default), sha1, sha384, sha512 and md5 of text given as utf8, hex or base64 (up to 64 KB), hex digests, no external call. Returns the exact paid x402 request for your input (GET /util/hash, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| algo | string | Comma list of sha256, sha1, sha384, sha512, md5 or all |
| text* | string | Input to hash |
| encoding | string | How text is encoded |
{
"type": "object",
"required": [
"text"
],
"properties": {
"algo": {
"type": "string",
"default": "sha256",
"description": "Comma list of sha256, sha1, sha384, sha512, md5 or all"
},
"text": {
"type": "string",
"maxLength": 65536,
"description": "Input to hash"
},
"encoding": {
"enum": [
"utf8",
"hex",
"base64"
],
"type": "string",
"default": "utf8",
"description": "How text is encoded"
}
}
}Use when an agent needs to know how it is seen from outside: its public IP plus the country, region, city, ASN, AS organization. Returns the exact paid x402 request for your input (GET /util/ip, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Use when you must check that a JSON document fits a schema before acting on it: validates json against a JSON Schema subset. Returns the exact paid x402 request for your input (GET /util/json-validate, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| json* | string | The document (JSON text; an object in a POST body is accepted too) |
| schema* | string | JSON Schema (subset) as JSON text |
{
"type": "object",
"required": [
"json",
"schema"
],
"properties": {
"json": {
"type": "string",
"maxLength": 65536,
"description": "The document (JSON text; an object in a POST body is accepted too)"
},
"schema": {
"type": "string",
"maxLength": 65536,
"description": "JSON Schema (subset) as JSON text"
}
}
}Use when you need to inspect a JWT without a key: decoded header and payload, alg, kid, iat/nbf/exp as ISO times and whether it is expired now. Returns the exact paid x402 request for your input (GET /util/jwt-decode, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| token* | string | JWT header.payload.signature |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"maxLength": 65536,
"description": "JWT header.payload.signature"
}
}
}Use when you need fresh UUIDs: n (1-100) random v4 or time-sortable v7 identifiers, generated on Cloudflare's edge with crypto randomness, no external call, under 100 ms. Returns the exact paid x402 request for your input (GET /util/uuid, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With a P0 access key (header Authorization: Bearer p0k_…, buy one at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) this tool makes the paid call itself and returns the data, deducting the listed price.
| Argument | Type | Description |
|---|---|---|
| n | integer | How many |
| version | integer | 4 random, 7 time-sortable |
{
"type": "object",
"required": [],
"properties": {
"n": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "How many"
},
"version": {
"enum": [
4,
7
],
"type": "integer",
"default": 4,
"description": "4 random, 7 time-sortable"
}
}
}Use for debugging an x402 client: pay $0.001 in USDC (or USDT0 on Arbitrum) on any network in accepts and get back what the server received: the decoded payment payload. Returns the exact paid x402 request for your input (GET /x402-echo, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Use for testing that your x402 client can pay and settle a real payment end to end at the smallest useful price: $0.001 in USDC (or USDT0 on Arbitrum) on any network listed in accepts. Returns the exact paid x402 request for your input (GET /x402-ping, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Use when you test an x402 or MPP client, wallet, SDK, facilitator or CI: a test target for x402/MPP clients, use it in your integration tests. Returns the exact paid x402 request for your input (GET /x402/test, $0.001 per call), with a link to the full schema; call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
| Argument | Type | Description |
|---|---|---|
| dry | boolean | dry=1: free list of every accepted rail, nothing charged |
| msg | string | Any text; echoed back in echo.query. Any other query parameter or a POST body (hashed) works too |
{
"type": "object",
"required": [],
"properties": {
"dry": {
"type": "boolean",
"description": "dry=1: free list of every accepted rail, nothing charged"
},
"msg": {
"type": "string",
"maxLength": 500,
"description": "Any text; echoed back in echo.query. Any other query parameter or a POST body (hashed) works too"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
{
"type": "object",
"required": [],
"properties": {
"n": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "how many values"
},
"max": {
"type": "integer",
"default": 100,
"description": "largest integer (inclusive)"
},
"min": {
"type": "integer",
"default": 1,
"description": "smallest integer (inclusive)"
},
"salt": {
"type": "string",
"pattern": "^[A-Za-z0-9._-]{0,64}$",
"description": "your label mixed into the derivation"
},
"round": {
"type": "integer",
"minimum": 1,
"description": "a drand quicknet round that has already been published; default latest"
},
"unique": {
"type": "boolean",
"default": false,
"description": "no repeated values (draw without replacement)"
},
"choices": {
"type": "string",
"description": "comma-separated items to pick from instead of min/max (up to 100)"
}
}
}