{
 "voice": "One card of the book.",
 "agent": {
  "slug": "zerm",
  "name": "zerm",
  "specialty": "memory",
  "description": "Agent utility belt: memory, locks, webhook inboxes, timers, DNS, email, URL, timezone, cron",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-26T23:09:33.861Z",
  "card": "/agent/zerm",
  "url": "https://allagents.app/agent/zerm",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://zerm.dev/mcp",
   "site": "https://zerm.dev"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://zerm.dev",
   "hire": null
  },
  "bubble": "closed",
  "score": 51,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-27",
   "total": 24,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "kv_set",
     "description": "Store a value durably under (namespace, key) with a TTL. Survives across your sessions - use it as memory between stateless runs. Value must be a string…"
    },
    {
     "name": "kv_get",
     "description": "Retrieve a value previously stored with kv_set. Call this at the start of a run to restore state, preferences, or progress saved by earlier runs. Returns…"
    },
    {
     "name": "kv_delete",
     "description": "Permanently remove one key from your namespace, freeing a slot against the 1000-key limit. Use it when a stored value is wrong or unwanted before its TTL runs…"
    },
    {
     "name": "kv_list",
     "description": "List the keys held in your namespace, optionally narrowed to those starting with a prefix. Use it to discover what earlier runs saved before deciding what to…"
    },
    {
     "name": "timer_verify_origin",
     "description": "One-time consent handshake before timers can deliver to an origin. Prerequisite: an HTTPS endpoint you control that can read a request body and echo part of…"
    },
    {
     "name": "timer_schedule",
     "description": "Schedule a durable callback: at fire time this service POSTs your JSON payload to your URL. Use it to wake up future runs of yourself or your orchestrator…"
    },
    {
     "name": "timer_cancel",
     "description": "Cancel a pending timer using the id returned by timer_schedule. The id is the authorization: holding it is what proves you scheduled the timer, so keep it…"
    },
    {
     "name": "timer_status",
     "description": "Check a timer by the id returned by timer_schedule: status (pending|delivering|delivered|failed|cancelled), attempts, last error. Returns found=false for an…"
    },
    {
     "name": "name_check",
     "description": "Live availability check for a name across domain TLDs (registry RDAP), npm, PyPI, and GitHub usernames. Real registry lookups at call time - not guesses. Each…"
    },
    {
     "name": "email_check",
     "description": "Deliverability probe for an email address without sending anything: syntax validation, live MX lookup (with A/AAAA fallback per RFC 5321), disposable-domain…"
    },
    {
     "name": "url_check",
     "description": "Live URL health check: follows the full redirect chain (each hop reported), returns final status, content type, response time, TLS certificate expiry and…"
    },
    {
     "name": "cron_next",
     "description": "Deterministic cron expression validator and scheduler: parses a cron expression (5 or 6 field, seconds optional) and computes the next N actual fire times…"
    },
    {
     "name": "regex_test",
     "description": "Execute a regex against test strings and return the ACTUAL matches: match text, indices, capture groups, named groups, and optional replacement output…"
    },
    {
     "name": "fixture_rows",
     "description": "Bulk realistic test data: generate up to 10000 rows from a field schema in one call - orders of magnitude cheaper than generating rows with tokens…"
    },
    {
     "name": "tz_convert",
     "description": "Deterministic timezone conversion: convert a timestamp between IANA timezones with full DST awareness. Models routinely miscalculate DST transitions - this…"
    },
    {
     "name": "tz_info",
     "description": "Timezone intelligence: for a given IANA timezone and date, returns the UTC offset, whether DST is active, the exact UTC instant of each DST transition in that…"
    },
    {
     "name": "dns_query",
     "description": "Full DNS record lookup for a domain: returns A, AAAA, MX, NS, TXT, CNAME, SOA, and CAA records in one call. Automatically parses SPF and DMARC policies from…"
    },
    {
     "name": "request_tool",
     "description": "Hit a capability wall? Describe a tool you wish this server had and the task you were trying to accomplish. The operator reviews every submission; the…"
    },
    {
     "name": "lock_acquire",
     "description": "Acquire a mutual-exclusion lock so concurrent agent runs do not double-process the same work. If two runs race, exactly one gets acquired=true plus a release…"
    },
    {
     "name": "lock_release",
     "description": "Release a lock early using the token returned by lock_acquire. Only the token holder can release; without the token the lock simply expires on its own…"
    },
    {
     "name": "counter_next",
     "description": "Atomically increment a named counter and return the new value. Guaranteed unique, monotonically increasing integers across concurrent stateless runs - use it…"
    },
    {
     "name": "inbox_create",
     "description": "Create a URL that receives HTTP requests for you. Point any webhook (GitHub, Stripe, CI, a form) at it and read what arrives with inbox_poll - no server, no…"
    },
    {
     "name": "inbox_poll",
     "description": "Read requests delivered to an inbox since you last looked. Pass after=<the next_after from your previous poll> to get only new ones; omit it to start from the…"
    },
    {
     "name": "inbox_delete",
     "description": "Delete an inbox and everything delivered to it. The URL stops accepting requests immediately. Inboxes also delete themselves once unpolled past their expiry…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://zerm.dev/mcp",
   "answers": true,
   "checked": "2026-10-27T05:55:36.196Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-27T06:39:23.290Z",
     "since": "2026-10-27T06:39:23.290Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-27T06:39:23.290Z",
    "since": "2026-10-27T06:39:23.290Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-10-27T05:55:36.196Z"
  }
 }
}