# P0: agent memory and utilities

> Key-value memory without an account, UUID, hash, JWT, JSON validation, time and random

- name: dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank/agent-memory-utils
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank%2Fagent-memory-utils
- tools: https://api.protogrid.dev/v1/servers/dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank%2Fagent-memory-utils/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "agent-memory-utils": {
      "type": "http",
      "url": "https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/mcp/agent-memory-utils"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-1d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,368 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 0 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 3,368 tokens to load them all
- tool set hash: c36b5efdd95ba71878c1100b5c380592
- tools last changed: 2026-11-07T17:50:42.656Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank/agent-memory-utils.svg)](https://protogrid.dev/servers/dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank/agent-memory-utils)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-07 `x402_echo` changed (description)
  - before: 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.
  - after: 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 paid x402 request for your input (GET /x402-echo, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
- 2026-11-07 `x402_ping` changed (description)
  - before: 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.
  - after: 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 paid x402 request for your input (GET /x402-ping, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
- 2026-11-07 `x402_test_purchase` changed (description)
  - before: 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.
  - after: 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 paid x402 request for your input (GET /x402/test, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
- 2026-11-07 `random` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /random, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `time` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /time, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `util_base64` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /util/base64, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `util_json_validate` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /util/json-validate, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns valid, every violation with its path, and the schema keywords it ignored. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `util_jwt_decode` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /util/jwt-decode, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Decode only: the signature is never verified. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `util_ip` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /util/ip, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- 2026-11-07 `util_hash` changed (description)
  - before: 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. First call each day returns the data itself, free; later calls return the paid request.
  - after: 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 paid x402 request for your input (GET /util/hash, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.

Full history: https://api.protogrid.dev/v1/servers/dev.workers.x402-bazaar-rank-worker.x402-bazaar-rank%2Fagent-memory-utils/changes

## Remotes

- https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/mcp/agent-memory-utils (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `kv_get`: 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 paid x402 request for your input (GET /kv/get, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. A missing or expired key is refused (404) before any charge; to see key names use kv_list.
- `kv_list`: 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 paid x402 request for your input (GET /kv/list, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns key names with size and times, no values: read one with kv_get.
- `kv_put`: Returns the paid x402 request that would store your value (POST /kv/put, $0.001 per call; schema linked); this call stores nothing, and a value is stored only if your own client pays that request. 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. POST that JSON body to the URL with an x402 or MPP client to store it. Bad input is refused before any charge. Overwrites an existing key; the key expires after ttl (60 s to 90 days, default 30 days) and there is no delete. Values are stored unencrypted: do not store secrets. Read back with kv_get or kv_list.
- `random`: 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 paid x402 request for your input (GET /random, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `time`: 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 paid x402 request for your input (GET /time, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_base64`: 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 paid x402 request for your input (GET /util/base64, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_hash`: 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 paid x402 request for your input (GET /util/hash, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_ip`: 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 paid x402 request for your input (GET /util/ip, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_json_validate`: 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 paid x402 request for your input (GET /util/json-validate, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Returns valid, every violation with its path, and the schema keywords it ignored. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_jwt_decode`: 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 paid x402 request for your input (GET /util/jwt-decode, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. Decode only: the signature is never verified. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `util_uuid`: Use when you need fresh UUIDs: n (1-100) cryptographically random v4 or time-sortable v7 identifiers, no external call. Returns the paid x402 request for your input (GET /util/uuid, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge. With an access key (Authorization: Bearer p0k_..., buy at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/keys/buy?usd=5) the tool pays the call itself, returns the data and deducts the price. First call each day returns the data itself, free; later calls return the paid request.
- `x402_echo`: 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 paid x402 request for your input (GET /x402-echo, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
- `x402_ping`: 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 paid x402 request for your input (GET /x402-ping, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
- `x402_test_purchase`: 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 paid x402 request for your input (GET /x402/test, $0.001 per call; schema linked). Call that URL with an x402 or MPP client to get the data. Bad input is refused before any charge.
