{
"mcpServers": {
"windmill-mpc": {
"url": "https://windmill.redacted.com/api/mcp/w/redacted/sse?token=REDACTED"
}
}
}2025-06-10 20:13:56.288 [info] -mpc: Handling ListOfferings action
2025-06-10 20:13:56.289 [info] -mpc: Listing offerings
2025-06-10 20:13:56.289 [info] -mpc: Connected to streamableHttp server, fetching offerings
2025-06-10 20:13:56.666 [error] -mpc: Error listing offerings: [
{
"code": "invalid_type",
"expected": "object",
"received": "null",
"path": [
"tools",
0,
"annotations"
],
"message": "Expected object, received null"
},
{
"code": "invalid_type",
"expected": "object",
"received": "null",
"path": [
"tools",
1,
"annotations"
],
"message": "Expected object, received null"
},
{
"code": "invalid_type",
"expected": "object",
"received": "null",
"path": [
"tools",
2,
"annotations"
],
"message": "Expected object, received null"
},@everyone Windmill is the fastest workflow engine but many times the comparison with other workflow engines was stuck on low-code vs full code flows. I'm proud to release the ALPHA of: **Workflow-as-Code v2 — Write workflows as plain code** We completely rebuilt Workflow-as-Code from the ground up. Instead of a visual flow builder, you write your entire workflow as a regular TypeScript or Python script — with all the reliability of Windmill's execution engine behind it. ``` import { task, step, sleep, waitForApproval, workflow } from "windmill-client"; const process = task(async (x: string) => `processed: ${x}`); export const main = workflow(async (x: string) => { const a = await process(x); const urls = await step("get_urls", () => getResumeUrls()); await sleep(60); await waitForApproval({ timeout: 3600 }); return { processed: a }; }); ``` Each task() call runs as a separate checkpointed job — if your workflow fails halfway through, completed steps are skipped on retry. step() checkpoints inline code without spawning a child job. sleep() and waitForApproval() suspend server-side without holding a worker. What's new: - Direct function calls — no more string-based step references or passing context objects. Just wrap your functions with task() and call them normally - Module support — split your workflow across multiple files with taskScript("./helper.ts"), each module gets its own editor tab - Parallel execution — Promise.all() / asyncio.gather() just works - Full primitive set — task, taskScript, step, sleep, waitForApproval, getResumeUrls - Python & TypeScript — both languages supported with idiomatic APIs (@task() decorator in Python) - Live timeline — real-time visualization of step execution, durations, and status in the UI Available now in v1.652+. https://www.windmill.dev/docs/core_concepts/workflows_as_code
rubenf · 5d ago
We're live here https://discord.com/channels/930051556043276338/1278977038430240813
henri-c · 3w ago
Infrastructure as code
rubenf · 2mo ago