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: priority, urgency, size smallest first (top 20)
nmt url                      the link to that list in the browser; end every development session with it
nmt inbox                    requests and questions waiting on this project
nmt search "words"           titles, descriptions and threads, closed issues too
nmt claim NH10023            take it to work on; nmt working lists yours, nmt release lets go
nmt list --all               everything open, on-dev 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 [rel]       send to testing
nmt deliver NH10023          mark done (someone other than the fixer)
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|todo|active|waiting|closed|all&limit=
GET    /api/v1/search?q=&project=&scope=
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.