Starko MCP server

Use your Starko workspace from Claude, Cursor, VS Code or any other MCP host. The server offers the same tools as the Starko chat, with the same approvals.

Connect

  1. A workspace owner enables MCP access under Settings → Connections.
  2. Add a custom connector with the endpoint https://v2.starko.one/api/mcp. In Claude Code: claude mcp add --transport http starko https://v2.starko.one/api/mcp
  3. Click Connect. Starko opens, you sign in with your own account and pick the workspace the connection may act in.

Authentication

OAuth 2.1 with PKCE. Hosts register through Client ID Metadata Documents or dynamic registration; there are no API keys. Discovery documents: https://v2.starko.one/.well-known/oauth-protected-resource and https://v2.starko.one/.well-known/oauth-authorization-server. A token is bound to one person and one workspace; the person's role is read on every call, so removing someone from the workspace ends their connections at once.

Approvals

Tools marked below as needing confirmation never run on the first call. The call returns approval_required with a plain summary and a one-time confirmation token; the host shows the summary and, once the person agrees, repeats the call with the same arguments and _confirm set to the token. Tokens are valid for ten minutes and work once.

Tools

What a connection may use depends on the person's role and the workspace's configuration.

Tickets and projects

listTeamMembers
read
Lists the people in the workspace: member id, name, email and role.
listTicketStatuses
read
Lists the workspace's ticket statuses: slug, display name, semantic group and whether it is the default.
listProjects
read
Lists the workspace's active projects with id, name, status, dates and ticket progress.
searchTickets
read
Searches tickets with optional filters (title, status, assignee member ids, project, deadline and creation ranges, archived). Returns up to 20 rows with id, title, status, priority, dates, assignee, project and url.
listMyTickets
read
Lists the tickets assigned to the connected person. openOnly (default true) leaves out closed ones.
listOpenTicketsForMe
read
Lists open tickets assigned to the connected person plus the unassigned ones, sorted by priority and nearest deadline. Closed and archived tickets are left out.
listOverdueTickets
read
Lists tickets whose deadline has passed and that are not closed, most overdue first. assignedToMe limits it to the connected person.
getTicketDetails
read
Returns one ticket by id: fields, description and file attachments.
createTicket
write
Creates a ticket. title is required; description, priority, status slug, project, assignee member id, start date and deadline are optional. Returns the ticket with its url.
updateTicket
write
Updates one ticket's title, description, status, priority, dates, assignee, project or reminder. Status moves into a closing status, reassignments away from someone else and bulk changes are refused by this tool.
addTicketComment
write
Adds an internal comment (markdown) to a ticket. Can mention workspace members by member id, mention Starko AI to hand the ticket to the coding agent with the comment as its instruction, or post under the Starko AI name.
setTicketParent
write
Makes a ticket a sub-ticket of another, or detaches it with parentTicketId "none".
addTicketWatchers
write
Adds workspace members (by member id) as watchers of a ticket; existing watchers are kept.
listTicketRelations
read
Returns what a ticket is blocked by, blocks, duplicates or relates to, plus its parent and sub-tickets.
listProjectTemplates
read
Lists the project templates available: built-in starters, the workspace's own saved templates and public ones. Each has an icon, a summary, a brief and a default ticket list.
createProject
write
Creates a project, optionally from a template and with an initial list of tickets. Returns the project id, url and how many tickets were created.
linkTickets
write
Creates a relation between two tickets: blocked_by, blocks, duplicate or relates_to. Repeating the same link is safe.

Reporting

getReportingAnalytics
read
Returns workspace reporting for a 7, 28 or 90 day window: open queue, response and resolution times, conversation volume, ticket metrics, client funnel, knowledge gaps, document usage and question types, summarised with the last 7 daily points per series.

Ticket workflows

listWorkflowCapabilities
read
Returns the catalog for building Ticket Workflows: node kinds with configuration hints, trigger event types, AI-step tool names and the authoring rules.
listTicketWorkflows
read
Lists the workspace's Ticket Workflows: id, name, active flag, trigger kind and last run.
getTicketWorkflow
read
Returns a Ticket Workflow by id (name, trigger, active flag, graph) in the authoring shape.
applyTicketWorkflow
writeneeds confirmation
Replaces a Ticket Workflow's graph, and optionally its name, with an authoring graph. The graph is compiled and validated; errors are returned instead of saved. Needs the person's confirmation before it runs.
createTicketWorkflow
writeneeds confirmation
Creates a Ticket Workflow from an authoring graph and switches it on when it passes validation. Returns the workflow id and url. Needs the person's confirmation before it runs.
runTicketWorkflow
writeneeds confirmation
Runs a Ticket Workflow now and reports status, error, output and each executed step, waiting up to 20 seconds. Event-triggered workflows take a targetId (a ticket, client, company, tenant or deal); manual, webhook and scheduled ones take an input object. Needs the person's confirmation before it runs.
getTicketWorkflowRun
read
Returns one workflow run by id: status, error, output and executed steps, optionally waiting up to 30 seconds for it to finish.

Pantheon ERP (only in workspaces that configured it)

pantheonFindCustomer
read
Looks a customer up in the Pantheon ERP by PIB and returns the matches with their Pantheon id, name and code.
pantheonListArticles
read
Returns the Pantheon ERP article catalogue (artikli, šifre, cijene): every licence, hosting and service that can be offered, with code, name, unit, price type (fixed or free) and how the price is computed, for the CLOUD or OWNED location.
pantheonGetOffer
read
Returns an offer from Pantheon by key or number, or every offer of a customer by Pantheon id or PIB: the customer, the customer's latest offer (status, amounts, validity, lines) and the list.
pantheonGetPayment
read
Returns the payment state in Pantheon for an offer or an invoice: paid or not, amount due, paid so far, remaining, overdue debt and booked documents.
pantheonCreateCustomer
writeneeds confirmation
Creates a customer in the Pantheon ERP from company and contact details, then links the Starko company to it, or creates the CRM company and its contacts when they are not in the CRM yet. An existing customer with the same PIB is linked instead of duplicated. Needs the person's confirmation before it runs.
pantheonPrepareOffer
read
Dry run of a Pantheon ERP offer (ponuda, predračun, dokument 013) for a Starko company: resolves the Pantheon customer, the deal to write onto (or a new one), the contact and the catalogue prices of the lines; returns problems, open questions, the expected total and the exact input for creating the offer. Changes nothing.
pantheonCreateOffer
writeneeds confirmation
Creates an offer (ponuda, predračun, dokument 013) in the Pantheon ERP for a Starko company from catalogue article lines, in one step: links the company to the Pantheon customer when it is not yet linked, writes the offer onto the company's open deal or creates a new deal (amount = the offer's amount without VAT), and moves it to the offer stage. Nothing is written in Starko when Pantheon refuses the offer. Every run creates a new offer. Needs the person's confirmation before it runs.
pantheonRejectOffer
writeneeds confirmation
Rejects a Pantheon offer: sets its status to ODBIJENO with the given reason, saves the reason on the Starko deal and closes the deal as lost. Needs the person's confirmation before it runs.
pantheonCreatePeriodika
writeneeds confirmation
Enters a Pantheon offer into recurring billing from a given month (YYYY-MM; default next month). Can take up to a minute. Needs the person's confirmation before it runs.
pantheonCreateInvoice
writeneeds confirmation
Creates the invoice for a Pantheon offer, for all lines (SVE) or one-off lines only (IMPLEMENTACIJA), with an optional invoice date. An existing invoice is returned instead of created again. Needs the person's confirmation before it runs.

Search

searchWorkspace
read
Searches the whole workspace at once: tickets, conversation threads, clients, companies, tenants, knowledge-base articles, projects, procedures and workflows. Returns up to 5 matches per group, each with a url.

CRM

searchClients
read
Searches CRM clients (people) by name or email, optionally within a company or tenant. Paginated.
searchCompanies
read
Searches CRM companies by text, optionally within a tenant. Paginated.
listTenants
read
Lists or searches CRM tenants (top-level organisations). Paginated.
getClientDetails
read
Returns one CRM client: contact details, description, internal notes, custom attributes, tags and company link.
getCompanyDetails
read
Returns one CRM company: domain, notes, contact fields, custom attributes, tags, tenant link and external id (the ERP customer id when linked).
getTenantDetails
read
Returns one CRM tenant: description, notes, contact fields, custom attributes and tags.

Customer conversations

searchThreads
read
Searches customer conversation threads (email, WhatsApp, Instagram, website chat) by status, channel, client or title. Without a status it returns open threads. Members with restricted visibility see only threads assigned to them.
getThreadDetails
read
Returns one conversation thread: metadata, the stored summary, sentiment score, the client and the most recent messages.
replyToThread
writeneeds confirmation
Sends a reply to the customer on a conversation thread over its channel. The thread is assigned to the sender if unassigned, AI handling is turned off for it and its status becomes waiting_for_response. Needs the person's confirmation before it runs.
startConversation
writeneeds confirmation
Starts a new e-mail conversation with a CRM contact and sends the first message from the workspace's sending domain: subject and message. Continues the contact's open e-mail thread when one exists. Needs the person's confirmation before it runs.

Knowledge base

searchArticles
read
Lists knowledge-base articles by title, category or visibility.
getArticleContent
read
Returns one knowledge-base article's full text (up to 8,000 characters) with its title, category and visibility.
listArticleCategories
read
Lists the knowledge-base categories.
readWebPage
read
Fetches one public web page and returns its title, description and main content as markdown (up to 16,000 characters).
createKbArticle
writeneeds confirmation
Creates a knowledge-base article as an internal draft from a markdown body, with an optional category and source url. The article is embedded into the support AI's knowledge. Needs the person's confirmation before it runs.
updateKbArticle
writeneeds confirmation
Appends a markdown section to an existing knowledge-base article or replaces its body, optionally renaming it. The article is re-embedded afterwards; it cannot publish. Needs the person's confirmation before it runs.

Team

getTeamWorkload
read
Returns per-member workload: open, urgent and overdue ticket counts for every team member, plus the unassigned backlog.

CRM changes

crmWrite
writeneeds confirmation
Creates or changes CRM records: clients, companies, tenants and deals. Actions: create (payload; a client needs an email), updateField (id, field, value; an empty value clears), addNote (id, note), setStage (deal id, stage), closeDeal (deal id, outcome won or lost). Editable fields: client name, email, phone, description, client_notes, address, city, state, country, company_id, tenant_id; company name, domain, notes, email, phone, address, city, state, country, tenant_id, external_id; tenant name, description, notes, email, phone, address, city, state, country; deal name, amount, currency, expected_close_at, description, owner_id, company_id, client_id, tenant_id. Needs the person's confirmation before it runs.
searchDeals
read
Searches deals in the sales pipeline by name, stage, company, client or tenant. Paginated, 15 per page; amounts are in the deal's currency.
getDealDetails
read
Returns one deal: amount, stage, owner, linked company, client and tenant, expected close, description and tags.
listDealStages
read
Lists the workspace's deal pipeline stages in order: name, slug, kind (open, won or lost) and win probability.

Conversation actions

threadAction
writeneeds confirmation
Changes a conversation thread's state. Actions: assign (member id), unassign, setStatus (done, needs_a_response, investigating, waiting_for_response, paused, ignored), handover (aiEnabled true or false). Needs the person's confirmation before it runs.

Ticket changes

replyToTicketCustomer
writeneeds confirmation
Posts a public reply on a ticket and emails it to the ticket's client, company or tenant. Needs the person's confirmation before it runs.
archiveTickets
writeneeds confirmation
Archives up to 20 tickets by id. Archived tickets are hidden from lists and can be restored; nothing is deleted. Needs the person's confirmation before it runs.
updateTickets
writeneeds confirmation
Changes one or many tickets by id: status (including closing), priority, assignee, dates, project, with an optional resolution comment posted when closing. Tickets that are not visible or fail a close gate are reported as skipped. Needs the person's confirmation before it runs.

Workspace health and inbox

getWorkspaceConfig
read
Returns the workspace's health and configuration: connected channels with reconnect state and token expiry, email sending domain status and reply-to, installed MCP connectors and key feature settings. Contains no secrets.
listMyInbox
read
Returns the connected person's inbox queue: tickets assigned to them, tickets due today and conversations needing a response, minus items they dismissed. Newest activity first.
getSlaStatus
read
Returns SLA status for tickets under an SLA policy: breached and at-risk tickets with remaining or overdue time per timer (first response, resolution). Filters: attention (default), breached, at_risk, all; optional assignee.

Work timers

ticketTimer
write
Operates the connected person's own work timer on a ticket: start, pause, resume, stop (optionally moving the ticket to a non-closing status) and list running timers with elapsed time.

Analytics queries

queryAnalytics
read
Returns a reporting query over conversations or tickets for 7, 28, 90 or 180 days: totals, medians for first response, resolution and handle time, period-over-period deltas, a created-versus-resolved series and an optional breakdown by source, tag, assignee, customer, status or hour.

Starko AI runs

assignStarkoAi
writeneeds confirmation
Starts an autonomous Starko AI coding-agent run on an existing ticket whose description is the brief; optional repository url and task kind and size. Requires the workspace's GitHub App installation and Starko AI connection. Needs the person's confirmation before it runs.

Starko AI sessions

listStarkoSessions
read
Lists Starko AI coding-agent sessions on the workspace's tickets: the running ones with their phase, pull request and CI state, and with scope "recent" those that ended in the last week with their outcome.
getStarkoSession
read
Returns one ticket's Starko AI session in depth: phase, recent activity, the conversation with the agent, its last reply, unread team messages and the pull request.
steerStarkoSession
write
Delivers a message to the Starko AI session running on a ticket, as typing in the ticket's session composer does; interrupt true makes the agent read it at once. Refuses when no session is running.
answerStarkoQuestion
write
Delivers an answer to a question a Starko AI run asked on a ticket: the answer is posted as an internal comment in the person's name and the run resumes. Refuses when the latest run is not waiting on an answer.
mergeStarkoPullRequest
write
Merges a pull request opened by Starko AI, given its url or the ticket id. Refuses on failing checks, conflicts, branch protection or a closed pull request; force true allows pending checks or a revise verdict. A draft is marked ready first.
startStarkoSession
writeneeds confirmation
Opens an interactive Starko AI session on a ticket, continuing its earlier conversation when a message is given, with an optional repository url. Boots a sandbox; progress follows after a minute or two. Needs the person's confirmation before it runs.
endStarkoSession
writeneeds confirmation
Ends a ticket's running Starko AI session: wrap_up commits, pushes and updates the pull request before ending; stop aborts at once and loses unpushed work. Needs the person's confirmation before it runs.

Recommendations

listRecommendations
read
Lists the open recommendations Starko AI filed from session replays, most sightings first: what visitors got stuck on, as UX gaps and bugs. Optional project id; default 10.

Starko AI crews

dispatchStarkoCrew
writeneeds confirmation
Spreads a goal over up to 5 Starko AI sessions: creates a parent ticket and one sub-ticket per brief in a project, starts the briefs without dependencies and a foreman starts the dependent ones later, reporting on the parent ticket. Needs the person's confirmation before it runs.

Knowledge search

researchDatabase
read
Searches the workspace's knowledge base semantically and returns the best matching passages with their article, title and score.

Data and revocation

The server reads and writes only the workspace data the tools name; nothing from the conversation is stored. Disconnecting the app on its side revokes its tokens, and they also end when the person leaves the workspace or the owner switches MCP access off. Questions: stefan@starko.one.