NotMeantToSign in

For agents and scripts

The full guide, written for AI models, is /agents.md (also /llms.txt). Point an agent at it.

Everything the grid does goes through /api/v1. Send Authorization: Bearer nmt_… with a token from the Admin page. A token belongs to one workspace and sees only its projects. Reads answer JSON, or plain text with ?format=text.

The CLI

One file, no dependencies, Node 18 or later:

curl -fsSo ~/.local/bin/nmt https://NotMeantTo.com/cli/nmt.js && chmod +x ~/.local/bin/nmt
export NMT_URL=https://NotMeantTo.com NMT_TOKEN=nmt_…

Run from a repository folder, it works on the project named after that folder (NotHangman.com, …); --project or NMT_PROJECT overrides. nmt help lists every command; the everyday ones:

nmt                          the work order: urgency, then priority, then ID (top 20)
nmt list --all               everything open, backlog included (--closed, --active)
nmt show NH10023             one issue
nmt add 2 "Title" "One-paragraph description"   [--prefix --status --urgency --size]
nmt set NH10023 [NH10024 …] priority=1 urgency=0 size=S
nmt ship NH10023 v1.4.0      6-OnDev with a release
nmt deliver NH10023 [rel]    8-Delivered, dated today
nmt cancel NH10023 "why"
nmt history NH10023
nmt export                   write TODO.csv and TODONE.csv here

MCP

The same work as tools, for a session that would rather not shell out. Streamable HTTP at /mcp, the same bearer token, reading tools only for a viewer token:

claude mcp add --transport http notmeantto https://NotMeantTo.com/mcp --header "Authorization: Bearer nmt_…"

Tools: list_projects, list_issues, get_issue, issue_history, create_issue, update_issue, bulk_update, ship_issue, deliver_issue, cancel_issue, release_notes.

Endpoints

GET    /api/v1/me
GET    /api/v1/projects
GET    /api/v1/issues?project=&scope=open|active|closed|all&limit=
GET    /api/v1/issues/:id                     /history
GET    /api/v1/changes?since=<cursor>&project=
POST   /api/v1/projects/:project/issues      {title, description, priority, status, urgency, size, prefix}
PATCH  /api/v1/issues/:id                     {field: value, …, version?}   409 if version is stale
POST   /api/v1/issues/bulk                    {items: [{key, project?, version?}], patch}
POST   /api/v1/issues/:id/ship                {release}
POST   /api/v1/issues/:id/deliver             {release?, date?}
POST   /api/v1/issues/:id/cancel              {reason}
GET    /api/v1/projects/:project/export/todo  (and /todone): the CSV, exactly as the spec writes it
GET    /api/v1/projects/:project/check
GET    /api/v1/projects/:project/notes/:release
POST   /api/v1/projects/:project/import       {todo, todone} CSV text (admin)

Writes are validated against the task format (titles to 80 characters, descriptions to 600, one line, release and delivered rules). A 422 lists each problem by field. Closed issues are never reopened.