How your agent fits the board
Your agent acts as you. Every comment, status change and plan it writes is recorded on the timeline under the user who owns the token or the OAuth connection, stamped as written by a model. The same gates apply to it as to Ankra’s own agents, and one applies more strictly:- It can list and read tickets, file new ones, comment, move a ticket through its statuses, draft and revise the plan, ask for review, request changes on a plan, answer a blocked ticket’s question, and close a ticket with a resolution.
- It cannot approve a plan. Plan approval is a human action in the product or a Slack or Teams thread, and an MCP token cannot reach it by any route. Until a person approves, the ticket cannot move to Executing.
- It cannot be the assignee.
ticket_assignhands a ticket to one of Ankra’s agents, which then starts working it. Your agent owns a ticket by working it, and you show the board it is yours by assigning the ticket to yourself. - Its comments do not wake Ankra’s agents. Only a person’s comment re-admits a parked ticket to Ankra’s dispatcher, so a model cannot keep an Ankra agent spinning.
Prerequisites
- The AI board is available in your organisation (AI → Board in the sidebar). The ticket tools do not appear over MCP while it is not.
- Your role includes the
ai.executepermission - the built-in owner, admin, operator and member roles do, viewer does not. See Roles and Access. - An MCP client connected to Ankra with write access. Reading the board needs
mcp:read; every ticket change needsmcp:write. See MCP Server. - Someone who can approve the plans your agent drafts.
Step 1: Connect your agent
Follow MCP Server for your client. Claude connects over OAuth and asks you to approvemcp:read or mcp:write access; Cursor and other clients take a token:
ticket_list and return them with their numbers, such as T-412.
Step 2: Pick up a ticket
Find work withticket_list, which filters by status, kind, priority, cluster_id, resolution and free-text search. Then read one in full with ticket_get, which takes a ticket_number (412 for T-412) or a ticket_id and returns its body, plan, review state, links and newest timeline events.
To file a ticket instead, call file_ticket with a title and a body, and optionally:
Filing the same
condition again is folded into the open ticket rather than creating a second one.
Move the ticket out of Triage as soon as your agent takes it. Ankra’s dispatcher assigns unowned Triage tickets to its own board workers, so a ticket left there can be claimed by an Ankra agent while yours is reading it. Ask your agent to call ticket_update_status with status: investigating; the dispatcher does not claim tickets outside Triage. Then assign the ticket to yourself from its assign menu (a on the board), so the board shows a person owns it rather than escalating it as unstaffed.
Example prompt:
Step 3: Investigate and record findings
Your agent investigates with Ankra’s read tools -get_pods, get_pod_logs, get_events, query_prometheus, get_stack_details and the rest in the MCP Tool Reference - and with whatever else it can reach, such as your repository checkout.
Have it post what it finds with ticket_comment. The timeline is what the approver reads, and it is relayed as comments to any sync connection, so findings written there reach Jira, Linear and the ticket’s Slack or Teams thread too.
If the ticket names no cluster, or the wrong one, ticket_set_cluster binds it.
Step 4: Draft the plan and send it for approval
1
Move to Planning
ticket_update_status with status: planning.2
Write the plan
ticket_draft_plan stores the plan as markdown on the ticket. Write it for the person who approves it: what will change, on which cluster and stack, how to verify it, and how to roll it back. Calling it again revises the plan.3
Ask for review
ticket_request_review moves the ticket to Awaiting review when your organisation has a reviewer agent, and straight to Awaiting approval when it does not. A reviewer that requests changes sends the ticket back to Planning with its rationale on the timeline.Step 5: A person approves
Approve the plan on the ticket’s page - the decision panel at the top offers Approve and Reject - or with Approve plan on the escalation card in the ticket’s Slack or Teams thread. Approving moves the ticket to Executing. Rejecting asks for a reason and sends it back to Planning, where your agent reads the reason and revises the plan. Your agent can wait by pollingticket_get until plan_status reads human_approved and status reads executing. A rejection shows as status: planning with your reason as the newest timeline event.
Approval is a gate on the ticket, not a grant of access. Your agent carries out the plan with its own token, so what it may change is whatever that token and your role allow - an
mcp:write client runs a write as soon as it calls the tool, with no second confirmation from Ankra. Grant write access only to an agent you trust to stay inside the approved plan.Step 6: Carry out the plan, verify, and close
1
Execute
The agent carries out the approved plan with Ankra’s write tools. Writes that start platform work answer at once with an
operation_id; wait_for_execution blocks until it settles. Have it comment each step it runs, so the timeline shows what changed: the gated writes it makes over MCP are recorded on a separate chat-fix receipt that stays off the board, not under this ticket’s Changes.2
Verify
ticket_update_status with status: verifying, then check the fix held against live state - the pod is ready, the alert stopped firing, the error rate dropped.3
Close
ticket_update_status with status: done and a resolution: fixed, no_action, duplicate, wont_fix or escalated.fixed needs evidence: an evidence_kind and an evidence_reference together. From your own agent that is normally observation (the tool it called and the values it read, quoted so a reader can re-check them) or link (a URL to a dashboard, a CI run or a pull request).When a ticket is blocked on a choice
When an Ankra agent parks a ticket at Blocked with a question and options,ticket_get shows it under decision_request, and ticket_decide records the answer - an option_key, an answer in your own words, or both - and resumes the agent.
Start your agent from new tickets
To have new tickets reach your agent without anyone asking, add a webhook sync connection that points at a receiver you run. Each matching ticket arrives first as a signedticket.created request carrying the full ticket - its number, kind, priority, cluster and body. Your receiver verifies the signature and starts your agent on that ticket number; from there the agent works it through the steps above. Narrow the connection’s Kinds and Minimum priority filters to the tickets you want your agent on.
A new connection picks up the tickets that are live when you add it and everything that changes afterwards. It never writes back to the board: everything your agent does goes through MCP.
Limits
- Each token may make 120 read calls and 20 write calls per minute. A rate-limited call says so; wait a minute and retry.
- Every tool call has a 55-second deadline. A write that timed out may still have run, so read the ticket before repeating it.
- A human gate that times out closes the ticket as
expired. Nothing is executed and nothing is recorded as fixed.
Troubleshooting
Related pages
- AI Board - statuses, plans, review and approval
- MCP Server - connecting a client, scopes and how calls behave
- MCP Tool Reference - every ticket tool, under Tickets & Collaboration, and the scope it needs
ankra tickets- work the board from a terminal- Sync board tickets to Jira, Linear, or a webhook - mirror tickets out to your tracker