The workflow builder that lives in Claude Code.

Describe the automation. Your coding agent writes a clean, typed TypeScript job, tests it against real events, and deploys it serverless.

Install
npx terse-cli@latest install
Create
/terse-create describe your workflow
Works with
  • Cursor
  • Claude Code
  • Codex
Built for coding agents to do their best work

How Terse works in Claude Code: create and improve workflows

claude
Claude Code v2.1.42
Fable 5 · Anthropic API
~/projects/deal-desk
/terse-create When someone signs up in WorkOS, sync them to Attio — create the company if it's new, add the person, and get the deal into our Sales pipeline.
One question before I research: if the company already exists, should a signup still move its deal along? I'd recommend yes, with a note on the deal.
Yes — and note who signed up.
Interview done. Scanning your workspace and researching the docs.
Read src/terse.generated.ts — WorkOS and Attio are connected; Triggers.workos.onUserCreated covers this.
Research done — here's the workflow drawn out:
┌─────────────────────────────────┐
│ WorkOS user signs up            │
└────────────────┬────────────────┘
                 ▼
┌─────────────────────────────────┐
│ Upsert the person in Attio      │
└────────────────┬────────────────┘
                 │ match by email domain
                 ▼
┌─────────────────────────────────┐
│ Upsert the company              │
└────────────────┬────────────────┘
                 ▼
┌─────────────────────────────────┐
│ agent: file the deal in Sales   │
│ create if new, pick the stage,  │
│ note who signed up              │
└─────────────────────────────────┘
Does this match what you have in mind?
Match — build it.
Building in milestones: trigger wiring, then the Attio writes, the deal agent last.
Wrote src/jobs/workos-attio-sync.ts (28 lines)
Now a pinned real signup through the full job — I expect a person, a company, and a deal in Sales.
⏵ terse test run workos-attio-sync --id 4f21
The test ran as expected: person upserted, company created, deal filed with a note.
The workflow is ready locally. Deploy it to production with terse deploy?
Deploy.
⏵ terse deploy — synced. Triggers active at deal-desk-workos-attio-sync.terse.run.
src/jobs/workos-attio-sync.ts
import { createJob, generateText } from "terse-sdk"
// generated types for your workspace ↓
import { Triggers, Skills, AttioList, toolbox } from "./terse.generated"
createJob({
name: "workos-attio-sync",
triggers: [Triggers.workos.onUserCreated()],
onTrigger: async (event) => {
const user = event.data
const domain = user.email.split("@")[1]
// deterministic tool calls ↓
const company = await toolbox.attio.upsertCompany({ domain })
await toolbox.attio.upsertPerson({
email: user.email,
name: `${user.firstName} ${user.lastName}`,
companyId: company.id,
})
// agentic reasoning, ACL'd skills ↓
await generateText({
prompt: `Add ${company.name} to the Sales pipeline: create the
deal if it's new, pick the right stage, leave a short note.`,
skills: [Skills.attio({ list: AttioList.Sales })],
})
},
})

Why Terse

Equipped to build production workflows.

What your agent gets out of the box with each approach.

Capability comparison of ways to build agent workflows: an agent with raw MCPs, low-code platforms like Zapier and n8n, an agent writing a Cloudflare Worker, and an agent with Terse.
CapabilityAgent + raw MCPsLow-codeZapier · n8nAgent + Cloudflare WorkerAgent + Terse
Type-safe workspace context engineToken-efficientNot includedNot includedNot includedIncluded
Skills that teach your agent to build correctlyNot includedNot includedNot includedIncluded
Connect tools via OAuth or API keysNot includedIncludedNot includedIncluded
Durable workflowsNot includedIncludedNot includedIncluded
Full trace and replay of every executionEasily available to the agentNot includedNot includedNot includedIncluded
Learns from previous runsNot includedNot includedNot includedIncluded

Ready?

Your first workflow in 60 seconds.

Install the skill, describe the workflow, and your coding agent writes, tests, and deploys it.

Install
npx terse-cli@latest install
Create
/terse-create describe your workflow
View source on GitHub