AltOrbit for AI agents (MCP)
Connect the AI assistant you already use to AltOrbit. It reads and updates your tickets, tracks your time and runs project reports — as you, with your permissions, only when you ask it to.
Overview
AltOrbit runs a remote server that speaks the Model Context Protocol (MCP), the open standard AI apps use to call outside tools. Add it to your AI client once, and the assistant can work with your AltOrbit workspace: find and read tickets, create and update them, comment, move them across the board, track time and summarise how a project is going. Clients of a studio can follow and manage their own requests the same way.
https://api.altorbit.app/mcp
The server uses Streamable HTTP. Clients sign in with OAuth: you approve the connection on an AltOrbit page, and no password or key is ever pasted into the AI app. Clients that cannot sign in can use a personal access token instead.
What you can do with it
The tools you get depend on your role in the workspace, not on your job title. A few things people ask for:
Project managers and owners
Get a project overview, delivery flow and estimate accuracy in one answer, see who is overloaded, approve or decline new client requests, offer a budget, and keep the board's columns and labels in order.
“How is WEB going this month, and what is blocked?”
Developers
See what is assigned to you, start work on a ticket and get its branch name and commit message, run the timer, comment, link blockers and move the ticket to review — without leaving the editor.
“Start work on WEB-142 and start my timer.”
QA
Check a ticket in review against what was asked for, read its history and earlier versions, file bugs as subtasks or blockers, and move it back or forward with a comment.
“Verify WEB-142 against its description and list what is missing.”
Clients of a studio
See where your requests stand and what waits for you, open a request, answer a budget offer, review delivered files, reply to the studio, and accept finished work or send it back.
“What is waiting for my answer on the website project?”
Connect your AI client
Every client below signs in through AltOrbit's consent page: it opens in your browser, shows which app is asking and what it may do, and asks you to confirm it is you before you approve. Pick the workspace the app should work in there. You can also find this guide, with ready-made buttons, in the web app under Settings › AI agents.
Claude
On claude.ai or in the Claude desktop app, open Settings › Connectors and choose Add custom connector. Name it AltOrbit, paste the server URL and press Add, then Connect and approve the request in AltOrbit. Turn the connector on in a chat from the tools menu.
Once AltOrbit is listed in Claude's connectors directory, you can add it from there instead of pasting the URL.
Claude Code
Run this in a terminal:
claude mcp add --transport http altorbit https://api.altorbit.app/mcp
Then type /mcp in Claude Code, choose altorbit and sign in. Add --scope user to use it in every project, or --scope project to share it with your repository.
Cursor
Use the install link below, then press Connect beside altorbit in Cursor Settings › MCP and approve the request.
Or add it by hand:
{
"mcpServers": {
"altorbit": {
"url": "https://api.altorbit.app/mcp?toolsets=compact"
}
}
}The link and the config use the compact preset, because Cursor counts the tools of all your MCP servers together. Remove ?toolsets=compact to get every tool, or add toolsets after it, such as compact,reports.
VS Code
Use the install link below. VS Code asks you to sign in the first time GitHub Copilot uses an AltOrbit tool in agent mode.
Or add it to your workspace by hand:
{
"servers": {
"altorbit": {
"type": "http",
"url": "https://api.altorbit.app/mcp"
}
}
}Codex
Add the server to ~/.codex/config.toml, then sign in from a terminal:
[mcp_servers.altorbit] url = "https://api.altorbit.app/mcp"
codex mcp login altorbit
ChatGPT
In ChatGPT, open Settings › Apps & Connectors › Advanced settings and turn on Developer mode (where your plan offers it). Then choose Create, name it AltOrbit, paste the server URL, choose OAuth and approve the request in AltOrbit.
Windsurf
Open Windsurf Settings › Cascade › MCP servers, choose to edit the raw config and add the server. If Windsurf does not offer to sign in, use a personal access token as shown below. The config uses the compact preset: like Cursor, Windsurf counts the tools of all your servers together.
{
"mcpServers": {
"altorbit": {
"serverUrl": "https://api.altorbit.app/mcp?toolsets=compact"
}
}
}Personal access tokens
For a client or script that cannot sign in with OAuth, send a token in the Authorization header. A token acts as you, in one workspace, with only the permissions you pick.
- In the AltOrbit web app, open Settings › AI agents › Personal access tokens and choose Create token.
- Name it, pick the workspace and the permissions, and confirm it is you. You can set a shorter lifetime.
- Copy the token — it starts with
ao_pat_and is shown only once — and send it as a bearer token.
Authorization: Bearer ao_pat_…
For example:
claude mcp add --transport http altorbit https://api.altorbit.app/mcp --header "Authorization: Bearer ao_pat_…"
{
"mcpServers": {
"altorbit": {
"serverUrl": "https://api.altorbit.app/mcp?toolsets=compact",
"headers": {
"Authorization": "Bearer ao_pat_…"
}
}
}
}Toolsets
Tools are grouped into toolsets. By default a connection gets every tool your role and permissions allow. To offer the AI fewer tools, name the toolsets you want, or a preset; core is always included.
| Toolset | What is in it |
|---|---|
core | Who you are, your projects and a project's board: columns, labels, milestones and people. Always on. |
tickets | Search, read, create and change tickets, comments and links, start work and watch tickets; for admins also the trash. Clients find, read and reply on their own requests. |
revisions | A ticket's earlier versions, and restoring one. |
setup | Board columns and project labels. Owners and admins. |
requests | Deciding on client requests and offering a budget. Owners and admins. |
files | Files on tickets: list and open them, attach new ones, show them to the client or hide them, delete them. |
time | Your timer and time entries. |
reports | Project overview, delivery flow, estimate accuracy and team workload. |
inbox | Your notifications. |
client | For clients of a studio: project status, opening and editing requests, budget offers, reviewing deliveries, accepting or sending back work, and the cards your own side works. |
Add ?toolsets= to the server URL with a comma-separated list, for example ?toolsets=tickets,time. A client that cannot change the URL can send the X-MCP-Toolsets header instead; the URL wins if both are set. Unknown names are ignored.
Cursor and Windsurf: the compact preset
Cursor and Windsurf count the tools of all your MCP servers together and stop offering the model any beyond their limit. AltOrbit alone can offer an owner a few dozen tools, so next to other servers some of them may quietly drop out. The compact preset keeps the everyday work — core, tickets, time and client — and leaves out versions, board setup, request decisions, files, reports and notifications. The Cursor and Windsurf setup above already uses it. How many tools each role gets:
| Connection | Owners and admins | Team members | Clients |
|---|---|---|---|
Every toolsethttps://api.altorbit.app/mcp | 36 | 29 | 23 |
Compact presethttps://api.altorbit.app/mcp?toolsets=compact | 21 | 19 | 18 |
Presets and toolsets combine: ?toolsets=compact,reports adds the reports, ?toolsets=compact,files adds files.
The toolset list does not change what you are allowed to do, and the sign-in is the same with or without it.
Tools
Every tool, by toolset. Who is the lowest role that sees the tool; Scope is the permission the connection needs; Type says whether the tool only reads, changes something, or can remove or overwrite something, which AI clients use to decide when to ask you first. Tools name things the way people do: tickets by key (WEB-123), projects by key or name, people by name or “me”, columns, labels and milestones by name. Lists are paginated and long texts are shortened and marked.
core
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
whoami | Who this connection acts as: your name, side, role, workspace, teams, time zone and granted scopes. | Everyone | profile | Reads |
projects_list | The projects you work on, with their ticket key prefix, team, status and tracked time. | Team members | projects.read | Reads |
projects_get_board | A project's vocabulary: columns with ticket counts, labels, milestones and assignable people; optionally what deleting a column would affect. | Team members | projects.read | Reads |
projects_list | The projects a studio invited you to: progress, open requests, what waits for you and the next milestone. | Clients | projects.read | Reads |
tickets
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
tickets_search | Find tickets by text and filters in one project or across all of yours, e.g. everything assigned to you. | Team members | tickets.read | Reads |
tickets_get | One ticket in full: description, status, people, dates, estimate and time, subtasks, blockers, pull request, money if your role sees it, latest comments. | Team members | tickets.read | Reads |
tickets_history | A ticket's activity log: moves, assignments, edits, comments, links, time and pull requests. | Team members | tickets.read | Reads |
tickets_create | Create a ticket with status, labels, milestone, people, parent and dates. | Team members | tickets.write | Changes |
tickets_update | Change title, description, priority, dates, estimate, story points, milestone, client visibility, parent, order or labels. | Team members | tickets.write | Changes |
tickets_set_status | Move a ticket to another column, optionally to an exact place in it. | Team members | tickets.write | Changes |
tickets_assign | Add or remove an assignee, or set the ticket's lead. | Team members | tickets.write | Changes |
tickets_link | Add or remove a link: blocker, related or duplicate. | Team members | tickets.write | Changes |
tickets_comment | Comment on a ticket — internal by default, or public to the project's clients. | Team members | tickets.write | Changes |
tickets_comment_edit | Edit your own comment, or delete one (someone else's needs an admin). | Team members | tickets.write | Removes or overwrites |
tickets_watch | Start or stop notifications about a ticket for you or a teammate. | Team members | tickets.write | Changes |
tickets_start_work | Take a ticket, move it to in progress and get a branch name and commit message. | Team members | tickets.write | Changes |
tickets_trash | Move a ticket and its subtasks to the project trash. | Owners and admins | tickets.write | Removes or overwrites |
tickets_restore | Bring a ticket back from the trash. | Owners and admins | tickets.write | Changes |
tickets_search | Your requests and the tickets a studio shares with you: what waits for you, what is in progress, what is done. | Clients | tickets.read | Reads |
tickets_get | One of your tickets: description, status, who works on it, dates, price, what you may do now and the conversation. | Clients | tickets.read | Reads |
tickets_history | What happened on one of your tickets, as the studio shares it with you. | Clients | tickets.read | Reads |
tickets_comment | Reply in the conversation of one of your tickets. | Clients | tickets.write | Changes |
tickets_comment_edit | Edit or delete a reply you wrote. | Clients | tickets.write | Removes or overwrites |
revisions
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
tickets_revisions | A ticket's stored versions: who changed what and from where (app, client portal, MCP), a past version, or the difference between two. | Team members | tickets.read | Reads |
tickets_restore_revision | Put an earlier version's fields back as a new version; nothing is lost. | Team members | tickets.write | Changes |
tickets_revisions | Earlier versions of one of your tickets, as you see the card. | Clients | tickets.read | Reads |
setup
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
board_columns_manage | Add, rename, recolour, reorder or delete a board column, or make one the intake. | Owners and admins | tickets.write | Removes or overwrites |
labels_manage | Create, rename, recolour or delete a project label. | Owners and admins | tickets.write | Removes or overwrites |
requests
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
requests_triage | Approve a client request onto the board, decline it, or ask for changes. | Owners and admins | tickets.write | Removes or overwrites |
tickets_offer | Offer the studio's price for a client request still being negotiated. | Owners and admins | tickets.write | Changes |
files
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
tickets_attachments | List a ticket's files, or open one: images and small text files inline, anything else as a 15-minute download link. | Team members | tickets.read | Reads |
tickets_attachment_upload | Attach a file to a ticket — only one you gave the AI or asked it to make. | Team members | tickets.write | Changes |
tickets_attachment_visibility | Show a studio file to the project's clients, or hide it again. | Team members | tickets.write | Changes |
tickets_attachment_delete | Delete a file from a ticket for good (its uploader, an owner or an admin). | Team members | tickets.write | Removes or overwrites |
tickets_attachments | List the files on one of your tickets — the studio's deliveries and your own — or open one. | Clients | tickets.read | Reads |
tickets_attachment_upload | Attach a file to one of your open tickets. | Clients | tickets.write | Changes |
tickets_attachment_delete | Delete a file you attached to one of your open tickets. | Clients | tickets.write | Removes or overwrites |
time
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
time_status | Your running timer and the hours you tracked today and this week. | Team members | time.read | Reads |
time_start | Start your timer on a ticket or a project. | Team members | time.write | Changes |
time_stop | Stop your timer and save the entry, with an optional note. | Team members | time.write | Changes |
time_log | Record time you already worked as a finished entry. | Team members | time.write | Changes |
reports
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
reports_overview | A project's state: tickets per column, overdue and blocked work, pending requests and weekly throughput. | Team members | reports.read | Reads |
reports_flow | Lead and cycle time of completed tickets and time spent in each column. | Team members | reports.read | Reads |
reports_estimates | Estimates against tracked time, and open tickets already over their estimate. | Team members | reports.read | Reads |
reports_workload | Open work per person in a project, and what is unassigned. | Owners and admins | reports.read | Reads |
inbox
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
inbox_list | Your notifications, newest first. Reading them here does not mark them read. | Everyone | profile | Reads |
client
| Tool | What it does | Who | Scope | Type |
|---|---|---|---|---|
client_project_status | Where one of your projects stands: milestones, forecast, the studio's latest update and time tracked this month if shared. | Clients | projects.read | Reads |
client_request_create | Send the studio a new request, optionally with a proposed budget. | Clients | tickets.write | Changes |
client_ticket_edit | Reword the title or description of a ticket you opened, while it can still be edited. | Clients | tickets.write | Changes |
client_request_withdraw | Withdraw a request the studio has not approved yet. | Clients | tickets.write | Removes or overwrites |
client_ticket_accept | Accept finished work and close the ticket. | Clients | tickets.write | Changes |
client_ticket_reopen | Send finished work back with what is missing. | Clients | tickets.write | Changes |
client_offer_respond | Accept or decline the studio's price for your request, or propose your own; declining ends the request. | Clients | tickets.write | Removes or overwrites |
client_attachment_review | Approve a file the studio delivered, or ask for changes to it. | Clients | tickets.write | Changes |
client_ticket_move | Move a card your side works to another column. | Clients | tickets.write | Changes |
client_ticket_assign | Choose who from your company works a card your side works, or who leads it. | Clients | tickets.write | Changes |
client_ticket_transfer | Hand a card your side works over to the studio as a request. | Clients | tickets.write | Changes |
Only in the AltOrbit app
Some things stay in the app on purpose: emptying the trash, editing a description together live, seeing who is online, turning chat messages into tickets, managing people, invites and badges, posting revenue, and files over 700 KB.
Prompts
The server also offers ready-made prompts. Clients show them differently — as slash commands in Claude Code, for example.
my_day— plan your day from your assigned tickets, timer and unread notifications (Team members)status_report— draft a status update for a project from its board, flow and estimates (Team members)triage_intake— walk through new tickets and client requests nobody has sorted yet (Team members)verify_ticket— check a ticket in review against what was asked for (Team members)my_requests_status— summarise your requests to the studio and what waits for your answer (Clients)
Permissions
An AI app acts as you. It sees and changes only what you could in AltOrbit yourself, in the one workspace you connected it to, and never more than the scopes you granted. Every rule of the app — who may see money, who may trash a ticket, what a client may edit — is checked by AltOrbit on each call, whatever the AI asks for.
Scopes
| Scope | Allows | Clients |
|---|---|---|
profile | Who you are, your workspace and your notifications. | Yes |
projects.read | Your projects, their boards and, for clients, project status. | Yes |
tickets.read | Read tickets, comments, files, history and versions. | Yes |
tickets.write | Create and change tickets, comments, links, files and assignments; for clients, requests, offers and replies. | Yes |
time.read | Your timer and tracked hours. | No |
time.write | Start and stop your timer and log time. | No |
reports.read | Project reports. | No |
Roles
- Team members get ticket, time, report and inbox tools on the projects they belong to. Money fields appear only where their role shows them in the app.
- Owners, company admins and team admins also get the team workload report, board columns and labels, the trash, and deciding on client requests and their budgets.
- Clients of a studio get only client tools, see only what the studio shares with them, and can hold only the
profile,projects.read,tickets.readandtickets.writescopes.
If a tool needs a scope the connection lacks, the server answers with 403 insufficient_scope and names it, so your client can ask you to approve more. A tool your role cannot use is simply not offered.
Workspace controls
Owners and company admins decide whether AI apps may work with the workspace at all. They can:
- Turn AI connections off for the whole workspace; they are on by default. Turning them off pauses connected apps and tokens rather than revoking them: every tool call is refused with an error saying your organisation has turned off AI agent access, and no new app can be connected or token created. Turning them back on resumes every app and token that was not revoked or did not lapse meanwhile, without reconnecting.
- See and revoke every AI app and token connected to the workspace, whoever connected it. Its holder is notified when one is revoked.
- Hear about new connections — owners and company admins are notified when a member connects an AI app or creates a personal access token.
Security
How AltOrbit keeps a connected AI app in check:
- Consent with re-authentication — OAuth 2.1 with PKCE. The consent page on app.altorbit.app shows which app is asking, who vouches for it and where access goes. Approving an app or creating a token asks you to confirm it is you, with any one of: a passkey (Face ID or fingerprint), a linked account such as Google, Apple or GitHub, a two-factor code, your password, or a one-time code sent to your email. After you sign in or confirm, you are not asked again for 2 hours; each approval or new token restarts that time.
- Short-lived access — an access token lasts one hour. Refresh tokens change on every use and lapse after 30 days unused, and after 365 days at most.
- Personal access tokens are shown once, lapse after 90 days unused and after 365 days at most (or sooner if you choose), and carry a fixed
ao_pat_prefix so secret scanners can spot a leaked one. - No stored secrets — tokens are kept only as keyed hashes; we show you the last four characters to tell them apart.
- Checked on every call — your membership, role and client access are read fresh each time, so losing access in AltOrbit cuts the AI app off at once.
- Account events reach agents — resetting your password, changing two-factor sign-in, or signing out of all other sessions also disconnects every AI app and token. An owner or company admin turning AI connections off for the workspace pauses them instead — see Workspace controls.
- Audit trail — the actions AltOrbit audits when you take them in the app, such as ticket, board and request changes, are recorded in the workspace audit log when an AI app takes them too, along with refused attempts. Each record names the tool, the connection and the name the app gave itself.
- Marked in ticket history — every stored version of a ticket says where the change came from: the app, the client portal or MCP.
- Content is data — AltOrbit tells the model to treat titles, descriptions and comments as data and never as instructions, and marks which tools change things so your client can ask you first. Your permissions are enforced on the server either way.
- Rate limits — an AI app meets the same per-user limits as you do in the app.
Revoke access
- Connected apps — in the web app, open Settings › AI agents and choose Disconnect beside the app. Its tokens stop working at once; to use it again, connect and approve it again.
- Personal access tokens — in the same place, choose Revoke. Any tool using the token stops working at once.
- Owners and company admins can revoke any app or token connected to the workspace, or pause them all by turning AI connections off — see Workspace controls.
- Deleting your AltOrbit account removes all of your connections and tokens. You can also remove AltOrbit from your AI client, but only revoking it in AltOrbit ends its access.
Troubleshooting
401 Unauthorized
The token is missing, expired or revoked. Sign in again from your client (in Claude Code: /mcp, then choose altorbit). With a personal access token, check the Authorization: Bearer header and that the token is still listed in Settings › AI agents.
The email code doesn't arrive
A one-time code is sent only to a verified email address. Verify your email first, or confirm it is you another way.
403 insufficient_scope
The tool needs a permission this connection was not granted; the error names it. Reconnect and approve that permission, or create a token that includes it.
AI_AGENTS_DISABLED
Your organisation has turned off AI agent access to the workspace. Your client stays connected, but every tool call returns this error and no new app or token can be connected. Only an owner or company admin can turn it back on — ask one of them. Your apps and tokens are kept and work again without reconnecting.
A tool is missing
Your role may not include it (some tools are for owners and admins, others only for clients), the connection may lack its scope, or the server URL may name toolsets that leave it out. Ask the AI to call whoami to see your role and scopes. Some things are done only in the app — see Only in the AltOrbit app.
Cursor or Windsurf ignores some tools
You are probably over the client's limit on tools across all servers. Connect AltOrbit with ?toolsets=compact, add only the toolsets you need, or turn off servers you don't use.
An answer is cut short
Large results are trimmed to fit the AI's context and say so; long texts are shortened and marked as truncated. Ask for less at once: filter a search, read one ticket, or page through with the cursor.
“Ambiguous” or “not found” names
When a name matches more than one ticket, person or column, the error lists the candidates. Tell the AI which one you mean, or use the ticket key.
429 Too many requests
The AI app hit a rate limit. The error says how many seconds to wait before calling again.
Support and privacy
Questions or problems with the connector: email support@altorbit.app or use the form on the support page. How we handle data when you connect an AI app is described in our Privacy Policy; security reports go to security@altorbit.app.