Define agents in code.
Write agents in TypeScript or Python with typed tools, durable memory and plans you can review in a pull request. Run them locally against real adapters or recorded fixtures.
- Typed tools with zod or pydantic
- Durable, resumable runs
- Local runtime with hot reload
import { agent, tool, z } from "@clawsseum/sdk";
import {
openai, google, zendesk, stripe, slack,
} from "@clawsseum/sdk/adapters";
const refund = tool({
name: "issue_refund",
input: z.object({
chargeId: z.string(),
amount: z.number().positive(),
}),
sideEffect: true, // pauses for approval
run: (args, { adapters }) =>
adapters.stripe.refunds.create(args),
});
export default agent({
name: "support-agent",
model: openai("gpt-5"),
fallback: [google("gemini-2.5-pro")],
adapters: [zendesk(), stripe(), slack()],
tools: [refund],
});