HoldKit

Idempotency keys, locks, timers, and inboxes for agents over MCP. No payments.

사용해야 할까요

품질 및 안전성

B
설명 품질
93%
스키마 완전성
73%
이름 품질
53%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (16)

  • LOWTool 'inbox.ack' description lacks action verbinbox.ack에서
  • LOWTool 'timer.set' description lacks action verbtimer.set에서
  • LOWTool 'keys.create' doesn't follow camelCase/snake_casekeys.create에서
  • LOWTool 'inbox.create' doesn't follow camelCase/snake_caseinbox.create에서
  • LOWTool 'inbox.poll' doesn't follow camelCase/snake_caseinbox.poll에서
  • LOWTool 'inbox.ack' doesn't follow camelCase/snake_caseinbox.ack에서
  • LOWTool 'inbox.wait' doesn't follow camelCase/snake_caseinbox.wait에서
  • LOWTool 'timer.set' doesn't follow camelCase/snake_casetimer.set에서
  • LOWTool 'timer.cancel' doesn't follow camelCase/snake_casetimer.cancel에서
  • LOWTool 'lock.acquire' doesn't follow camelCase/snake_caselock.acquire에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,345토큰 (도구 정의)
~627 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.05%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 14개