{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_d5sxjwrpde3v","handle":"holdkit","url":"https://wellknown.network/agents/holdkit","links":{"self":"https://wellknown.network/agents/holdkit/record.json","html":"https://wellknown.network/agents/holdkit","markdown":"https://wellknown.network/agents/holdkit/record.md","api":"https://wellknown.network/api/v1/agents/holdkit","status":"https://wellknown.network/api/v1/agents/holdkit/status","claim":"https://wellknown.network/agents/holdkit/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/holdkit/claim.json","badge":"https://wellknown.network/agents/holdkit/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/holdkit/history","tools":"https://wellknown.network/api/v1/agents/holdkit/tools"},"ard":{"identifier":"urn:air:holdkit.peerfoundry.ai:server:holdkit","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"HoldKit","summary":"Idempotency keys, locks, timers, and inboxes for agents over MCP. No payments.","description":"Idempotency keys, locks, timers, and inboxes for agents over MCP. No payments.","publisher":{"name":"ai.peerfoundry","url":null},"homepage":"https://peerfoundry.ai/","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://holdkit.peerfoundry.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-31T10:19:48.068803Z","publishedAt":"2026-10-31T10:19:48.068803Z","registryName":"ai.peerfoundry/holdkit"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.email","name":"Email","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.814,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":0.51,"provenance":"derived"}],"categories":["commerce","communication","dev","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-11-04T02:28:01.367Z","lastProbedAt":"2026-11-04T02:28:01.367Z","statusComputedAt":"2026-11-04T02:32:29.420Z","reliability30d":{"probes":11,"successRate":1,"p50Ms":117,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":11,"ok":11,"authBoundaryOk":0,"serviceOk":11,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-04T02:28:01.367Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace. The raw key is shown once. Pass this key on every later tools/call."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.poll","description":"Read inbox events after a cursor. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.ack","description":"Mark inbox events done. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.cancel","description":"Cancel a timer. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.release","description":"Release a lock with its fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent. Call keys.create "},{"name":"kv.get","description":"Read a small value. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.delete","description":"Delete a value. Call keys.create once. Pass the key on every tools/call."}],"toolCount":14,"toolsHash":"8f373470b07eca284b4460c72a14257d9e805fe98dbfbde33e1fb74014280406","serverName":"holdkit","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-03T18:26:13.930Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":85,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace. The raw key is shown once. Pass this key on every later tools/call."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.poll","description":"Read inbox events after a cursor. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.ack","description":"Mark inbox events done. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.cancel","description":"Cancel a timer. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.release","description":"Release a lock with its fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent. Call keys.create "},{"name":"kv.get","description":"Read a small value. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.delete","description":"Delete a value. Call keys.create once. Pass the key on every tools/call."}],"toolCount":14,"toolsHash":"8f373470b07eca284b4460c72a14257d9e805fe98dbfbde33e1fb74014280406","serverName":"holdkit","capabilities":["tools","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-03T10:30:13.086Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":69,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-03T02:26:39.381Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":60,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T18:24:45.677Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":79,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T10:21:49.768Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":97,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T02:24:36.382Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":140,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T18:27:02.500Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":109,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T10:28:56.137Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":59,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T02:27:12.843Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":45,"error":null,"detail":{"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs."},{"name":"inbox.poll","description":"Read inbox events after a cursor."},{"name":"inbox.ack","description":"Mark inbox events done."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https."},{"name":"timer.cancel","description":"Cancel a timer."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token."},{"name":"lock.release","description":"Release a lock with its fencing token."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent."},{"name":"kv.get","description":"Read a small value."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected."},{"name":"kv.delete","description":"Delete a value."}],"toolCount":14,"toolsHash":"ddf1afebaf8aff22aa6bd058ea804b8946137b24839a01ba3550e7c1550af5fd","serverName":"holdkit","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"keys.create","description":"Mint a pf_ caller key bound to one HoldKit namespace. The raw key is shown once. Pass this key on every later tools/call."},{"name":"inbox.create","description":"Create an inbox. Returns webhook and A2A URLs. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.poll","description":"Read inbox events after a cursor. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.ack","description":"Mark inbox events done. Call keys.create once. Pass the key on every tools/call."},{"name":"inbox.wait","description":"Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.set","description":"Schedule a durable timer. Delivery URLs must be public https. Call keys.create once. Pass the key on every tools/call."},{"name":"timer.cancel","description":"Cancel a timer. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.acquire","description":"Take a lease lock. Returns a fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"lock.release","description":"Release a lock with its fencing token. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.begin","description":"Start an idempotency key or return the prior outcome. fingerprint is a hex hash. Call keys.create once. Pass the key on every tools/call."},{"name":"idem.commit","description":"Store the outcome reference for an idempotency key. scope (max 64) and owner are optional. When owner is omitted, the caller key hash is sent. Call keys.create "},{"name":"kv.get","description":"Read a small value. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.set","description":"Write a small value with a TTL. Emails and card numbers are rejected. Call keys.create once. Pass the key on every tools/call."},{"name":"kv.delete","description":"Delete a value. Call keys.create once. Pass the key on every tools/call."}],"package":null,"toolSurface":{"id":"ts_rmd5ntwn5xrr","endpointId":"ep_7q8fjpn55vgg","hash":"8f373470b07eca284b4460c72a14257d9e805fe98dbfbde33e1fb74014280406","toolCount":14,"serverName":"holdkit","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-03T18:26:13.929Z","lastSeenAt":"2026-11-04T02:28:01.361Z","observations":2,"toolNames":["keys.create","inbox.create","inbox.poll","inbox.ack","inbox.wait","timer.set","timer.cancel","lock.acquire","lock.release","idem.begin","idem.commit","kv.get","kv.set","kv.delete"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_7q8fjpn55vgg","url":"https://holdkit.peerfoundry.ai/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-11-04T02:28:01.371Z","auth":{"observedAt":"2026-11-04T02:28:01.391Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-11-04T02:28:01.402Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"peerfoundry.ai","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-31T08:44:37.000Z","validTo":"2027-01-29T09:44:34.000Z","daysToExpiry":86,"sanCount":3,"fingerprint256":"0D:87:EF:10:93:FF:D7:91:40:2E:F4:CC:9B:43:92:89:19:94:B4:32:0E:2D:A3:07:95:54:F5:86:85:0E:FA:0B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.peerfoundry/holdkit","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.peerfoundry%2Fholdkit","firstSeenAt":"2026-10-31T17:21:50.164Z","fetchedAt":"2026-10-31T17:21:50.164Z","normalizedAt":"2026-10-31T17:21:50.164Z"}]},"firstSeenAt":"2026-10-31T17:21:50.164Z","updatedAt":"2026-11-04T02:33:40.950Z"}