UNIHODL Agent Handoff SDK · v1.0 Draft
The decision-continuity protocol for human-to-agent work transfer.
Pass a UNIHODL resume token to any AI agent. The agent receives the human’s open tabs, scroll positions, video timestamps, the AI-tagged decision thread, partial conclusions, and intended next step — not just a list of links. It can pick up the work mid-thought.
// The cold-start problem
Most agentic AI failures aren’t reasoning failures. They’re cold-start failures.
The agent begins each session with no idea what the human already concluded, what tabs they had open, or which option they were leaning toward. UNIHODL exposes the human’s working session as a first-class, machine-readable artifact.
// The four primitives
Clean, orthogonal, each with one job.
01 · Session
An open work context — tabs, scroll positions, video timestamps, partial notes — captured by UNIHODL on the device.
02 · Resume Token
A signed, scoped, time-bound credential that grants an agent read (and optionally write) access to a session.
03 · Resume Context
The hydrated payload an agent receives — structured, redacted, serializable into any model's prompt format.
04 · Reasoning Thread
The why-layer: partial conclusions, decision stance, blockers, next-step intent. The differentiator.
// Quickstart · 5 minutes
Three steps from install to a Claude agent that picks up mid-thought.
01 · Install
npm install @unihodl/agent-sdk
# or
pip install unihodl-agent02 · Mint a scoped resume token (server-side)
curl https://unihodl.app/api/v1/resume_tokens \
-H "Authorization: Bearer $UNIHODL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"session_id": "ses_8f3aZ91b",
"scopes": ["read:context", "read:reasoning"],
"ttl_seconds": 3600,
"audience": "claude.anthropic.com"
}'03 · Hand it off to an agent
from unihodl_agent import Client
from anthropic import Anthropic
uh = Client(api_key=os.environ["UNIHODL_API_KEY"])
claude = Anthropic()
# Hydrate the session — returns a structured Resume Context
ctx = uh.sessions.hydrate("ses_8f3aZ91b")
resp = claude.messages.create(
model="claude-sonnet-4-7",
max_tokens=2048,
system=ctx.as_system_prompt(),
messages=[
{"role": "user", "content": "Continue Sarah's research on API v3."}
],
)
print(resp.content[0].text)// What you get
Six capabilities. Cross-framework guarantee.
| Capability | What it does |
|---|---|
| Resume tokens | Short-lived, scoped, audience-bound JWTs that grant read access to a session. |
| Context hydration | Returns a structured Resume Context: tabs, scroll, video timestamps, reasoning thread. |
| Reasoning state | Partial conclusions, decision stance, next-step intent — the why behind the work. |
| MCP server | Native Model Context Protocol surface for any MCP-capable agent. |
| Webhooks | Subscribe to session.held, session.shared, session.resumed, session.handed_off. |
| Cross-framework guarantee | Same Resume Context schema across Claude, Gemini, OpenAI Agents, and LangGraph. |
// Reference integrations
Drop-in for the four agent frameworks people actually use.
Anthropic Claude
System prompt · MCP mount
Google Gemini
Function calling · System instruction
OpenAI Agents SDK
@function_tool wrapper
LangGraph
Graph entry hydration
// Design principles
Audience-bound. Redacted at the boundary. Auditable.
- Audience-bound by default.Every resume token is bound to a single audience (a model vendor, an MCP server URL, or a known agent identity). Tokens cannot be replayed against other audiences.
- Redaction at the boundary.Sensitive content is redacted server-side before serialization based on per-workspace policies — the agent never sees content it isn't entitled to.
- Reasoning is structured, not narrative.Decision threads are serialized as typed graph nodes, not free text, so agents can ground tool calls in specific intent vectors.
- Format-pluggable.The same Resume Context can serialize to a Claude system prompt, a Gemini system instruction, an OpenAI Agents SDK input, or a raw MCP resource.
- Auditable.Every hydration creates an immutable access record: who, when, what scopes, what was redacted, what was returned.
Ready to wire it up?
The full spec is 23 pages of REST + MCP API design, authentication, redaction policies, and reference implementations.
Spec questions: developers@unihodl.app