Yarnt MCP Server
The Yarnt MCP server is the agent twin of the REST API: the same operations and permission model, exposed as MCP tool calls instead of JSON over HTTP. Point Claude, or any MCP client, at it and it can list, create, and move tickets the same way you do.
Server URL: https://mcp.yarnt.app — paste this bare
origin into your client. No path suffix.
Connecting
Transport is streamable HTTP, stateless: a client POSTs to the base URL for
every call. There's no SSE stream to keep open; GET and DELETE
against the URL both return 405.
Most clients only need the URL — they discover the OAuth endpoints themselves. For Claude Code:
claude mcp add --transport http yarnt https://mcp.yarnt.app
Other MCP clients take the same URL in whatever "add server" UI they have.
Authorizing
The first call opens a browser for a standard OAuth flow:
- The client discovers the OAuth endpoints and opens a browser.
-
You land on
https://app.yarnt.app/consent, signing in to Yarnt first if you aren't already — it reuses your normal web session, there's no separate MCP login. - The consent screen says the agent wants to act in your workspace as a robot — a least-privilege workspace member. Pick an existing robot from the "Act as" dropdown, or type a name and click Add to create one right there. You do not need to pre-create anything in Settings.
- The scope shown is
tickets— the only scope there is. - Click Authorize; the browser returns to the client and the agent is connected.
Why a robot
The agent never holds your password or a service key — only a scoped, revocable token bound to the robot. It sees and does exactly what that robot's membership permits. Every call goes through the same row-level security and limit rules as the app; it cannot touch billing.
Tokens & revoking
Access tokens last 1 hour; refresh tokens last 30 days and rotate on every use — each refresh issues a new one and revokes the old. Clients refresh automatically; you don't have to do anything. Revoke access by disabling the robot or revoking its refresh token.
Auth is OAuth 2.1 with PKCE (S256, required). Dynamic Client Registration is supported, so clients self-register with no manual setup.
Limits that apply to agents
A robot is exempt from the in-flight (WIP) cap: starting a ticket assigned to a robot never fails on WIP, and a robot's in-flight work never eats into a human's cap. Robots are not paid seats and do not inflate the workspace backlog pool.
The workspace backlog cap still applies — an agent creating tickets can hit a full queue like anyone else. The free exits are the same as for anyone: finish something or drop something.
Tools
Tools return plain text, not JSON. Assignee values are user ids (from list_users or whoami), never emails.
| Tool | Parameters | Does |
|---|---|---|
whoami | — | Your own id name (kind) plus the person who granted you access. Use instead of guessing which list_users row is you. |
list_tickets | list opt (now / next / queue default / wishlist / finished / all), assignee opt (me / unassigned / user id), project opt | Tickets in priority order; each row shows its list. |
get_ticket | id req | Full detail including the body/description. |
create_ticket | title req, project opt, wish opt bool | Adds to the queue's next list; wish: true files it on the wishlist instead, spending no backlog slot. |
update_ticket | id req, title opt, body opt, assignee opt/nullable, project opt/nullable | Edit fields; omit to leave unchanged, null to clear. To move between lists use start/finish/drop. |
start_ticket | id req | Start it. |
finish_ticket | id req | Finish it. |
drop_ticket | id req | Drop it. |
list_users | — | Members you can assign to: id name (kind), kind is person or integration. |
list_projects | includeArchived opt bool | Project names; archived omitted by default. |
add_comment | ticketId req, body req | Comment on a ticket. |
list_comments | ticketId req | Comments, oldest first. |
list_history | ticketId req | Change history, oldest first. |
Sample output
list_tickets:
b1e2... [now] Fix the flaky deploy step @Claude
c7a4... [next] Write onboarding empty states (unassigned)
whoami:
470ed8e7-... Claude (integration)
granted by: 9eb481fe-... Ada
Questions about the MCP server: [email protected].