MCP and AI agents
Give your agent the same project context your team sees.
The MCP server calls the same public API as the web app, so everything an agent does passes the same permissions and business rules, and is recorded under your name.
Works with Claude Code, Codex, Cursor and other MCP clients that send a token over HTTP, or locally over stdio.
One request, done the way you would do it.
A triage request becomes a search, an update and a time log against the same API the app uses. The issue list changes as each call lands. Open the tool calls to see exactly what was sent.
Alex Lee assigned ACME-12 to Alex Leejust now
Alex Lee changed Status: Open to In Progressjust now
Alex Lee logged 20m, Developmentjust now
›Find the unassigned high-priority bugs in ACME, take the newest one, and log the 20 minutes I just spent on it.
- Found the bugs3 unassigned, Major or Critical
- Assigned ACME-12 to youStatus set to In Progress
- Logged the time20m of Development on ACME-12
- search_issuestype: Bug #Unresolved assignee: Unassigned priority: Major, Critical
- update_issueACME-12, assignees: me, status: In Progress
- log_timeACME-12, 20m, Development
ACME-12 is yours and In Progress, with 20m logged. ACME-7 and ACME-9 are still unassigned, and ACME-7 is Critical.
Beyond triage.
Sprints, fields, knowledge, reports, pull requests and your inbox, each in a sentence. The agent picks the tools; you read the plan before anything changes.
Sprints
Plan Sprint 10 in ACME for 2–13 Nov, put ACME-20 and ACME-21 in it with ACME-21 on top, start it, and show me the board.
create_sprintmove_to_sprintstart_sprintget_board
Custom fields
Add a Severity select to ACME for Bugs with Low, High and Critical, set ACME-7 and ACME-9 to Critical, and show me the critical bugs.
create_custom_fieldset_field_valuessearch_issues
Knowledge base
What happened last time payments broke?
searchtag: payment-outage
The outage issues and the write-up come back side by side.
Reports
How much of last week went on testing in ACME, and how is the Sprint 08 burndown looking?
run_reportreport: timerun_reportreport: burndown
The agent reads the same numbers the chart shows.
Development
Did ACME-12 merge? Is anything still open for it?
get_issue_developmentissue: "ACME-12"
The pull request, its review and CI state, and whether it closes the issue.
Inbox
What's waiting on me in ACME? Mark ACME-12 read.
list_notificationsmark_notifications_read
Everything you can do in the app, except handle credentials.
The tools cover the product, not a showcase subset. A test in the open repository fails when an API route has neither a tool nor a stated reason to have none.
Finding your way
Who you are, your organisations, projects and each project’s schema.
Search
The search bar’s query language, issues and articles together, and query suggestions.
Issues
Create, update, bulk update, delete and restore, with the full activity history.
Custom fields and links
Define fields, set values by name, link and unlink issues.
Comments and tags
On issues and articles, with tag counts across both.
Time
Log, list, correct and remove work items against the issue they explain.
Files
Attach files from disk in three steps, or text the agent already has.
Saved views
Create and share the queries your team keeps returning to.
Sprints, backlog and boards
Plan, start and finish sprints; order the backlog; shape boards.
Knowledge base
Write, search, publish and restore project articles.
Reports
Any of the nine reports, with the table and series behind the chart.
GitHub and GitLab
Repositories, linked pull requests with review and CI, and the delivery log.
Automations
Status rules on git events and subtasks, with dry runs and the run log.
Notifications
Your inbox and how you want to be told.
Projects, organisation and people
Settings, invitations, roles and the audit trail.
Prompts
Triage, duplicates, standup, release notes, estimates, sprint report, document this.
Connect in two steps.
- In the app, open Settings → Access tokens, create a token with the scopes the agent needs, and copy it. It starts with
nl_pat_and is shown once. - Add the server to your client with the token in place of
nl_pat_….
Then ask: “Who am I in Nothing Left?” The agent answers with your name, your token’s scopes and your organisations.
claude mcp add --transport http nothingleft https://api.nothingleft.dev/mcp \ --header "Authorization: Bearer nl_pat_…"
[mcp_servers.nothingleft]
url = "https://api.nothingleft.dev/mcp"
http_headers = { Authorization = "Bearer nl_pat_…" }{
"mcpServers": {
"nothingleft": {
"url": "https://api.nothingleft.dev/mcp",
"headers": { "Authorization": "Bearer nl_pat_…" }
}
}
}Token scopes
Start with issues:read and add only what the work needs. Tokens are never edited; create another one instead.
issues:read- Read projects, issues, members, and search
issues:write- Create and change issues, tags, links, files and shared saved views
comments:write- Comment
time:write- Log time
admin:project- Change project settings, statuses and types, and project members' roles
admin:org- Create projects, invite and remove people, change organisation roles and settings, read the audit log
The agent acts as you, and never as more than you.
It can never do more than your role allows, and a token can narrow that further. Everything it changes appears in the activity log under your name.
Refused by name.
If your role does not allow an action, the tool says so and nothing changes. If only the token stands in the way, the answer names the missing scope.
This access token does not have the time:write scope
Deletes and access changes ask you first.
Deleting work, changing a project’s statuses or a member’s role stops and asks in your agent app. Nothing changes unless you accept, and the agent cannot answer for you.
remove_member will remove @casey from ACME: 2 open issues reassigned to @alex … Go ahead?
What people write is treated as data.
Issue text, comments and articles arrive marked with who wrote them, and the agent is told not to follow instructions inside them. Read what it proposes before you accept a change.
Credentials stay in the app.
Creating and revoking tokens, passwords, two-factor authentication, transferring ownership and deleting an organisation are never available to an agent.
Moving from another tracker, with you checking the map.
Connect the same agent to your current tracker and to Nothing Left. It reads the unresolved work there, proposes how people, fields and tags map across, and creates the issues here once you approve.
›Find the unresolved issues in my YouTrack project, show me the proposed people, field and tag mapping, then create them in Nothing Left after I approve.
This is a guided migration by prompt, not a one-click importer. Source access, field mapping, duplicates, attachments, history and who is who all need your review. For a bulk move, use the generic CSV import.
Other trackers have MCP too.
Agent access alone is no longer a difference. The case for this one rests on how much of the product the agent reaches, and how plainly it reads.
No side door.
The MCP server is a client of the public REST API. If the app can do something, the agent can, credentials aside. If the app cannot, neither can the agent.
Names, not numbers.
ACME-12, @alex, In Progress, My open bugs. Markdown in, Markdown out. Nothing to look up before a model can reason about the work.
One query language.
The agent searches with the same language as the search bar, saved views and report scopes, so a query it writes is one you can read and reuse.
Open code.
AGPL-3.0. Read every tool definition, or run the same build yourself.Source on GitHub
Connect an agent in a few minutes.
Join the beta, create a token with issues:read, and ask your agent who you are. Add scopes when the work needs them.