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"
}커뮤니티
증거