Working with an AI assistant

Ask your assistant for the tasks only a person can do, and have it emit a JSON array with a stable Task ID on each. Paste that into Kanban Importer and the cards land in Backlog. One optional setup step then lets the assistant read the board and move cards itself, so you never paste status again.

An assistant can do a great deal of the work and then hit things it cannot finish: a password only you have, a decision only you can make, a form that wants a human signature. Those tasks are easy to lose track of, because they are scattered through a conversation rather than written down anywhere.

This turns that conversation into a board, and the board back into something the assistant can read.

Part 1: get the tasks onto a board

Nothing to install for this part. It works right now, in any assistant, and it is worth doing once before you set anything up, so you can see what you are getting.

Ask your assistant for the tasks

Paste this into Claude, Codex or whatever you are using, at the point where you want the leftovers written down.

Go back through our entire conversation, from the beginning, and find every
piece of work that is left for me rather than for you.

Include a task when any of these is true:
  - you cannot do it, because of access, credentials, or it being off this
    machine
  - you should not do it, because it needs my judgement, my money, or my
    signature
  - you are blocked until I answer a question you asked me
  - I said I would do something and we never came back to it
  - you recommended something and I never said yes or no

Do not include anything you can finish yourself. If you can do it, do it
instead of listing it.

Go through it twice before you answer. The things mentioned once in passing
are the ones that get lost, and those are exactly the ones worth capturing.

Return ONLY a JSON array, no prose before or after it. One object per task,
with exactly these keys:

  "Task ID"      a short stable slug you invent, lowercase with dashes
  "Title"        the task in one imperative line
  "Description"  why it needs me, what finished looks like, and roughly where
                 in our conversation it came up
  "List"         always "Backlog"
  "Labels"       one of: needs-human, needs-decision, needs-credentials, needs-review
  "Checklist"    the steps, separated by | characters

Use the same Task ID whenever you refer to that task again.

Three parts of that are doing real work and are worth keeping if you rewrite it. Going back through the whole conversation rather than answering from what it happens to remember. Unanswered questions counted as tasks, since a question you never answered is work you owe just as much as a job you never did. And not listing what it could have done itself, which otherwise fills the board with things that did not need you.

What comes back looks like this.

[
  {
    "Task ID": "rotate-stripe-webhook-secret",
    "Title": "Rotate the Stripe webhook secret",
    "Description": "Needs the live dashboard, which I cannot sign in to. Done when the new secret is in .env and a test event verifies.",
    "List": "Backlog",
    "Labels": "needs-credentials",
    "Checklist": "Generate a new secret|Update .env|Redeploy|Send a test event"
  }
]

Copy the JSON. Not the prose around it, if your assistant added any.

Put it on the board

Open the Trello board you want the tasks on, and click Import in the board header.

There is no visible box to paste into yet. The paste option is folded away, and this is the part that catches everybody:

The import window with Paste the data instead opened, the JSON in the box, and the Use pasted text button
  1. Click Paste the data instead. It is a folded section near the bottom, under the Google Sheet one. Nothing appears until you click it.
  2. Paste the JSON into the box that opens. Not into the drop zone at the top, which only takes files.
  3. Click Use pasted text.

That takes you to the mapping screen. Two things to check there before you import:

The options block with the kanban columns and AI tagging checkboxes ticked, and the Import cards button
  1. Make sure the kanban columns exist should be ticked on a fresh board. It creates Backlog, Ready, In Progress, In Review and Done, in that order.
  2. Tag these cards so an AI assistant can read their status later must be ticked. It turns itself on when your file has a Task ID, and the note beside it should read (ids from "Task ID"). If it is off, the cards still import and everything looks fine, but nothing in Part 3 will find them.
  3. Click Import cards.

Every card now carries its Task ID, both as a line at the end of its description and as a tag only this Power-Up can see. That is what lets an assistant find a card again after you rename it.

Part 2: set it up once

This is the only setup on this page. You do it once per machine, not once per board and not once per conversation, and it is what removes the copying and pasting: from here on the assistant reads the board itself.

Skip it entirely if you would rather paste the status across by hand. The last section on this page is written for you.

Get a Trello token

Authorize Kanban Importer on Trello. That link asks for read and write access and hands you a token to copy.

Add the server to your assistant

Open the one that matches what you use. You only need one of these.

Claude Code

One command, from any directory. --scope user makes it available in every project rather than only the one you are in.

claude mcp add kanban-importer --scope user --env TRELLO_TOKEN=paste-your-token -- npx -y @njligames/kanban-importer-mcp

Replace paste-your-token with the token from the link above, then run claude mcp list. You should see kanban-importer.

Codex

One command.

codex mcp add kanban-importer --env TRELLO_TOKEN=paste-your-token -- npx -y @njligames/kanban-importer-mcp

If you would rather edit the file, it is ~/.codex/config.toml, and the entry is TOML rather than JSON:

[mcp_servers.kanban-importer]
command = "npx"
args = ["-y", "@njligames/kanban-importer-mcp"]
env = { TRELLO_TOKEN = "paste-your-token" }
Claude Desktop
  1. Open Settings, then Developer, then Edit Config.
  2. That opens claude_desktop_config.json. It lives in ~/Library/Application Support/Claude/ on a Mac and %APPDATA%\Claude\ on Windows.
  3. Add the kanban-importer block inside mcpServers. If the file is empty, paste the whole thing:
{
  "mcpServers": {
    "kanban-importer": {
      "command": "npx",
      "args": ["-y", "@njligames/kanban-importer-mcp"],
      "env": { "TRELLO_TOKEN": "paste-your-token" }
    }
  }
}
  1. Quit Claude Desktop completely and reopen it. Closing the window is not enough on a Mac; it has to actually quit.
Cursor

Create or edit ~/.cursor/mcp.json to have it everywhere, or .cursor/mcp.json inside one project to have it only there.

{
  "mcpServers": {
    "kanban-importer": {
      "command": "npx",
      "args": ["-y", "@njligames/kanban-importer-mcp"],
      "env": { "TRELLO_TOKEN": "paste-your-token" }
    }
  }
}
It did not show up

The first run downloads the package, which can take longer than your client's startup timeout. That looks like the server failing when it is only slow.

Run it once by hand to warm the cache, then restart your client:

npx -y @njligames/kanban-importer-mcp

It prints a line about TRELLO_TOKEN and exits. That is correct with no token set, and it proves the download worked.

Part 3: use it from here on

Everything below is the part you repeat. There is nothing left to install.

Ask how things stand, and let it tidy up

Work the board normally for a while. Drag cards, tick checklist items, archive what is finished.

Then ask:

Read my Trello board and tell me which of the tasks you gave me are done,
which are in progress, and what is now unblocked for you.

Where you can verify from our work that a task is finished, move its card
yourself and tell me what the evidence was. Where you cannot verify it, leave
the card where it is and tell me what you would need to check.

Call each task by its Title, the way it reads on the card. Do not use the
Task ID in your answer, because it is not written anywhere I can see.

The middle paragraph is the one that earns its place. Without it you get an answer like "done, but still in Backlog", which is a report about work you now have to do by hand. With it, the board catches up as you read.

The constraint matters as much as the instruction. An assistant can verify some things itself, and it cannot verify others, and the difference is usually obvious to it if you ask. "The live site serves the new build" is evidence. "The deploy probably worked" is not. Telling it to move only what it can prove, and to say what the proof was, keeps the board honest rather than optimistic.

Matching happens on the task id behind the scenes, not on the card title, so renaming a card or adding a note to it changes nothing. But the id is invisible in Trello, so an answer that names tasks by id leaves you hunting for cards that do not appear to exist.

If it moves something wrongly, the worst case is a card in the wrong column. The server cannot create or delete cards at all, so nothing can go missing.

Tell it what you finished

The other direction, for the things it could not have known about. Anything you did away from the keyboard, or decided without saying so, or finished in a way it has no way to check.

I rotated the Stripe webhook secret and signed the lease. Move those to Done,
and move the DNS one to In Progress because I have started it.

Tell me what you moved using the card titles, not the task ids.

It moves the cards. A task you had archived comes back when it is moved, which is what people mean by moving something back to In Progress.

Catch the board up later

Run the capture prompt from Part 1 again a week later and you get the whole list back, including everything already on the board, and importing it makes a second copy of every card. Nothing dedupes a plain import.

So when you come back to it, ask for the difference instead:

Read my Trello board first, so you know what is already captured.

Then go back through everything we have discussed since those cards were
made, and give me ONLY the tasks that are not already on the board. Same JSON
format and the same Task ID rules as before.

If a task on the board turned out to be unnecessary, say so in a sentence
rather than putting it in the array. If there is nothing new, say that in one
line instead of returning an empty array.

Without the MCP server it has no way to read the board, so paste an export first and then ask the same thing.

This is also the moment to notice tasks that quietly died. An assistant will happily keep a card alive forever; you are the only one who knows a thing stopped mattering.

If your assistant cannot run an MCP server

Only if you skipped Part 2. In a plain chat window with no MCP there is nothing reading your board, so the export is the way across. It needs no token and no setup at all.

  1. Work the board normally.
  2. Click Export for AI in the board header.
  3. Click Copy.
  4. Paste it into the chat.

That button appears once a board has tagged cards on it, so you will not see it until your first tagged import has finished. On a board you imported into before this existed, the cards carry no tags, so import the list again with tagging ticked and the button arrives with it.

{
  "board": "Launch prep",
  "exported": "2026-10-22T14:03:00Z",
  "columns": ["Backlog", "Ready", "In Progress", "In Review", "Done"],
  "tasks": [
    {
      "Task ID": "rotate-stripe-webhook-secret",
      "Title": "Rotate the Stripe webhook secret",
      "List": "In Progress",
      "Archived": false,
      "Checklist": { "done": 2, "total": 4 }
    }
  ]
}

A prompt that reads it well:

Here is the current state of the board. The "columns" array is in order from
first to last, so a task's "List" tells you how far along it is. Archived
means I closed it out.

Tell me what is now unblocked for you, and which tasks you are still waiting
on me for.

The columns array is there instead of a status field on each task. Your board might not use our column names, and a guess about what "Shipped" or "Icebox" means would be a confident wrong answer. Giving the real order lets the assistant work it out.

What leaves your machine

Nothing new from us. The import runs in your browser and talks only to Trello, as it always has. The export is built in the browser too, and goes to your clipboard. Whatever you then paste into a chat window is your choice, and it carries card titles, columns and checklist counts, not card descriptions or comments.

Kanban Importer has no server, stores nothing, and never sees a Trello token of yours beyond the one Trello itself holds for the Power-Up. If you take the MCP route above, that is an arrangement between you, your assistant and Trello, and we are not in the middle of it.