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-agent

02 · 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.

CapabilityWhat it does
Resume tokensShort-lived, scoped, audience-bound JWTs that grant read access to a session.
Context hydrationReturns a structured Resume Context: tabs, scroll, video timestamps, reasoning thread.
Reasoning statePartial conclusions, decision stance, next-step intent — the why behind the work.
MCP serverNative Model Context Protocol surface for any MCP-capable agent.
WebhooksSubscribe to session.held, session.shared, session.resumed, session.handed_off.
Cross-framework guaranteeSame 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