<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alexander Karpov</title>
    <description>The latest articles on DEV Community by Alexander Karpov (@alexanderkarpov).</description>
    <link>https://dev.to/alexanderkarpov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073393%2Fde76715e-a97e-4446-aa19-a8d6a2452cb9.png</url>
      <title>DEV Community: Alexander Karpov</title>
      <link>https://dev.to/alexanderkarpov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexanderkarpov"/>
    <language>en</language>
    <item>
      <title>Claude Fixed the Bug. The Task Board Was Still Wrong.</title>
      <dc:creator>Alexander Karpov</dc:creator>
      <pubDate>Tue, 11 Aug 2026 16:42:39 +0000</pubDate>
      <link>https://dev.to/alexanderkarpov/claude-fixed-the-bug-the-task-board-was-still-wrong-5n0</link>
      <guid>https://dev.to/alexanderkarpov/claude-fixed-the-bug-the-task-board-was-still-wrong-5n0</guid>
      <description>&lt;p&gt;Claude fixes the bug. The tests pass. The task board still says &lt;em&gt;In progress&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This kept happening to me. The useful work was done, but I still had to switch tabs, move the card, paste a summary, add a comment, and log the time. If I forgot, the board slowly turned into fiction.&lt;/p&gt;

&lt;p&gt;So I built the workflow I actually wanted: Claude picks up a task, works on it, and leaves the board in the state it found in the real world.&lt;/p&gt;

&lt;p&gt;I am the developer of Kelvia, the product in this post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgonnagetapower%2Fkelvia-mcp%2Fmain%2Fdocs%2Fassets%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgonnagetapower%2Fkelvia-mcp%2Fmain%2Fdocs%2Fassets%2Fdemo.gif" alt="Claude Code reads a Kelvia task, posts an update, logs work, and moves the card through the hosted MCP endpoint." width="599" height="375"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;Claude reads the card, posts an update, logs two hours, and moves the task to Done.
  &lt;p&gt;&lt;/p&gt;

&lt;p&gt;Nothing spectacular happens in the demo. That is the point.&lt;/p&gt;

&lt;p&gt;Claude reads an existing card, adds a short progress note, logs work, and moves it to Done. I can watch the same card change in the browser. When the session ends, there is no second round of project-management chores waiting for me.&lt;/p&gt;

&lt;p&gt;Kelvia is hosted. The MCP connection talks to the remote Kelvia API; it does not install the product or its database locally. There is an optional stdio package, but it is only a bridge to the same API.&lt;/p&gt;

&lt;h2&gt;I did not want another anonymous bot&lt;/h2&gt;

&lt;p&gt;The first version could have used my token and called it a day. I did not like what that did to the board history. A comment written by Claude would appear to be mine, and every automated change would be mixed with my own work.&lt;/p&gt;

&lt;p&gt;In Kelvia, an agent gets a name and access to specific boards. Its key can read, create, edit, or delete. My Claude agent has read, create, and edit. Delete is disabled.&lt;/p&gt;

&lt;p&gt;That gives me an activity feed I can actually read:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgonnagetapower%2Fkelvia-mcp%2Fmain%2Fdocs%2Fassets%2Ftask-activity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgonnagetapower%2Fkelvia-mcp%2Fmain%2Fdocs%2Fassets%2Ftask-activity.png" alt="Kelvia task activity records changes attributed to a named Release Agent rather than the human account owner." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;The board records the Release Agent as the author instead of pretending that I made the change.
  &lt;p&gt;&lt;/p&gt;

&lt;p&gt;This is less about enterprise audit language and more about a basic question: when I open a card tomorrow, can I tell what happened?&lt;/p&gt;

&lt;h2&gt;58 tools was too much&lt;/h2&gt;

&lt;p&gt;The server currently covers boards, tasks, comments, worklogs, stages, members, tags, and the day planner. That adds up to 58 tools.&lt;/p&gt;

&lt;p&gt;Loading all of them into every coding session made no sense, so the server has toolsets. For this workflow I expose only &lt;code&gt;tasks&lt;/code&gt; and &lt;code&gt;comments&lt;/code&gt;: 21 tools including &lt;code&gt;get_current_user&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;export KELVIA_API_TOKEN='klv_your_agent_key'

claude mcp add-json --scope user kelvia \
  '{"type":"http","url":"https://mcp.kelvia.app/mcp","headers":{"Authorization":"Bearer ${KELVIA_API_TOKEN}","X-MCP-Toolsets":"tasks,comments"}}'&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After that, the prompt can stay boring:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Take task #42 from the product board.
Move it to In Progress before you start.
When finished, leave a short comment, log the time spent,
and move it to Done only if the tests pass.&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The board becomes shared state instead of a report I reconstruct after the coding session.&lt;/p&gt;

&lt;h2&gt;The part I am still figuring out&lt;/h2&gt;

&lt;p&gt;I am not sure how much freedom an agent should have by default.&lt;/p&gt;

&lt;p&gt;Read access is easy. Comments are low risk. Moving a task feels reasonable when the status follows a clear event such as a passing test. Editing descriptions and deleting tasks are different. I currently keep delete out of the default connection and would rather add a missing permission later than discover that an agent was over-equipped.&lt;/p&gt;

&lt;p&gt;I am also curious whether people want one agent per coding client, per repository, or per workflow. I prefer per workflow because the board history is clearer, but it creates more keys to manage.&lt;/p&gt;

&lt;p&gt;Kelvia is early, and I am looking for the places where this falls apart in real use. The &lt;a href="https://github.com/gonnagetapower/kelvia-mcp" rel="nofollow noopener noreferrer"&gt;MCP server is open source&lt;/a&gt;, and the hosted product is at &lt;a href="https://kelvia.app" rel="nofollow noopener noreferrer"&gt;kelvia.app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Would you let an agent move cards and log work if every action had its own author, or would you keep the board read-only?&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>security</category>
    </item>
  </channel>
</rss>
