HoldKit
ai.peerfoundry/holdkitVersion 0.1.0Idempotency keys, locks, timers, and inboxes for agents over MCP. No payments.
Status
Responds222 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:32 UTC
- Latency
- 222 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://holdkit.peerfoundry.ai/mcpResponds222 msNo sign-in
Claude Code
claude mcp add --transport http holdkit https://holdkit.peerfoundry.ai/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: holdkit
Remote MCP server URL: https://holdkit.peerfoundry.ai/mcpCursor
{
"mcpServers": {
"holdkit": {
"url": "https://holdkit.peerfoundry.ai/mcp"
}
}
}VS Code
code --add-mcp '{"name":"holdkit","type":"http","url":"https://holdkit.peerfoundry.ai/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
14 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
idem.beginStart an idempotency key or return the prior outcome. fingerprint is a hex hash. Call keys.create once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
idem.commitStore 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 once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
inbox.ackMark inbox events done. Call keys.create once. Pass caller_key on every later tools/call. | Yes | No | Not declared | Not declared |
inbox.createCreate an inbox. Returns webhook and A2A URLs. Call keys.create once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
inbox.pollRead inbox events after a cursor. Call keys.create once. Pass caller_key on every later tools/call. | No | Yes | Not declared | Not declared |
inbox.waitPoll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events. Call keys.create once. Pass caller_key on every later tools/call. | No | Yes | Not declared | Not declared |
keys.createMint a pf_ caller key bound to one HoldKit namespace. The raw key is shown once. Pass this key on every later tools/call. Send it as the caller_key argument. | No | No | Not declared | Not declared |
kv.deleteDelete a value. Call keys.create once. Pass caller_key on every later tools/call. | Yes | No | Not declared | Not declared |
kv.getRead a small value. Call keys.create once. Pass caller_key on every later tools/call. | No | Yes | Not declared | Not declared |
kv.setWrite a small value with a TTL. Emails and card numbers are rejected. Call keys.create once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
lock.acquireTake a lease lock. Returns a fencing token. Call keys.create once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
lock.releaseRelease a lock with its fencing token. Call keys.create once. Pass caller_key on every later tools/call. | Yes | No | Not declared | Not declared |
timer.cancelCancel a timer. Call keys.create once. Pass caller_key on every later tools/call. | Yes | No | Not declared | Not declared |
timer.setSchedule a durable timer. Delivery URLs must be public https. Call keys.create once. Pass caller_key on every later tools/call. | No | No | Not declared | Not declared |
Details
- Registry status
- Active
- Published
- Oct 31, 2026
- Updated
- Oct 31, 2026
- Repository
- Not given
- Categories (suggested)
- CommunicationData and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared