ZenVault
Wake-ups, webhook inboxes, TTL memory, watches and human approval for agents. Paid per call.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (10)
- LOWin create_drip
- LOWin notarize
- LOWin create_inbox
- LOWin collect_messages
- LOWin create_queue
- LOWin queue_push
- LOWin queue_ack
- LOWin create_watch
- LOWin extend_resource
- LOWin request_feature
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"zenvault": {
"url": "https://api.zenvault.eu/mcp"
}
}
}Remote-Endpunkte
https://api.zenvault.eu/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (44)
🟡create_wakeup(at, url, payload)
Schedule a webhook call at a future time (one-shot). Your agent can die; the call still happens.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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).
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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).
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "vault id"
},
"key": {
"type": "string",
"description": ""
}
},
"required": [
"id",
"key"
]
}🟢kv_list(id)
List keys in a vault.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": ""
}
},
"required": []
}⚪load_checkpoint(id)
Load the latest saved checkpoint state.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "queue id"
}
},
"required": [
"id"
]
}⚪queue_ack(id, job_id, action)
Acknowledge (or nack) a leased job.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"start": {
"type": "number",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": []
}⚪counter_incr(id, by)
Increment a counter atomically.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": ""
}
},
"required": []
}🟡publish_page(html, name, days)
Publish an HTML page at name.zenvault.eu for N days.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}⚪extend_resource(id, days)
Extend a resource TTL by paying again.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
},
"days": {
"type": "number",
"description": ""
}
},
"required": [
"id"
]
}🔴cancel_resource(id)
Cancel a resource early.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}⚪export_resource(id)
Export everything under a resource before it expires.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": ""
}
},
"required": [
"id"
]
}🟢credit_balance
Check the balance of your prepaid credit token.
Eingabe-Schema
{
"type": "object",
"properties": {},
"required": []
}🟡create_subtoken(cap_usd, label, days)
Mint a spend-capped child token for a sub-agent.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"required": []
}⚪request_feature(what, why, would_pay)
Tell the operator what ZenVault is missing. Free.
Eingabe-Schema
{
"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"
]
}Community
Nachweis