The secure handoff layer for AI agents
Create a kubbi, get a claim URL, and let the next agent or human claim it on their own schedule. One link, one TTL, one burn policy.
const client = new KubbiClient({ apiKey }) const { claimUrl } = await client.sendFiles({ files: [ { name: "config.json", content, contentType: "application/json" }, { name: "data.csv", content, contentType: "text/csv" }, { name: "report.md", content, contentType: "text/markdown" }, ], ttlSeconds: 3600, maxRetrievals: 1, })
Built for the handoffs you've been duct-taping
Different actors, different timing, sensitive payloads, or multiple files in one package - kubbi gives the handoff a cleaner pattern.
How kubbi works
A producer creates a kubbi, the workflow carries only the claim URL, and the consumer picks up the payload on their own schedule.
A producer creates a kubbi with a payload or file bundle, a TTL, and an optional retrieval limit.
The workflow carries only the claim URL - through MCP, A2A, queues, or task systems.
The consumer claims the payload on their schedule. kubbi expires or burns it after.
The payload stays in kubbi. Only the claim URL travels.
Temporary by design, controlled by default
Set expiry, read limits, and burn behavior at the kubbi level so agents can pass data with clearer boundaries and less exposure in the workflow.
Encrypted at rest
Every payload is AES-256 encrypted before it touches storage. Keys rotate automatically.
TTL expiry
Set a time-to-live and the payload self-destructs - no stale data, no cleanup scripts.
Burn after read
One claim, one read, gone forever. Perfect for secrets, tokens, and one-time handoffs.
Multi-file packages
Bundle up to five files in a single kubbi. One claim link delivers config, data, instructions, and attachments together.
Inspect before claim
Preview metadata and file manifests without consuming the payload so you know what you’re getting.
Delete early
Changed your mind? Revoke a kubbi before it’s claimed — the producer stays in control.
Designed for easy integration
First-class SDKs for Python and TypeScript, native MCP tool support, and a clean REST API. Pick the path that fits your stack.
Python SDK
pip install kubbi and start creating handoffs in three lines. Async-ready with full type hints.
from kubbi import KubbiClient
client = KubbiClient(api_key="kb_...")
result = client.send(
content="sensitive data",
content_type="text/plain",
ttl_seconds=3600,
)TypeScript SDK
npm install @kubbi.ai/sdk — tree-shakable, zero dependencies, works in Node, Deno, and edge runtimes.
import { KubbiClient } from "@kubbi.ai/sdk";
const client = new KubbiClient({ apiKey: "kb_..." });
const result = await client.send({
content: "sensitive data",
contentType: "text/plain",
ttlSeconds: 3600,
});MCP Integration
Expose kubbi as a tool inside any MCP-compatible agent. Agents create, claim, and send multi-file packages natively.
{
"tool": "kubbi_send",
"arguments": {
"content": "result-data",
"contentType": "application/json",
"ttlSeconds": 3600,
"maxRetrievals": 1
}
}REST API
A single POST to create, a POST to claim. Standard HTTP — no SDKs required, works from any language or platform.
curl -X POST https://api.kubbi.ai/api/v1/kubbis \
-H "Authorization: Bearer kb_..." \
-H "Content-Type: application/json" \
-d '{
"content": "secret",
"content_type": "text/plain",
"ttl_seconds": 3600
}'Works with the tools you already use
kubbi doesn't replace anything in your stack. It sits alongside your existing channels so they carry a claim URL instead of the payload.
Try kubbi on your next workflow
Create a temporary handoff, pass one claim URL, and let the next agent or human pick it up when ready.