AI agents
Letting Claude, ChatGPT, Cursor and your own scripts work on tickets, boards and sprints as you, through MCP or the REST API.
AI agents
Note
The MCP server is off in a new workspace until an administrator switches it on under Administration, Modules and features. If you do not see it in yours, ask an administrator.
An AI agent such as Claude, ChatGPT, Cursor or GitHub Copilot in VS Code, or a script of your own, can read and work on tickets, boards and sprints for you. It connects to the workspace in one of two ways:
- MCP (the Model Context Protocol) at
https://your-workspace.albaticket.com/mcp, which AI applications understand without any setup beyond the address. - The REST API at
https://your-workspace.albaticket.com/api/v1, for scripts and for agent tools that take an OpenAPI description.
An agent always acts as you. It sees the projects, tickets and comments you can see and nothing else, and it can do only what you may do: if you cannot move tickets in a project, neither can it. Every change it makes is recorded in the ticket's history under your name, with the agent's name beside it ("Ada Lovelace via Claude Code …"), and people watching the ticket are notified as they would be for any other change.
Only members can connect agents. Customers cannot. Open AI agents from your account settings (Manage AI agents) to find the addresses, make tokens and see what you have connected.
Connecting with OAuth
Most AI applications connect by signing in. You give them the MCP address and they send you to a page in the workspace that asks whether to allow them:
- Claude (claude.ai and Claude Desktop): add a custom connector with the MCP address.
- Claude Code: run
claude mcp add --transport http alba https://your-workspace.albaticket.com/mcp, then/mcpinside Claude Code to sign in. - Cursor: add the server to
.cursor/mcp.jsonas{"mcpServers": {"alba": {"url": "https://your-workspace.albaticket.com/mcp"}}}. - VS Code: add it to
.vscode/mcp.jsonas{"servers": {"alba": {"type": "http", "url": "https://your-workspace.albaticket.com/mcp"}}}. - ChatGPT: where your plan allows custom connectors, create one with the MCP address and OAuth.
Any other application that supports remote MCP servers with OAuth works the same way.
The page names the application and the address it will return you to, and asks what it may do:
- Read: see what you can see. It changes nothing.
- Read and change: also create, edit, comment on, log time on, move and assign tickets, move cards on boards and plan and run sprints, as far as you may.
Allow only an application you started connecting yourself. The name on the page is the one the application gave itself. When you allow it, the application gets a token that lasts an hour and renews itself while you keep using it. If nobody uses it for 30 days, the application has to ask you again.
Personal tokens
An agent or script that cannot sign in by itself uses a personal token instead. Under Personal tokens, give the token a name you will recognise, choose Read or Read and change, and choose when it expires (30, 90 or 365 days, or never). The token is shown once, when you make it. Copy it then, because it cannot be shown again. Anyone who has it can act as you, so keep it like a password.
Send it with every request as Authorization: Bearer <token>:
curl -H "Authorization: Bearer alba_pat_…" https://your-workspace.albaticket.com/api/v1/me
MCP applications take it as a header too. For example, in Claude Code:
claude mcp add --transport http alba https://your-workspace.albaticket.com/mcp --header "Authorization: Bearer alba_pat_…"
What an agent can do
Through MCP an agent is offered these tools. A connection with read access sees only the ones that read (whoami, list_projects, describe_project, search_tickets, get_ticket, list_boards, get_board, get_backlog, list_sprints, list_activities, get_activity, list_organizations, list_phases, report_hours, search_contacts, get_contact, search_companies, get_company, list_interactions and list_follow_ups).
| Tool | What it does |
|---|---|
whoami |
Says who it acts for and whether it may change things |
list_projects |
Lists the projects you can see |
describe_project |
Gives a project's ticket types, priorities, resolutions, components, versions, labels and the people its tickets can be assigned to |
search_tickets |
Finds tickets by words, project, status, assignee, reporter, label or type |
get_ticket |
Reads a ticket with its description, the comments and logged activities you may read, links, sub-tasks and the transitions you can take |
create_ticket |
Creates a ticket |
update_ticket |
Changes a ticket's summary, description, type, priority, assignee, labels, components, parent, due date or custom fields, and a deal's company |
add_comment |
Comments, or adds an internal note in a helpdesk project |
log_work |
Logs time spent on a ticket, with an optional note |
transition_ticket |
Moves a ticket through its workflow |
assign_ticket |
Assigns or unassigns a ticket, with an optional comment |
list_boards |
Lists the boards you can see, with their numbers |
get_board |
Shows a board's columns and cards in board order; a scrum board shows its active sprint unless another is named |
get_backlog |
Shows a scrum board's open sprints with their tickets, then the backlog |
list_sprints |
Lists a board's sprints, closed ones included, and whether you may manage them |
move_card |
Moves a ticket to another column, which moves it through its workflow, and places it before or after another card |
move_to_sprint |
Puts a ticket into an open sprint or back into the backlog |
create_sprint, update_sprint |
Adds a sprint, or changes its name, goal or dates |
start_sprint, complete_sprint |
Starts a sprint, or completes the active one and moves its unfinished tickets to another sprint or the backlog |
delete_sprint |
Deletes a sprint that has not started; its tickets go back to the backlog |
list_activities, get_activity |
Lists your activities, and everyone's where you may see all time, or reads one with its history |
create_activity, update_activity, stop_activity, delete_activity |
Records an activity (with an end, a duration, or running), changes it, stops it or deletes it, under the same rules as the activities page |
list_organizations, list_phases |
Names the customers, and the billing periods you may see, with rates only where you may see billing |
report_hours |
Adds the hours of a period up, in total or by day, week, project, customer, label, ticket or member, with amounts where you may see billing |
search_contacts, get_contact |
Finds contacts, or reads one with their addresses, numbers, notes and what they have agreed to, where you may see the CRM |
create_contact, update_contact, add_contact_email, add_contact_phone |
Creates a contact, changes one, or adds an address or a number |
search_companies, get_company, update_company |
Finds companies, reads one with its contacts and deals, or changes its CRM details |
list_interactions, log_interaction |
Reads what happened with a contact, a company or a deal, or logs a note, a call, a meeting or a follow-up |
list_follow_ups, complete_follow_up |
Lists your open follow-ups, or marks one done |
A deal is a ticket in a sales project, so the ticket tools work on it: get_ticket gives its company, value, expected close and people, create_ticket and update_ticket set its fields and its company, and transition_ticket moves it, with the reason when it is lost. An agent never records consent, exports or erases a contact, merges contacts or sends them email: those stay with you, on the pages. What it reads about contacts is personal data, sent to whoever runs the agent, as everything it reads is.
For time, an agent must say which time zone a day or a local time is in (an IANA name such as Europe/Berlin); a time that carries an offset needs none, answers are in UTC, and nothing is read from your account. A label that is a ticket's key links the activity to the ticket, as on the page.
An agent names things as you would: projects and tickets by key, types, priorities, components and resolutions by name, and people as me, by name or by email. It writes descriptions and comments in Markdown. A description imported from Jira is given to it as it was stored and also as Markdown. If it saves a change to that description, the Markdown version is saved, as when you edit it yourself, and the history keeps the original. Boards are named by their number. Moving a card follows the same rules as dragging it: into another column needs permission to move tickets through the workflow, and within a column permission to edit them. A move whose transition asks for a resolution or a comment needs them given with it. Managing sprints needs what it needs on the backlog page: being an administrator, or administering every project the board draws from. An agent cannot create a board or change a board's settings, and nothing can delete a ticket through an agent.
The REST API
Note
The REST API is off in a new workspace until an administrator switches it on under Administration, Modules and features. If you do not see it in yours, ask an administrator.
Scripts and integrations use the REST API at https://your-workspace.albaticket.com/api/v1, with a personal token. It does everything the tools above do. The API documentation on your workspace explains every endpoint, OAuth for applications of your own and the MCP server, has example scripts to start from, and has a reference where you can try requests with your token. The OpenAPI description is at /api/v1/openapi.json.
Revoking access
Connected agents and tokens lists everything that holds access for you: each application you allowed and each personal token, with when it was added and last used. Revoke stops it at once. An application you revoke has to ask you again. Changing your password does not revoke agents. When your account is deactivated, or stops being a member, every agent and token of yours stops working.
Switching the API and MCP on and off
The REST API and the MCP server are two switches under Administration, Modules and features, and both are off in a new workspace until an administrator switches them on. Neither needs the other: with the REST API alone your scripts work and no AI application can connect, and with the MCP server alone it is the other way round. Your AI agents page offers what is switched on and says what is not.
Tokens and connected applications belong to both. While one of the two is off, a token is refused there and works at the other. While both are off, no agent can connect or make a request, and nobody can make a token. Nothing is deleted, so switching one on again brings every connection back.