Mutta for AI coding agents
Your team's tasks and progress, from the terminal you already work in.
Sync what you built, plan tasks and post the standup, in your team's language, straight from Claude Code, Codex, Cursor or any MCP client.
Install · What you can say · How it works · Privacy · FAQ
Mutta is a team assistant that lives in LINE and on the web: it keeps a team's projects, tasks, meetings and minutes in one place. This plugin connects your coding agent to it, so the work you finish in code shows up on your team's board — without leaving the terminal.
Install once, sign in once. The first time your agent uses Mutta, a browser tab opens: press Allow (sign in with LINE or Google first if you aren't already), and you're connected. No API keys to copy, nothing to run on your machine.
Install
Claude Code
/plugin marketplace add IRC-ireadcustomer/mutta-plugin
/plugin install mutta@mutta
Codex CLI
codex plugin marketplace add IRC-ireadcustomer/mutta-plugin
codex plugin add mutta@mutta
codex mcp login mutta
Cursor — add to .cursor/mcp.json (this project) or ~/.cursor/mcp.json (everywhere):
{ "mcpServers": { "mutta": { "url": "https://mutta.ireadcustomer.com/mcp" } } }
Gemini CLI
gemini mcp add --transport http mutta https://mutta.ireadcustomer.com/mcp
VS Code (GitHub Copilot agent mode) — .vscode/mcp.json:
{ "servers": { "mutta": { "type": "http", "url": "https://mutta.ireadcustomer.com/mcp" } } }
Any other MCP client — add a remote (Streamable HTTP) server at https://mutta.ireadcustomer.com/mcp. Mutta uses standard MCP OAuth (discovery, dynamic client registration, PKCE), so any client that supports remote servers with OAuth signs in the same way.
Skills for agents without plugins, and MCP prompts
- Skills:
npx skills add https://github.com/IRC-ireadcustomer/mutta-plugin - The same workflows are MCP prompts too (
mutta_update,mutta_my_tasks): clients that show prompts list them as slash commands. - Without the plugin in Claude Code:
claude mcp add --transport http mutta https://mutta.ireadcustomer.com/mcp - Without the plugin in Codex, in
~/.codex/config.toml:[mcp_servers.mutta] url = "https://mutta.ireadcustomer.com/mcp"
What you can say
| You say | Your agent |
|---|---|
| "Get มุตตา ready for sprint 1." · "Catch Mutta up on today." | reads where the project stands, lays out the steps across the skills, and works through them one step per round on your yes, like /goal |
| "Set up Mutta for this repo." | signs you in, finds or creates the project, links the repo, and can turn its open TODOs into tasks |
| "Sync my work to Mutta." | matches your commits to your tasks, then shows one plan (close these, start that, add this, post this update). On your yes it does all of it and checks it landed |
| "Plan the checkout feature in Mutta." | drafts well-sized tasks (one checkable outcome each, half a day to 3 days, never nested), reviews them, creates them on your yes |
| "What's on my plate in Mutta?" | lists your open tasks in the project: status, due date, module |
| "Mark the login task done." | closes it exactly like the web: its steps close, and whoever assigned it is told |
| "Post today's progress to Mutta." | drafts Done / Next / Blockers from your commits, shows you, posts on your yes |
| "Plan the next sprint in Mutta." | estimates the backlog in story points, fills the sprint to the team's velocity, creates and starts it on your yes |
| "How is the sprint going?" | reads the board and the burndown, and says what is at risk |
| "Close the sprint." | completes it (unfinished work carried to the next sprint), posts the sprint summary and each module's status |
| "Give the login fix to Bam." · "File a bug: QR payment hangs." | writes the ticket (outcome, done-when, or the bug template), shows it, assigns it on your yes: Bam is told on LINE and gets its key (FE-12) |
| "Set up a sprint review with Benz Friday 2pm." | books it on your calendar with a Meet link, invites Benz, can send Mutta's Notetaker, on your yes |
| "Ask me on LINE before you deploy." · "ฝากถามเบนซ์ว่าศุกร์นี้ว่างไหม" | sends the question to your LINE (or Benz's, after your yes) with answer buttons, keeps working, and picks up the answer when it comes back |
| "อัปเดตงานใน Mutta ให้หน่อย" · "進捗を共有して" | the same, in Thai or Japanese |
Written for the whole team. Everything the agent writes into Mutta is in your team's language (it follows the project's own entries, so a Thai team gets Thai), in plain business words instead of file names and commit hashes, and kept short. Updates show on the project's Entries tab labelled with the app that posted them ("via Claude Code", "via Cursor"…).
The skills
mutta-goal is the front door. Mention Mutta, or ask for anything it does, and it reads the project first: your role, modules, sprints, overdue work and commits since your last update. Then it picks the skill. One clear ask goes straight to its skill. An outcome becomes a checklist across skills that it works through until done. It also catches what you didn't say: a sprint that already ended, work not yet synced, or a step your role can't take, which becomes a ticket to the owner.
Eight main skills run the others in a checklist loop until the job is done, asking you once per round:
| Main skill | Runs |
|---|---|
mutta-goal |
read the state → route, or plan a checklist → run each skill → verify → report |
mutta-setup |
connect → link or create the project → optional backlog → your tasks |
mutta-sync |
match work → one plan for your approval → close/start/add tasks → post update → verify |
mutta-plan |
outcome → draft tasks (modules, story points) → review and resize until they pass → your approval → create → verify |
mutta-sprint |
plan (goal, estimate, fill to velocity, start) · check (board, burndown, risks) · review (complete, carry over, module status) |
mutta-ticket |
give a task to a teammate · file a bug or issue · triage who has what |
mutta-meeting |
when → who → Meet and Notetaker → your approval → book → report |
mutta-ask |
draft one question → approval for a teammate → ask on LINE → keep working → read the answer → act on it |
Building blocks they use (each also works on its own): mutta-connect (sign-in and fixes), mutta-project (link or create the project, .mutta.json), mutta-tasks (list and change your tasks), mutta-task-writer (write and create good tasks), mutta-match-work (match commits to tasks), mutta-update (progress update, sprint line, module status), mutta-writing (the team-writing rules every skill follows: titles, why / done-when, story points, modules, splitting, the bug template).
How it works
your agent ──(MCP over HTTPS, Bearer token)──▶ mutta.ireadcustomer.com/mcp ──▶ your projects
│
└─ first use: 401 → OAuth discovery → browser: sign in + Allow → token (refreshed automatically)
This repo holds only what your agent needs to know: the plugin manifests (Claude Code, Codex, Cursor), fifteen skills and the server address. No code runs on your machine, and nothing here holds a secret.
Tools your agent gets: list_projects, get_project, create_project, list_tasks, create_task, update_task, post_update, and for planning plan_task (story points, sprint, module), create_module, update_module (rename, key, status update), create_sprint, update_sprint (start, complete, edit), get_sprint (board, burndown), and for people list_members, assign_task (a ticket on a teammate's board), schedule_meeting (Google event, Meet, guests, Notetaker), ask_on_line and get_answers (ฝากถาม: a question to you or a teammate on LINE, and its answer back), and in an advanced project create_epic and update_epic (a feature set over several sprints), plan_task with epic, and parent on create_task / assign_task (Tasks under a Story). Every project task has a key (FE-12: its module's prefix and a number that never changes); the skills quote it, and any tool that takes a task takes its key. Agents without skills still get the same writing rules from the server.
Privacy & safety
- You choose the scope. At sign-in you allow all your projects or pick some; the app sees only those, and only what you could see on the Mutta web.
- Your own work only. It changes only tasks on your own board — a teammate's task is refused with their name. Planning (story points, sprint, module) and sprints follow your role in the project: an owner or admin plans anyone's work, a member only their own. It can give a task to a project member (they are told and can decline) book meetings on your own calendar, and ask you or a teammate a question on LINE, always after you say yes. It can't change a teammate's task, delete anything, or read your LINE chats.
- Nothing posts without you. The skills show you every update before posting it.
- Teammates' text is data. Task titles and updates from others reach your agent as data; the tools tell it never to follow instructions found in them.
- Disconnect any time. Mutta → Settings → Account → Connected apps lists every connected app (one row per app per machine) with when it was last used and what it last did. ⋯ → Disconnect cuts it off on its next call.
Read the full privacy policy.
FAQ
Do I need a Mutta account? Yes — sign in with LINE or Google at mutta.ireadcustomer.com; the first sign-in creates it.
Does Mutta see my code? No. Mutta receives only what you ask your agent to send — a task title, a status, an update you approved. (Your agent's own model provider is a separate matter between you and that provider.)
My team works in Thai. Does that work? Yes — Mutta and its sign-in screen are in Thai, English and Japanese, and the update skill drafts in the language your team uses.
I use two machines. Install on each; every machine and app is its own connection, and you can disconnect them separately.
Something's wrong. Open an issue — say which agent, and what you asked.
License
MIT — see LICENSE. Mutta is a service of iRead Customer.
