What we’re building
We will not write a workflow ourselves this time. We connect an assistant to Yukta’s MCP server, the endpoint at/mcp that lets an assistant call Yukta’s operations as tools. Then we ask it to build a small release gate, run it, and tell us the result.
Connect the assistant
With your server running, add it to Claude Code:If the server has an API key, send it as a header. Keep the key in an environment variable, not in a file you commit:Check that it is connected:You should see a
yukta line marked as connected.Stuck?Failed to connectusually means the server is not running or the URL is wrong. Runcurl http://localhost:9858/actuator/healthfirst. A401means the server needs the key header.
Install the skill
The tools say what the assistant can call. A skill says how to behave: check your role first, which tool needs which role, and which actions to ask you about before it does them. Yukta ships one called You should see no output, and the file exists:A skill is good manners, not a lock. It makes the assistant polite and effective, but what limits it is the role on its key.
yukta-workflows. Put it where Claude Code reads skills:Stuck? Start a new Claude Code session after you add the skill, because it reads skills at start. The skill follows the main branch, so on an older release some tool names may not exist yet: the assistant will say so.
Ask for a workflow
Start You should see the assistant call Read the JSON it shows. The things to check are the node types, that
claude and send this prompt. It names every fact, so the answer is the same on every run:whoami, then ask Yukta how a session is written (get_session_creation_instructions) and which plugins exist (list_plugins). Then it shows you the workflow JSON. On a local server with no key, whoami reports:coverage >= 80 is the condition, and that no key or password appears in it. Then answer yes.Stuck? If the call tocreate_sessionfails withRecord components not available for record class ...SessionConfigData, your server is a native build with a known gap in this tool. Ask the assistant to save the JSON torelease-checks.json, apply it yourself withyukta-cli session apply release-checks.json, and carry on from the next step. Starting and reading runs over MCP is not affected.
Watch it run and read the verdict
After your yes, the assistant installs the session, starts The run status is
gate with start_workflow, and reads the run with get_workflow_status and get_execution_result. It should end with an answer like this:SUCCESS even though the verdict is fail. The run succeeded in doing its job, which was to reach a verdict. The raw result the assistant read is:Stuck?start_workflowtakes no payload, which is why the prompt put the facts inside the workflow. If a status call is refused withoutput validation failedwhile the run is still going, ask the assistant to wait a few seconds and read it again. And if you start the same workflow twice within 30 seconds, you get the earlier run back (reusedExecution: true), not a new one.
Check it yourself
Do not take the assistant’s word for it. Look at what it installed, with the client it did not use:You should see one run of
gate with status SUCCESS. Open http://localhost:9858/, choose the release-checks session, and compare the graph with the JSON you approved. This is the point of a workflow being data: you review a graph, not a transcript.Change it, and meet the approval prompt
Ask for a change:Creating a session with an id that already exists replaces it. The skill tells the assistant to stop and ask you before it does that, naming what will happen. You should see a question such as “this replaces the session release-checks, shall I go ahead?”. Say yes. The new run reports
pass, because 72 is at least 70.The same rule covers deleting a session or workflow, force-stopping runs, rolling back a version, changing the scheduler limits, and answering an approval. Those are your decisions, and we meet the last one in Ask for approval.What you just did
We gave an assistant the tools to author and run a workflow, and a skill that tells it when to ask us first. We reviewed a graph before anything was installed, then checked the run with a different client. The assistant had no more power than the role on its key allows, and a request your role does not allow is refused with403.
Where to go next
Add a supervisor
Next tutorial: put a rule between everyone, assistant included, and a dangerous command.
Connect an assistant
Other clients, API keys, and the lowest role for each job.
How AI-assisted configuration works
Roles, skills and why you stay in control.
MCP tools reference
Every tool with its role and arguments.