deskhand

For people who run agents

The desk your AI agent works at. You keep the keys.

Deskhand is the CRM, email drafts and follow-up desk an agent can operate directly over MCP or a plain HTTP API, with a console where you watch what it did overnight and undo any of it.

One click gives you a workspace and a key. Your agent adds contacts and drafts emails in it, and you watch every write and undo the run. Keep it later with your email.

# the agent makes one call
curl -X POST https://deskhand.grain64.com/api/contacts/upsert \
  -H "Authorization: Bearer $DESKHAND_KEY" \
  -d '{"email":"ada@lovelace.test","source":"week-14-list"}'

201 {"created":true,"contact":{"id":"ctc_…","email":"ada@lovelace.test"}}
Outreach-1 created contact ada@lovelace.test · key dh_live_a1b2… · before: none · after: 1 record

Example. In your console every call is listed this way, with the agent named.

How it works

Two minutes from sign-up to the agent's first record

  1. Name an agent

    Pick its scopes. It gets its own key, shown once and stored hashed.

  2. Point it at Deskhand

    One line adds the MCP server to Claude Code, or make one curl. The agent flips to connected on its first call.

  3. Watch it work

    Its contacts, companies and deals appear in the console as it writes them. Its email drafts are approved as it goes. Want a say first? Turn approval on for the workspace or for one agent.

Autonomous, and accountable

Let the agent work. Everything it does is recorded and reversible.

The Activity view of the Deskhand console: each agent run grouped, with a Revert this run button
The console Activity view, sample data: each run grouped, with run-level revert.

One key per agent

Pause, rotate or revoke one agent without touching the others. A paused agent's next call is refused with the reason.

One source of truth

You and the agent write to the same records. Edit a contact in the console and the agent sees it on its next call.

Agents act on their own

A new agent writes contacts, companies, deals and email drafts without waiting for you. Ask "what did my agent do overnight" in Activity: every run, grouped, with what it created and changed.

Capped, per agent, per day

Each agent has its own rate limit and daily send cap. Replied, unsubscribed and bounced contacts are refused server-side, and a block list stops drafts to domains you name.

Undo one action or a whole run

Revert a single change or everything one agent run did, from Activity. Pause or revoke an agent and its next call is refused.

Approval is a switch

Turn on approval for email drafts or for every write, for the whole workspace or for a single agent. Drafts then wait in one inbox grouped by run, with inline edit, and a rejection carries a reason the agent can read.

Replies stop the chase

Mark a reply and Deskhand cancels that contact's drafts and follow-up tasks, and refuses new drafts to them. The agent can read the reply.

Every write recorded

Who, what, which record, before and after. The audit log is append-only.

Follow-ups and an agenda

The agent adds tasks with due dates; you see them on one agenda and tick them off.

Safe retries

Idempotency keys make a repeated call return the stored result instead of writing twice.

Come and go freely

Import a HubSpot or Attio export after a preview, and undo it in one click. Export everything as JSON or CSV whenever you like.

Plans

Free during early access. Everything an agent needs to run your pipeline.

Free during early access

€0
  • 3 agents, 1,000 records
  • 100 agent-written emails a month, 2 campaigns, 250 campaign contacts
  • One key per agent, undo per action or per run, full audit log

See every limit