Lyhnis speaks MCP on both sides. Expose the workflows you have authored to Claude, ChatGPT or any MCP client as typed tools. Equip your own agents with external tools from any MCP server. Four budgets the engine enforces, and human gates that pause across multi-day waits.
→ tool_call verify_identity(customer="c_8812") ← ok · sub-workflow · 1.2s · 0 tok → tool_call process_refund(amount=248.00) ← paused · human.approval · #finance …2d 04h later… ← ok · approved by ops@acme · slack → tool_call ledger_mcp.post(ref="rf_2291") ← ok · external MCP · 0.4s ✓ done · rollup $0.021 · 4 turns
The agent never gets raw API access. It gets the workflows you authored - with validation, HITL gates and audit-by-construction already wired in before the agent ever sees them. The workflow is the safety primitive.
One protocol, two roles. Your tenant gets an MCP server so external agents can call in; your workflows carry MCP credentials so agents can call out. Same audit ledger for both directions.
# your per-tenant MCP endpoint https://mcp.lyhnis.com/t/acme # JWT-bridge auth, scoped per client Authorization: Bearer eyJhbGciOi… # tools the client sees - process_refund (workflow) - verify_identity (workflow) - lookup_invoice (workflow)
credentials.create( name="linear_mcp", type="MCP_OAUTH", server_url="https://mcp.linear.app", ) agent.run( model="claude-sonnet-4-7", tools=[process_refund, mcp("linear_mcp")], budget=budget(turns=10, tokens=50_000), )
Budgets live in the engine, not the prompt - the agent cannot talk its way past them. Set them on the outer agent.run and the parent covers every child it spawns.
Hard cap on tool-call turns. The agent cannot reason itself into a loop you did not authorize.
Combined input and output across the whole run, counted recursively through nested agent calls.
HITL pauses do not count - only active reasoning time does. A 48-hour wait costs nothing.
Real dollars: nested agent spend, model fees and tool-side metered usage.
Parent budgets include every child agent's spend, every sub-workflow's tokens and every external tool call. Cap the whole tree from the top; auditors get one number per run.
See the v2.35 rollup →An agent-triggered refund end to end - from MCP invocation through a two-day human pause to recursive cost rollup. Every actor and resolution source captured by construction.
Every entry is AGENT, HUMAN or SYSTEM - never an anonymous service account.
Which channel answered, which model decided, which credential was used.
Per-span spend, rolled up to the run. No reconstruction from logs.
HMAC-SHA256 over a per-tenant key. Chain integrity verifiable on export.
Declare your tool vocabulary in Python, set the four budgets, and let the engine hold the line.
Drag activities, place your approval gates, hit run. No local setup, same execution layer.
See pricing →