Structured handoff card
Never make anyone retype what you send them.
Paste anything — logins, DNS records, an invoice, a screenshot — or generate a card straight from a URL. Get one link where every value has its own copy button and nothing gets lost in the thread.
Three ways to make a card
Build it however the moment needs.
From clipboard
Drop in text, a .env file, JSON, a table or a screenshot. Edit the detected fields and share.
Open the editor →From a link
Put your values in a URL parameter. Perfect for support macros, runbooks and onboarding docs.
Create via URL →From a template
Pick one of 20 real handoffs — DNS, invoices, Wi-Fi, cluster access — and tweak it.
Browse examples →Live example
Recipient card · integration setup
ws_7f21c9ab
Paste into the integration settings screen.
pk_live_8f3c9a2d4b71
Public key — safe to store in the client config.
https://hooks.example.net/v2/ingest
npx handoff init --workspace ws_7f21c9ab
Run once in the project root.
3000
How it works
Three steps, no account
Drop in whatever you already have
Text, a .env file, JSON, a table — even a screenshot. We read it and turn it into labelled fields grouped into sections. Fix anything that came out wrong.
Send one link
You get a private page for yourself and a share link for the other side. The link expires when you want it to and can be revoked at any moment.
See what they actually took
Each value is copied with one click and marked as done. Both of you see the same progress, so nobody has to ask “did you get it?”.
Programmatic handoffs
Create cards from your tools.
Support tickets, onboarding docs, runbooks, wikis — anywhere you already store raw values. Build a URL once — it opens instantly as a copyable card, with nothing stored anywhere.
Example URL
/new?v=Ticket%3A%20REQ-2026-0417%0ACustomer%3A%20ACME-4471%0APlan%3A%20Pro%0ARenewal%20date%3A%202026-10-14%0AAdmin%20panel%3A%20https%3A%2F%2Fadmin.acme.io%2F4471&title=Support%20handoff%20%E2%80%94%20ACME-4471&purpose=Generated%20from%20the%20ticket%20system.Query parameters
- v — values in “Label: value” format, one per line.
- title — card title (optional).
- purpose — one-line note (optional).
- expires — days until the card expires, 1–90 (only if you save it).
Stateless by default: the card is rendered from the link itself. Save it only when you want sharing and tracking.
Try this URL →Agent-first
Machine-readable by design
Every card is a plain structure of typed fields, so an agent can read the values and report state without human clicking.
{ "card": "hc-8f3c", "items": [ { "label": "API KEY", "value": "pk_live_8f3c9a2d4b71", "state": "copied" }, { "label": "WEBHOOK URL", "value": "https://hooks.example.net", "state": "pending" } ], "progress": "2/4" }
Stop retyping values out of chat threads.
Send your first card today. No account, no "can you send that again?".
Create a card