← Registry

Security & Testing

gomentat.app

Manages boards of test accounts, including adding, updating, and rotating QA logins and organizing favorite boards.

1 endpoint46 known toolsFirst detected October 21, 2026Last detected October 21, 2026

ENDPOINT 1

https://gomentat.app/mcp

No auth detected

MCP server metadata

Name
gomentat-kanban
Version
1.0.0
Capabilities
toolsprompts
Server instructions

Mentat is a kanban board app. Data model: a user owns boards; a board has columns (ordered, one may be "final" = done); columns hold cards. Cards can nest under a parent card (workstreams) — top-level cards are children of a hidden board root card that never appears in tool output. Each column may have a divider splitting above-the-line (ATL, priority — committed work) from below-the-line (BTL, later) cards. Cards carry success criteria (checklists), context items (links/notes/comments, with an optional role label like Vision/Style/Brief/Brand voice), and dependencies (card A depends on card B). Typical flow: list_boards → get_board(board_id) for full columns+cards, then act on specific cards. Use export_card_markdown / export_column_markdown when you want a readable spec of a card or column instead of raw JSON. When the person asks you to work their Mentat board ("Work my Mentat board", or the work prompt, /mcp__gomentat__work in Claude Code), that is the whole instruction: call claim_next for the board your role works (list_boards if you do not know which), do the card, claim again, and stop when claim_next says there is no work, telling them the reason it gave. Working convention (follow this — don't ask the user): cards advance RIGHTWARD through the columns. When you START working a card, move it right to the next column — prefer the column flagged is_progress=1 if the board has one. Starting a card is held to the claim rules whichever way you do it: a card whose dependencies are not all Done cannot enter the in-progress column, and with a per-role key you can only start a card you own. Prefer claim_next, which only hands you work that may start - and note that the ORDER of the ready column is the person's priority: you may only start the card your queue hands you next, whichever way you start it. Moving one from further down is refused, and the refusal names the card that goes first. When your work is READY, move it to the is_review=1 column if present (a human will look), otherwise to the is_final=1 column (done). THE BACKLOG IS THE HUMAN'S, NOT YOURS. Read it freely — it is where their thinking lives, and it is often the best context you have. When you notice work that is out of scope for what you were asked to do, propose it (see below) rather than quietly widening your own scope. Do not assign owner_role to a backlog card, do not treat one as work, and do not start on one. Work begins when a card reaches the is_ready column, because putting it there is the human saying it is ready. An owner on a backlog card claims nothing — claim_next only ever draws from is_ready — so all it does is make the board look as though something is underway when nothing is. WRITING IT DOWN IS NOT OPTIONAL. A card cannot leave the in-progress column for review or done until you have added a comment saying what you changed, what you decided and why, and what the next person needs to know. The server refuses the move otherwise. This is not bookkeeping. Reasoning that exists only in your context disappears when your session ends; the card is the only part that outlives it. A decision you did not write down did not happen. A HELD CARD IS NEVER LEFT SILENT. Work the person asks for in the chat while you hold a card is that card's work. Before you end any turn - to answer them, to ask, or because you are finished - the card says where it stands: what you made is attached, what you did is a comment, and finished work is in review. "Done" said in a chat window is not done; the board still shows the card as building, and that is what everyone else sees. THE PERSON'S QUESTIONS COME BACK TO YOU THE SAME WAY. A comment labelled "Question" the person leaves on a card you own - in Building or in Review, from the debrief, the plan review or by hand - makes your next claim_next hand you that card (resumed: true, questions: [...]) with nothing else first. Answer each one ON THE CARD: add_card_item(card_id, "comment", <answer>, label "Answer", anchor <the question's anchor>). A card that was in review comes back to in-progress with you for this (the server moves it when it hands it to you); move it to review again when every question is answered. A done card stays done: answer only. Until you answer, the board says you owe one. FEEDBACK REOPENS THE CARD. If the person tells you - in the chat, on the card, anywhere - that something you put in review needs changing, move that card back to the in-progress column BEFORE you touch anything, then do the work, write up what changed as a comment, and move it to review again. A card sitting in review says "nothing is happening to this"; working on it while it sits there makes the board lie about the one thing it exists to tell. DONE STAYS DONE, AND THE STORY RUNS AGAIN AS A NEW CARD. A finding you file while testing a card arrives untagged - the person decides whether it is one dev's fix or a ticket of its own - and it sits under the card you were testing. Fixes move forward like any card and never come back to you. The moment fixes are filed under a tester's card, the server adds one more card under it: "<story> - <your role> re-check", yours, queued, waiting on every fix, its brief naming each fix to look hardest at. It becomes claimable when the fixes are Done and arrives with their write-ups as handover. Run the whole story again on it, open your report with "Verified fixed:", and anything still wrong is a NEW finding filed under the re-check - which opens the next round the same way. Your round-one card keeps its report where it is. YOU PROPOSE CARDS UNLESS THE PERSON HAS LET YOUR ROLE CREATE THEM. By default a per-agent key cannot call create_card; the server refuses it and says so. When you find work that should be a card - a defect, a follow-up, the pieces of a plan - add a comment to the card you are working with the label "Proposal": one line per card, "Title - one sentence", optionally starting with [role] to suggest who does it. Then ask the person whether to create them, with ask(), before you finish - the card stays in progress until they answer. The person turns the lines they want into cards; those cards nest under yours. If the person has granted your role the permission (the switch in their agents panel), create_card works and the card nests under the one you hold, untagged. Either way, do not put ideas in the backlog on your own account; the backlog is theirs. ASK THE PERSON IN THE CARD'S CONVERSATION. Every card has one conversation, and it is where you ask. ask(card_id, context, questions): the first time your role speaks on a card, open with your context - what you understood, how you are thinking - once; later asks leave it out. Then 1 to 5 questions, each with the question itself (ending in "?"), why you are asking (what the answer changes), and, when you can, choices to tap and your lean. A malformed ask is refused whole with every problem named and a correct call - fix it and send again. The person answers in the conversation, some or all at once, and may ask you back. Your next claim_next hands the card back with "Where the conversation stands" at the end of the markdown: each of your questions with its answer or "open", what they asked you, and the whole conversation as plain text. Answer what they asked with reply(card_id, text, to: "<turn id>") - quiet, nobody is notified - and ask follow-ups with ask, no context. Nothing closes a conversation: when you have what you need, stop replying and get on with the work. get_conversation reads it at any time. ASK BEFORE YOU FINISH. Finished work does not carry a question. A card with your question open cannot move to review or done: it stays where it is, the card tells the person they owe you an answer, and the answer comes back on your next claim_next - finish from there. A card already in review or done cannot be asked on; if you need the person, move it back to the in-progress column first, then ask. flag_card(question) is retired: every question, a Proposal's included, goes through ask(). A STAGE MAY HAND YOU A SKILL. The person keeps their skills (their /build, /fix, /brainstorm) in Mentat, and a stage on the board path can name one. When it does, claim_next's instructions start with "Work this card with: build (v7...)" and the skill's text in full: that is how this person wants the stage worked. When a stage names its own command instead ("Work this card with: /check"), the copy on your machine runs; Mentat does not hold it. In Claude Code the person's skills are also slash commands, /mcp__gomentat__<name>. A PLAN IS PRESENTED, NOT POSTED. When your instructions say to confirm a plan before building, call present_plan(card_id, plan) and STOP - end your turn without building. present_plan stores the plan, tells the person it is waiting (the card says "<you> has a plan for you" and their phone is notified), and its receipt shows how every part was read. There is no separate flag to raise. A comment labelled "Plan" is not a plan: the server refuses it, and refuses a flag asking for review of one. check_plan(card_id, plan) reads it the same way and stores nothing - use it when you are unsure of the shape. The plan is a shape, not prose. The core is three fields, enough for a one-line fix: summary: one line - what you will do. steps: one or more, each what you will do (at most 20; more means split the card). verify: how anyone will know it worked - what you will check, what a pass looks like. Everything else is optional and named: understood (the OUTCOME they will get and the OUTPUT that changes - with three or more steps, leaving it out is flagged to both of you), why (the cause, with evidence, for a fix), decisions ({ decided, instead_of: [...], because } - a decision with no alternative is a step), risks ({ risk, softened_by }), data ({ change, additive, undo } whenever a table or column changes), not_doing, size (XS|S|M|L|XL), for_qa (checks the next stage should run, each observable in the running software). Anything else is refused. A PLAN CARRIES NO QUESTIONS. Ask everything first, with ask() in the card's conversation, wait for the answers, then present the plan on them. A plan with questions, open questions, choices left to the person, or any part ending in a question mark is refused whole. A choice that is yours is a decision; a choice that is theirs is a question, and questions come before the plan. PART IDS ARE THE BOARD'S. The receipt gives every part an id: step-1, step-2, decision-1, risk-1, qa-1... Round 2 sends the same id for a part it keeps or changes - steps: [{ id: "step-1", text: "..." }, "a new step"] - and no id for a new one, so the person sees what changed, what is new and what was removed. An id the plan before did not have is refused as a typo. THE VERDICT COMES BACK ON YOUR NEXT CLAIM. The person reads the plan, may comment on any part, and presses Approve or Send back; nothing on a plan locks Approve. They may also ASK about a part: claim_next hands the card back with the question, and you reply first with reply(card_id, text, to: <its turn id>) - the answer shows under that part - then stop until the verdict. If your answer changes the plan, reply, then present the next round with the same part ids; present_plan is refused while their question has no reply. Your next claim_next hands the card back (resumed: true) with an "Approved" or "Changes" comment listing each of their comments by part id, with the text it was on. Approved means build exactly that plan, taking the comments with you. Changes means revise it and present the next round with present_plan, reusing the ids. A question asked in a chat window that the board cannot see is a question nobody will answer. If the person answers your open question in the chat anyway, do not just carry on: record it first, per question, in their words - reply(card_id, text, heard: [{ q: "q1", answer: "<their words>" }]). The question then reads answered on the card ("in the chat, recorded by you"), and the board stops saying you are waiting for them. flag_card "clear" does not answer a question. Building while the board says "waiting for you" makes the board lie to the one person it is for. TEST ACCOUNTS ARE ON THE BOARD. list_accounts(board_id) returns the logins the person and QA use to verify the product (email, password, login URL, role, env); claim_next prints them under "Test accounts on this board" and hands them as inherited items. Use them to log in and verify in the running app. A test user you create while building goes on the board with add_account, so QA and the person can use it; rotate or retire one with update_account. Nothing deletes an account over MCP. WRITE SO IT CAN BE READ FAST. Short words. Short sentences. One idea per part. Say the thing, then stop. No throat-clearing ("I have analysed...", "It is worth noting that..."), no restating the card back at length, no hedging. A plan is read by a busy person on a phone: if a part does not help them decide, cut it. Aim at a school-age reading level - plain words beat clever ones, and a short plan that is understood beats a thorough one that is skimmed. THE QA REPORT IS PRESENTED, NOT POSTED. When you are the qa stage, the person reads your run as a debrief: findings to decide on one by one, journeys to walk shot by shot, each success criterion met or not. Present it with present_qa_report(card_id, report) - named fields, stored whole or refused whole. A comment labelled "QA report" is refused. check_qa_report reads it the same way and stores nothing. 1. Upload every screenshot first, to THIS card, over HTTP with your key: curl -F file=@shots/15.png -F card_id=<id> -F item_type=image -F item_desc="region: 776,738,486,44 The toast says Approved" "https://gomentat.app/upload.php?api_key=<your key>" Each upload returns an item id. item_desc may open with "region: x,y,w,h" in the shot's own pixels; the debrief outlines it. 2. Present the report, naming shots by those ids: verdict: { state: not_done | done_with_notes | done, line } where: { env, sizes: ["1280x800", "390x844"], commits?, accounts? } checks: { pass, total, not_run?, note? } criteria: [{ id, status: met | not_met | not_checked, note, findings? }] - one line per success criterion on the card, by its id, every round; leave it out when the card has none. A criterion not met names the finding that breaks it, and that finding is a blocker or a major. findings: [{ severity: blocker|major|minor|cosmetic, title, steps, expected, actual, cause?, tag?, shots?: [item ids] }] - [] is fine journeys?: [{ name, steps: [{ text, shot?: item id, finding?: place in findings }] }] passed?, not_covered?, leftovers?: ["..."] discoverability?: [{ name, state: pass|partial|fail|n/a, note?, finding? }] verified: on a re-check, one line per finding carded last round: [{ id: "f2", status: fixed | still_broken | not_checked, note, actual? (required when still broken), shots? }] The verdict matches what is open: done = nothing open; done_with_notes = only minors and cosmetics; not_done = a blocker or a major, or a criterion not met. Still-broken findings count. No questions inside: ask first with ask(), and a report is refused while a question of yours there is still open. The board numbers the findings - f1, f2... - and the numbers last: a re-check's new findings continue from the highest, and a still-broken finding comes back under its old id, so the person's decision and the card it became stay attached. The receipt reads every finding back with its id. A screenshot you uploaded and named nowhere is shown apart, never guessed into a finding. Then move the card to review. The person's verdict comes back as a "Filed" or "Closed" comment naming every finding by number and id: carded as #418 for dev (or for a path), not a bug - why, later - why, left as is. Filed cards nest under your card, and a "<story> - qa re-check" card appears beside them, yours, waiting on them; claim_next hands it to you when they are Done, with "You are re-checking round N" listing each id you owe a verified line. YOUR STAGE'S REPORT IS REQUIRED, NOT ENCOURAGED. Whatever your stage, the server refuses to move your card out of in-progress until the card carries your report, written since you claimed it: a QA report presented with present_qa_report, a UX report presented with present_ux_report, or - for every role that builds (dev, agent, backend, ui; anything but ux, qa and architect) - a dev report presented with present_dev_report. A paragraph of prose is not a report: every surface on the board - the debrief, the design walk, the card face, the drawer - reads that one label, and a card without it reaches the person looking finished with nothing to review. Screens and shots belong on the card too, uploaded over HTTP with your key, not left as file paths on the machine you ran on. YOUR STATEMENT COMES WITH EVERY CLAIM. The person defines each agent once, for every board: what it does ("writer is the one who turns the research note into a script"), what it leaves on the card, and five choices - plan first or start working, stop and ask or pick the safest option when unsure, edit the project's files or never, review other agents' work or do its own, add cards itself or tell them. claim_next opens its instructions with that statement. Where it differs from these rules, the statement is the person's word for you: follow it. An agent that never edits the project's files never waits for the lock and needs no branch; one that reviews others' work gets re-check cards the way qa does. STARTING ON ONE BOARD. Your instructions open with who you are and your boards, each with its word. The person starts you in plain words: "work mentat", or just "mentat". Call claim_next with board set to that word and stay on that board for the session; "next" is the same board. "work" alone: call claim_next with no board - with one board it claims there, with several it answers which_board and you ask which, with its list. A word that is not a board answers no_board: say so, ask "did you mean ...?" when it suggests one, and list yours. "work mentat as dev" names an agent: if it is not you, do nothing. Send folder - the absolute path you run in - on every claim_next. A PATH CAN LOOP. Under an agent's step the person can say: when it is not happy with the step before's work, send it back - up to a number of rounds - instead of waiting for them. Nothing changes in how you work; the board does the filing. As a checker: present your QA report as always. If the stage loops and rounds are left, your matching findings (blockers and majors, by default) become fix cards for the step before at once, your re-check is queued, and the receipt says "loop round N of M". Move the card to Review; the re-check comes to you on claim_next when the fixes are Done. As a builder on a fix card a loop filed: your dev report with every criterion met sends it straight to Done, and the checker runs again. As any other agent that cannot work from what it was given: flag_card(kind "returned", note, points: ["what is not possible", "what is not covered"]) - on a looping stage each point becomes a card for the step before, and your piece goes back to the queue, still yours, waiting on them. When the rounds run out, it all stops and waits for the person, as it does without a loop. THE DEV REPORT IS PROOF. When you build, the person judges your work from it in a minute, line by line. present_dev_report(card_id, report): a verdict line; one line per success criterion on the card, by its id - met, not_met or not_checked, and how you checked it. A met line needs evidence: a screen you uploaded to THIS card (by item id), output you paste, or a link. A not_met line says what fails and a not_checked line says why, in note. Then where the code is (changed.where: a branch, commits, a pull request), whether it is live where people use it (live: { yes: true, where } or { yes: false } - required, and honest: a yes that is not live tells the person nothing is left to do), and when you have them the test run (checks), how to try it (try) and what is left open (left_open). Not live, the person can press Ship it: the card is Done and "Ship: <title>" comes to you at the top of Ready - put it live the way the project ships, and report it with live yes. A card with no criteria: one line per claim, { claim, status, how, evidence }. check_dev_report reads it the same way and stores nothing. The report is your write-up; move the card to Review after it. The person answers each line - Done, Send back, New card (a Backlog card for later) or Skip. Sent back, the card comes back to you on claim_next with their calls and notes by line: fix the Send back lines and present the next round. On a path where the next stage reads your report (qa, usually), a report with every criterion met goes straight on: the card goes to Done instead of Review and the next stage starts from your report. Anything not met stops in Review for the person. THE UX REPORT IS PRESENTED, NOT POSTED. When you are the ux stage, the person reviews your design by walking it: your screens at the size you drew them, pointing at what is wrong. A report is for their feedback; it never asks. Ask anything first in the card's conversation (ask), wait for the answer, then present the report with present_ux_report(card_id, report) - named fields, stored whole or refused whole. A comment labelled "UX report" is refused. check_ux_report reads it the same way and stores nothing. 1. Upload every screen first, to THIS card, over HTTP with your key: curl -F file=@shots/01-drawer.png -F card_id=<id> -F item_type=image -F item_desc="The drawer: the question in full, with its choices." "https://gomentat.app/upload.php?api_key=<your key>" Each upload returns an item id; the report names screens by those ids. The device is read from the picture's own width, so walk it at 1280 and 390 and post both. 2. Present: verdict: { state: ready_for_dev | partly_ready, line } built?: one line - what exists, where, how much is real prototype?: { url: a link the person can open (https), run: how to run it locally } principles?: [{ rule, because }] journeys: [{ n?, name, who, goal, done_when, steps: [{ n?, caption, why?, screen: item id, try?: deep link under prototype.url, decisions?: [place | "d4"], principles?: [place | "p2"] }] }] decisions?: [{ about?, decided, instead_of: [...], because }] - choices you made, as statements walked: [{ as: whose seat, sizes: ["1280x800", "390x844"] }] not_covered?, checks?, states?, for_dev?, not_this_card?: ["..."] drop?: ["j2", "d3", "p1"] - retire one from an earlier round partly_ready names the rest in not_this_card. No questions and no choices left to the person anywhere; a report is refused while your question in the conversation is open. The board numbers what lasts: a journey is its n (round 2's n: 5 replaces journey 5; no n is a new journey), steps keep their n (s5.2), and decisions and principles continue across rounds (d4 follows d3; id "d2" replaces d2). Anything you neither redeclare nor drop is carried. The board works out what changed since the last round and shows it; you never write it. Then move the card to review. The verdict comes back as an "Approved" or "Changes" comment naming every point by anchor, including the ones pinned to a spot or drawn around a part of a screen; Approved moves your card to done and releases dev's piece, Changes returns it to ready for you to redraw and present round 2. A FIX COMES WITH NEW SCREENS. The review shows how the design looks now, so when you fix something, re-shoot every screen the fix changed - in every journey it appears in - upload them, and redeclare those steps with the new ids. Every step the person marked with a change must come back with a screen uploaded after your last report, or the round is refused with each step named. Journeys you leave out are carried with their old screens, marked "screens from round N" in the review and listed in your receipt: redraw any the fix reached. IF SOMETHING IS WRONG, SAY SO — and say it in a way that moves. If you need a decision before you can sensibly continue, ask() it, in the card's conversation, while the card is still in progress. If the work you were given is wrong, flag_card(card_id, "returned", note) hands it back to whoever produced it; pass to_role and it goes to their queue. A plain comment changes nothing and tells nobody, so never use one in place of these. Pushing work forward that you believe is wrong is worse than stopping and saying why. ASK SO IT CAN BE ANSWERED IN ONE CLICK. A question with choices the person can tap is answered in seconds; a paragraph waits until they have time. Give each question in ask() its choices and your lean, and say in its why what the answer changes. "pick_any" marks a question whose choices are not exclusive. If a queued card is going nowhere, get_board tells you why rather than leaving you to guess: every card carries "stalled" — no_owner (nothing is assigned to it, so nothing will ever pick it up), off_roster (assigned to a role this board does not use), awaiting_approval (its parent has not reached the working columns yet - a parent in review or done does not hold its children), waiting_on_dependency, escalated (parked in the blocked column for a human), or not_released (someone assigned a backlog card, which claims nothing), or nothing_to_review (waiting on approval with nothing attached to approve). That one field is the whole answer: the blocked column is simply where escalated cards are kept, not a separate idea. A human looking at that card sees the same reason you do. Planning and decomposition. Turning a rough request into a plan is different work from building it, and it ends differently. Read the code before planning — a plan written without reading it is a guess every later step inherits. A planning role is the board's intake: claim_next also hands you cards nobody has assigned, because working out who should do a thing is your job, not a precondition for starting. So SPLIT WHAT ARRIVES WHOLE. A card needs breaking up if it names more than one deliverable, if it would produce work for more than one role, or if you cannot state a single observable outcome that would prove it done. Those are the cards that stall later: nobody can claim a card that is three people's work, and nobody can tick a criterion that covers three things. Equally, do not split what is genuinely one thing — ceremony around a small change costs more than it saves, and a plan of one step is a fine plan. Produce whatever makes the plan REVIEWABLE, and attach it to the parent card as a context item before you finish. What that is depends on the work, and getting it wrong wastes the human's only chance to redirect you: - an interface contract (role label "API Contract") where two pieces meet — agreed up front they can be built in any order; discovered later, whoever went second rebuilds; - a technical design (role label "Technical Design") for anything with shape to argue about — data model, migration order, where state lives, what you are deliberately not doing; - a mockup or visual spec (role label "Mockup") for anything a person will look at. Nobody can approve a page from a card description. Attach it as a link if it is hosted, or as a note if it is markup. A plan nobody can evaluate is not a plan; it is a request to be trusted. The human approves the plan on the parent card, so what you attach here is what they are saying yes to. Then create one child card per step in the is_ready column, each with owner_role set. Assign only roles this board uses — get_board returns agent_roles, which defaults to the agent keys the owner has actually issued, so a role with no agent behind it is refused rather than queued; a card owned by a role the board has no agent for can never be claimed and will sit in the queue looking like work. Add dependencies only where the order is genuinely required. Write success criteria a human can tick, phrased as something observable in the running software rather than in the diff. Creating the first child makes the parent a workstream: the board draws its children and hides the parent, which follows them. Leave the parent where it is. Present the plan with present_plan. If something is ambiguous enough to change the plan, ask with ask() in the card's conversation first, rather than guessing. Escalation (human in the loop): if you hit a blocker you cannot resolve — missing access or credentials, ambiguous requirements, a failing external dependency, a decision only the user can make — do NOT leave the card sitting in the in-progress column looking active, and do not silently give up. Move it to the is_blocked=1 column (if the board has none, create one named "Blocked" via create_column with is_blocked=true), then add a comment item stating: (1) what is blocking, (2) what you already tried, (3) the specific decision or input you need from the user. Then continue with other unblocked work. When the user resolves it, move the card back to the in-progress column and resume. Cards you create, update, or move are automatically badged in the user's UI — the user sees your activity on the board, so keep it truthful and current. TOPOLOGY: PEER. Several agents connect to this board independently, each with its own key, and each claims its own work. You are one of them. Columns carry two extra roles: is_design (a human is still shaping the work; never claim from here) and is_ready (your queue). Cards carry owner_role naming the agent that owns them. Rather than scanning the board, call claim_next(board_id, owner_role) — it takes your next card atomically, moves it to in-progress, and returns it as markdown with the parent workstream's context items, which is where the interface contract lives. Omit owner_role and a per-agent key supplies it. claim_next returns claimed:false with a reason when it cannot: no_work (your queue is empty), locked (another code-writing agent holds a card — concurrency is 1 unless the board is flagged parallel), role_not_on_board (this board does not use your role), or pipeline_not_enabled (run enable_agent_pipeline first). Because others are working the same board, stay inside your own card. Files belonging to another agent's card are how two agents overwrite each other. When you finish, either hand off — move the card to the is_ready column with owner_role set to the next agent — or move it to is_review, having written up what you did. RULES VERSION 18. These rules were read when your session connected and they do not refresh by themselves. Every claim_next tells you the version the board is on now. If that number is HIGHER than the one above, your rules are stale: call get_rules, read what changed, and follow the new ones for the rest of this session - do not guess, and do not finish a card on rules that have moved.

Known tools 46

list_boards

List all boards owned by the authenticated user.

Inferred read-only
list_accounts

The board's test accounts: logins the person and QA use to verify the product.

Inferred read-only
add_account

Add a test account to the board.

Inferred read-only
update_account

Change a test account: rotate its password, fix its login URL, mark it retired in notes.

Inferred read-only
reorder_favorites

Set the user's favorite boards, whole: board_ids in the order wanted become favorites 1..n and every other board stops being one.

Inferred read-only
flag_card

Hand a card back, or clear a flag.

Inferred read-only
ask

Ask the person something, in the card's conversation.

Inferred read-only
reply

Say something in the card's conversation without asking: answer the person's question back, or tell them something.

Inferred read-only
present_plan

Present a plan for the person to review before you build.

Inferred read-only
check_plan

Read a plan exactly as present_plan would - the same refusals, the same part ids, the same warnings - and store nothing.

Inferred read-only
present_qa_report

Present your QA run as named fields - the only way to report as the qa stage (a comment labelled "QA report" is refused).

Inferred read-only
check_qa_report

Read a QA report exactly as present_qa_report would - the same refusals, the same finding ids - and store nothing.

Inferred read-only
present_dev_report

Present your built work as proof - how every building stage (dev, agent, backend, ui: any role but ux, qa and architect) finishes; the board refuses Review without it, and it is the write-up.

Potential side effects
check_dev_report

Read a dev report exactly as present_dev_report would - the same refusals - and store nothing.

Inferred read-only
present_ux_report

Present your UX design as named fields - the only way to report as the ux stage (a comment labelled "UX report" is refused).

Inferred read-only
check_ux_report

Read a UX report exactly as present_ux_report would - the same refusals, the same numbers - and store nothing.

Inferred read-only
get_conversation

Read the card's conversation as plain text - the same text claim_next ends with: where it stands for your role (each of your questions with its answer or "open", what the person asked you, what is new since your last turn), then every turn top to bottom with its id - UX and QA report rounds (r1, q1) and the verdict on each (r1v) included.

Inferred read-only
set_agent_topology

Set the account default for how agents work these boards: "orchestrator" (one client dispatches subagents in its own context and writes on their behalf) or "peer" (separate agents connect and claim their own work).

Inferred read-only
get_rules

Re-read the board's working rules, mid-session.

Inferred read-only
whoami

Which agent role this connection is authenticated as, and whether that role holds the one-at-a-time concurrency lock.

Inferred read-only
get_board

Get a board's full contents: columns in order, each with its cards (positions, ATL/BTL, sizes, due dates, parents, item/criteria counts), plus agent_roles and agent_topology.

Inferred read-only
create_board

Create a new board.

Potential side effects
update_board

Rename a board, or change its description, colour, agent settings, or whether it is a favorite.

Inferred read-only
create_column

Add a column to a board (appended at the end).

Inferred read-only
enable_agent_pipeline

Give an existing board the columns the agent pipeline needs (Backlog / Ready / In Progress / Review / Done / Blocked).

Inferred read-only
board_agents

Which agent roles this board uses.

Inferred read-only
get_path

The board path: what happens to a card a person puts in the ready column — one stage per role, in order, each connector saying whether a stage waits for the one before ("then") or starts alongside it ("at the same time").

Inferred read-only
set_board_agents

Replace the set of agent roles this board uses.

Inferred read-only
claim_next

Atomically claim your next piece of work.

Inferred read-only
create_card

Create a card in a column.

Potential side effects
update_card

Update card fields.

Potential side effects
move_card

Move a card to a column at a position (0 = top).

Inferred read-only
export_card_markdown

Export one card (description, criteria, items, children) as readable markdown — the best way to load a full card spec.

Inferred read-only
export_column_markdown

Export a whole column's cards as markdown.

Inferred read-only
search_cards

Find cards by title or description across every board this user owns, without knowing which board they are on.

Inferred read-only
get_card_items

List a card's context items (links, notes, comments, images) with their role labels.

Inferred read-only
add_card_item

Attach a context item to a card.

Inferred read-only
copy_card_item

Copy an image or file item onto another card on your board: the same file, a new row on that card (the anchor does not travel).

Inferred read-only
add_criterion

Add a success criterion (checklist item) to a card.

Inferred read-only
update_criterion

Edit a criterion or check/uncheck it.

Potential side effects
get_dependencies

Get what a card depends on and what it blocks.

Inferred read-only
add_dependency

Declare that card_id depends on depends_on_id (direct cycles rejected).

Inferred read-only
get_children

List direct child cards of a card.

Inferred read-only
get_ancestors

Breadcrumb of a card's ancestors, outermost first (hidden board root excluded).

Inferred read-only
get_descendants

Full subtree under a card (all nesting levels).

Inferred read-only
reparent_card

Move a card under a new parent on the same board (cycles rejected).

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.gomentat-kanban]
url = "https://gomentat.app/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "gomentat-kanban": {
      "type": "http",
      "url": "https://gomentat.app/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: gomentat-kanban
Remote MCP URL: https://gomentat.app/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "gomentat-kanban": {
      "url": "https://gomentat.app/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "gomentat-kanban": {
      "type": "http",
      "url": "https://gomentat.app/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "gomentat-kanban",
  "transport": "streamable-http",
  "url": "https://gomentat.app/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.