recuriant

From your terminal to a governed workflow in four steps

Everything below runs against the same policy engine, whether you call it from your terminal, from a workflow, or from an agent Recuriant spawned.

01

Add Recuriant to your terminal agent

Recuriant is an MCP server. Add it to Claude Code or Cursor with one command — hosted at mcp.recuriant.com over streamable HTTP with OAuth, or run it yourself.

# hosted MCP, streamable HTTP + OAuth
claude mcp add --transport http recuriant https://mcp.recuriant.com
// ~/.cursor/mcp.json
{ "mcpServers": { "recuriant": { "url": "https://mcp.recuriant.com" } } }
# run your own MCP server
pip install recuriant
npx recuriant mcp
02

Call it from an SDK

SDKs for Python, TypeScript, Go, Java and C# are generated from the same OpenAPI spec, so every language sees the same surface.

from recuriant import Recuriant

client = Recuriant(api_key="...")
run = client.workflows.run("deploy-hotfix", inputs={"issue_id": "1234"})
print(run.status)
import { Recuriant } from "recuriant";

const client = new Recuriant({ apiKey: process.env.RECURIANT_API_KEY });
const run = await client.workflows.run("deploy-hotfix", { issueId: "1234" });
console.log(run.status);
03

Write a workflow with an approval gate

The workflow DSL is YAML: on/if/do/dag/verify/finally. Anything reversible and low-impact runs as L1. Anything higher-impact waits on a durable L2 approval.

# routes.d/deploy-hotfix.yaml
- name: deploy-hotfix
  on: issue.labeled
  if: "{label} == 'hotfix'"
  do:
    - agent: { type: code, runtime: claude-helm, role: sre-hotfix }
    - stripe.refund: { amount: "{incident.credit}" }
      # reversible but high blast radius ⇒ classified tier: L2
      # run pauses here until a human approves the signal
  verify:
    on: deploy.healthy
    within: 30m
  finally:
    - matrix.send: "[{_status}] hotfix {issue.id}"
04

Let an agent extend its own workflow

A running agent can call append_workflow or update_workflows over MCP to add a step to a workflow, or run_agent to spawn another agent — bounded by a depth limit and a narrowing identity.

> the hotfix workflow should also notify #incidents

append_workflow(
  name="deploy-hotfix",
  step={"matrix.send": "#incidents: hotfix {issue.id} deployed"}
)
→ depth: 1/4 · scope: workflow:write (narrowed) · logged