ZenVault
Wake-ups, webhook inboxes, TTL memory, watches and human approval for agents. Paid per call.
使うべきか
品質と安全性
検出事項(10)
- LOWcreate_drip 内
- LOWnotarize 内
- LOWcreate_inbox 内
- LOWcollect_messages 内
- LOWcreate_queue 内
- LOWqueue_push 内
- LOWqueue_ack 内
- LOWcreate_watch 内
- LOWextend_resource 内
- LOWrequest_feature 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"zenvault": {
"url": "https://api.zenvault.eu/mcp"
}
}
}リモートエンドポイント
https://api.zenvault.eu/mcpstreamable-httpできること
ツール一覧
ツール(44)
🟡create_wakeup(at, url, payload)
Schedule a webhook call at a future time (one-shot). Your agent can die; the call still happens.
入力スキーマ
{
"type": "object",
"properties": {
"at": {
"type": "string",
"description": "ISO-8601 time to fire"
},
"url": {
"type": "string",
"description": "webhook URL to call"
},
"payload": {
"type": "object",
"description": "JSON to include"
}
},
"required": [
"at",
"url"
]
}🟡create_schedule(cron, url, payload, days)
Recurring webhook on a cron expression until the prepaid days run out.
入力スキーマ
{
"type": "object",
"properties": {
"cron": {
"type": "string",
"description": "cron expression, e.g. 0 7 * * *"
},
"url": {
"type": "string",
"description": "webhook URL"
},
"payload": {
"type": "object",
"description": ""
},
"days": {
"type": "number",
"description": "prepaid days"
}
},
"required": [
"cron",
"url"
]
}🟡create_deadman(url, interval_seconds, days, apprise_url)
Dead-man switch: if you stop checking in, we fire your alert webhook.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "alert webhook"
},
"interval_seconds": {
"type": "number",
"description": "max time between check-ins"
},
"days": {
"type": "number",
"description": ""
},
"apprise_url": {
"type": "string",
"description": "optional human notification target"
}
},
"required": [
"url"
]
}🟢checkin_deadman(id)
Check in to a dead-man switch so it does not fire.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "dead-man switch id"
}
},
"required": [
"id"
]
}🟡delayed_delivery(at, url, payload)
Hand over a payload now; we POST it to the target at a future moment.
入力スキーマ
{
"type": "object",
"properties": {
"at": {
"type": "string",
"description": "ISO-8601"
},
"url": {
"type": "string",
"description": "target URL"
},
"payload": {
"type": "object",
"description": ""
}
},
"required": [
"at",
"url"
]
}🟡create_drip(url, items, rate_seconds)
Dump up to 100 items now; we deliver them to your webhook at a fixed rate.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "webhook"
},
"items": {
"type": "array",
"description": "items to drip"
},
"rate_seconds": {
"type": "number",
"description": ""
}
},
"required": [
"url",
"items"
]
}⚪notarize(sha256, data, note)
Signed proof that a hash (or your data) existed at this moment.
入力スキーマ
{
"type": "object",
"properties": {
"sha256": {
"type": "string",
"description": "hex digest"
},
"data": {
"type": "string",
"description": "raw data to hash instead"
},
"note": {
"type": "string",
"description": ""
}
},
"required": []
}🟢attested_fetch(url, include_content)
Fetch a URL and return content plus a signed receipt binding url, status, content hash and time.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL to fetch"
},
"include_content": {
"type": "boolean"
}
},
"required": [
"url"
]
}🟡create_inbox(days, label)
Public URL that buffers inbound webhooks until you collect them.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "prepaid days"
},
"label": {
"type": "string",
"description": ""
}
},
"required": []
}⚪collect_messages(id, all)
Collect buffered messages from an inbox, bin, front door or form.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "resource id"
},
"all": {
"type": "boolean",
"description": "include already-collected"
}
},
"required": [
"id"
]
}🟡create_frontdoor(target, days, replay_hours)
Durable front door: buffers webhooks and forwards them to your gateway with retry-until-ack.
入力スキーマ
{
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "your gateway URL"
},
"days": {
"type": "number",
"description": ""
},
"replay_hours": {
"type": "number",
"description": ""
}
},
"required": [
"target"
]
}⚪request_approval(action, detail, timeout_seconds, webhook, apprise_url)
Ask a human to approve or deny an action; returns a URL for them and a signed verdict for you. Times out as denied.
入力スキーマ
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "what you want to do"
},
"detail": {
"type": "string",
"description": "context for the human"
},
"timeout_seconds": {
"type": "number",
"description": ""
},
"webhook": {
"type": "string",
"description": "called with the verdict"
},
"apprise_url": {
"type": "string",
"description": "ping the human here"
}
},
"required": [
"action"
]
}🟢check_approval(id)
Check whether a human approved or denied your request.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "approval id"
}
},
"required": [
"id"
]
}🟡notify_human(apprise_url, title, body)
Send a message to a human on Telegram, Discord, Slack, ntfy, email and 100+ other services (apprise URL is used once, never stored).
入力スキーマ
{
"type": "object",
"properties": {
"apprise_url": {
"type": "string",
"description": "apprise target URL"
},
"title": {
"type": "string",
"description": ""
},
"body": {
"type": "string",
"description": "message"
}
},
"required": [
"apprise_url",
"body"
]
}🟡guaranteed_delivery(url, payload)
POST a payload to a URL, retried with backoff until it succeeds.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "target"
},
"payload": {
"type": "object",
"description": ""
}
},
"required": [
"url"
]
}🟡create_vault(days, label)
Create a key-value namespace with TTL that survives your runs.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": ""
},
"label": {
"type": "string",
"description": ""
}
},
"required": []
}🟡kv_set(id, key, value)
Store a value in a vault (max 1 MB).
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "vault id"
},
"key": {
"type": "string",
"description": ""
},
"value": {
"type": "string",
"description": ""
}
},
"required": [
"id",
"key",
"value"
]
}🟢kv_get(id, key)
Read a value from a vault.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "vault id"
},
"key": {
"type": "string",
"description": ""
}
},
"required": [
"id",
"key"
]
}🟢kv_list(id)
List keys in a vault.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "vault id"
}
},
"required": [
"id"
]
}🟡save_checkpoint(id, state)
Save run state so you can resume after a crash.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "checkpoint id"
},
"state": {
"type": "string",
"description": "serialized state"
}
},
"required": [
"id",
"state"
]
}🟡create_checkpoint(days)
Create a crash checkpoint store.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": ""
}
},
"required": []
}⚪load_checkpoint(id)
Load the latest saved checkpoint state.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}🟢store_secret(value, days)
Store a value that self-destructs on first read; returns a one-time read URL.
入力スキーマ
{
"type": "object",
"properties": {
"value": {
"type": "string",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"value"
]
}🟡create_queue(lease_seconds, max_attempts, days)
Pull-based work queue with leases; timed-out leases requeue.
入力スキーマ
{
"type": "object",
"properties": {
"lease_seconds": {
"type": "number",
"description": ""
},
"max_attempts": {
"type": "number",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": []
}⚪queue_push(id, body)
Push a job onto a queue.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "queue id"
},
"body": {
"type": "string",
"description": "job payload"
}
},
"required": [
"id",
"body"
]
}⚪queue_lease(id)
Lease the next job from a queue.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "queue id"
}
},
"required": [
"id"
]
}⚪queue_ack(id, job_id, action)
Acknowledge (or nack) a leased job.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "queue id"
},
"job_id": {
"type": "string",
"description": ""
},
"action": {
"type": "string",
"enum": [
"ack",
"nack"
]
}
},
"required": [
"id",
"job_id"
]
}🟡create_counter(start, days)
Create an atomic counter.
入力スキーマ
{
"type": "object",
"properties": {
"start": {
"type": "number",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": []
}⚪counter_incr(id, by)
Increment a counter atomically.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
},
"by": {
"type": "number",
"description": ""
}
},
"required": [
"id"
]
}⚪claim_operation(id, operation_id)
Idempotency firewall: claim an operation id exactly once across runs.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "firewall id"
},
"operation_id": {
"type": "string",
"description": ""
}
},
"required": [
"id",
"operation_id"
]
}🟡create_idempotency(days)
Create an idempotency/replay firewall.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": ""
}
},
"required": []
}🟡publish_page(html, name, days)
Publish an HTML page at name.zenvault.eu for N days.
入力スキーマ
{
"type": "object",
"properties": {
"html": {
"type": "string",
"description": "page HTML"
},
"name": {
"type": "string",
"description": "subdomain name"
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"html"
]
}🟡create_link(target, days)
Create an expiring share link with click stats.
入力スキーマ
{
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "destination URL"
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"target"
]
}🟡create_watch(type, url, webhook, keyword, pattern, ...)
Watch something and fire your webhook when it changes. Types: change, keyword, regex, structured, drift, redirect, sitemap, staleness, rss, dns, port, cert, heartbeat.
入力スキーマ
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "watch type"
},
"url": {
"type": "string",
"description": "URL to watch"
},
"webhook": {
"type": "string",
"description": "called on change"
},
"keyword": {
"type": "string",
"description": ""
},
"pattern": {
"type": "string",
"description": "regex"
},
"selector": {
"type": "string",
"description": "CSS selector or JSON path"
},
"json": {
"type": "boolean"
},
"percent": {
"type": "number",
"description": "drift threshold"
},
"name": {
"type": "string",
"description": "DNS name"
},
"record": {
"type": "string",
"description": "DNS record type"
},
"host": {
"type": "string",
"description": ""
},
"port": {
"type": "number",
"description": ""
},
"domain": {
"type": "string",
"description": "for cert watch"
},
"interval_seconds": {
"type": "number",
"description": ""
},
"confirmations": {
"type": "number",
"description": "fire only after N consecutive hits"
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"type",
"webhook"
]
}🟢watch_status(id)
Check a watch: last value, checks, fires.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}🟡create_escalation(steps, subject, days)
Escalation chain: webhook, then after N seconds the next step, until acknowledged.
入力スキーマ
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"description": "steps: {webhook, apprise_url, wait_seconds}"
},
"subject": {
"type": "string",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"steps"
]
}🟢get_resource(id)
Status of any resource you hold the management token for.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}⚪extend_resource(id, days)
Extend a resource TTL by paying again.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"id"
]
}🔴cancel_resource(id)
Cancel a resource early.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}⚪export_resource(id)
Export everything under a resource before it expires.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}🟢credit_balance
Check the balance of your prepaid credit token.
入力スキーマ
{
"type": "object",
"properties": {},
"required": []
}🟡create_subtoken(cap_usd, label, days)
Mint a spend-capped child token for a sub-agent.
入力スキーマ
{
"type": "object",
"properties": {
"cap_usd": {
"type": "number",
"description": "hard spend cap"
},
"label": {
"type": "string",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"cap_usd"
]
}🟢list_prices
Machine-readable price list for every ZenVault service, in USD.
入力スキーマ
{
"type": "object",
"properties": {},
"required": []
}⚪request_feature(what, why, would_pay)
Tell the operator what ZenVault is missing. Free.
入力スキーマ
{
"type": "object",
"properties": {
"what": {
"type": "string",
"description": "what you need"
},
"why": {
"type": "string",
"description": "why"
},
"would_pay": {
"type": "string",
"description": "would you pay, how much"
}
},
"required": [
"what"
]
}コミュニティ
エビデンス