MCP / HTTP / CLI / TYPED ACTIONS

ActionMesh

One action contract. Every surface. A framework-agnostic TypeScript registry that keeps validation, execution, errors and retry semantics attached to one action, then exposes thin adapters around it.

Typed defineAction() contracts
Input + output validation
Stable machine-readable errors
Explicit retry semantics
MCP-style tool adapter
HTTP + CLI adapters
const lookup = defineAction({
  name: "lookup-lead",
  input: z.object({ id: z.string() }),
  output: z.object({ status: z.string() }),
  run: async ({ id }) => db.leads.find(id)
})

registry.register(lookup)
// agent · MCP · HTTP · CLI → same action