HoldKit
Idempotency keys, locks, timers, and inboxes for agents over MCP. No payments.
使うべきか
品質と安全性
検出事項(16)
- LOWinbox.ack 内
- LOWtimer.set 内
- LOWkeys.create 内
- LOWinbox.create 内
- LOWinbox.poll 内
- LOWinbox.ack 内
- LOWinbox.wait 内
- LOWtimer.set 内
- LOWtimer.cancel 内
- LOWlock.acquire 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"holdkit": {
"url": "https://holdkit.peerfoundry.ai/mcp"
}
}
}リモートエンドポイント
https://holdkit.peerfoundry.ai/mcpstreamable-httpできること
ツール一覧
ツール(14)
⚪keys.create
Mint a pf_ caller key bound to one HoldKit namespace.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡inbox.create
Create an inbox. Returns webhook and A2A URLs.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢inbox.poll(inbox_id, cursor, limit)
Read inbox events after a cursor.
入力スキーマ
{
"type": "object",
"properties": {
"inbox_id": {
"type": "string"
},
"cursor": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
}
},
"required": [
"inbox_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴inbox.ack(inbox_id, event_ids)
Mark inbox events done.
入力スキーマ
{
"type": "object",
"properties": {
"inbox_id": {
"type": "string"
},
"event_ids": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"inbox_id",
"event_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢inbox.wait(inbox_id, cursor, block_ms)
Poll an inbox. block_ms is accepted and capped at 0 in this MVP, so the call returns current events.
入力スキーマ
{
"type": "object",
"properties": {
"inbox_id": {
"type": "string"
},
"cursor": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"block_ms": {
"type": "integer",
"minimum": 0,
"maximum": 25000
}
},
"required": [
"inbox_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪timer.set(delay_s, inbox_id, url, payload)
Schedule a durable timer. Delivery URLs must be public https.
入力スキーマ
{
"type": "object",
"properties": {
"delay_s": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"inbox_id": {
"type": "string"
},
"url": {
"type": "string"
},
"payload": {
"type": "string"
}
},
"required": [
"delay_s",
"payload"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴timer.cancel(timer_id)
Cancel a timer.
入力スキーマ
{
"type": "object",
"properties": {
"timer_id": {
"type": "string"
}
},
"required": [
"timer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪lock.acquire(name, ttl_s, owner)
Take a lease lock. Returns a fencing token.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"ttl_s": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 3600
},
"owner": {
"type": "string"
}
},
"required": [
"name",
"ttl_s"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴lock.release(name, fencing)
Release a lock with its fencing token.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fencing": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"name",
"fencing"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪idem.begin(key, scope, fingerprint, ttl_s)
Start an idempotency key or return the prior outcome. fingerprint is a hex hash.
入力スキーマ
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"scope": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"fingerprint": {
"type": "string",
"pattern": "^[a-f0-9]{32,128}$"
},
"ttl_s": {
"type": "integer",
"minimum": 1,
"maximum": 86400
}
},
"required": [
"key",
"scope",
"fingerprint"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪idem.commit(key, result_ref, scope, owner)
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.
入力スキーマ
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"result_ref": {
"type": "string"
},
"scope": {
"type": "string",
"maxLength": 64
},
"owner": {
"type": "string"
}
},
"required": [
"key",
"result_ref"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kv.get(key)
Read a small value.
入力スキーマ
{
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡kv.set(key, value, ttl_s)
Write a small value with a TTL. Emails and card numbers are rejected.
入力スキーマ
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
},
"ttl_s": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"key",
"value",
"ttl_s"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kv.delete(key)
Delete a value.
入力スキーマ
{
"type": "object",
"properties": {
"key": {
"type": "string"
}
},
"required": [
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス