Skip to Content
MCP serverTools reference

Tools reference

The Skyelight MCP server provides 17 tools. The remote server and the local package provide the same tools. Each tool is marked read-only or write, and most clients ask you before they run a write tool.

Each result is short prose with the counts in it, plus the raw data as structured content. When a tool refuses a call, the result contains the reason, so the agent can report it.


All tools

ToolKindWhat it is for
list_workspacesReadThe workspaces you can reach, your role in each, and your user ID
list_projectsReadThe projects in those workspaces, with the IDs other tools take
list_itemsReadOpen work, filtered by page, type, status or assignee
search_itemsReadThreads whose text or replies mention a word or phrase
get_itemReadOne thread in full: replies, page, anchor, source location, images
list_membersReadThe people in a workspace, to name an assignee or a mention
post_updateWriteReply on a thread with what you found or changed
create_itemWriteStart a new thread on a page
set_statusWriteSet a thread to open, deferred or resolved
assignWriteAssign a thread to a person, or unassign it
whats_newReadWhat changed on a project since you last looked
project_reviewReadCounts, outcomes and open threads, for a review or hand-off
decision_logReadWhat a project decided in its threads, and its current rules
save_ruleWriteAdd an agreed rule to the project context (owners and admins)
find_by_sourceReadThreads on a file or component, or the files with the most threads
find_similarReadExisting threads that match something you are about to report
merge_itemsWriteMerge duplicate threads into one

Rules that apply to every tool

  • Projects. Most tools take a projectId. You can leave it out when the workspace has one project, or when the local server has a bound project. Otherwise the error lists your projects and their IDs. list_projects also returns them.
  • Item IDs. In tool and field names, an item is a thread. list_items, search_items and the other listing tools return item IDs.
  • Naming people. Arguments that take a person (assignee, mentions) accept a user ID, an email, a full name, a first name, the start of a name, or me. A name that matches more than one person is refused with the candidates, and nothing is written. Call list_members to find the right person.
  • Permissions. Tools act with your role. Owners, admins and collaborators can call every tool. save_rule is limited to workspace owners and admins.

Reading

list_workspacesRead-only

Returns the workspaces you can reach, your role in each, and your user ID. A workspace where your role or the organization’s plan doesn’t include agent tools is listed with the reason. Takes no arguments.

list_projectsRead-only

Returns the projects you can reach, most recent activity first. Call it first when no project is bound.

ArgumentTypeDescription
workspaceIdstringNarrow to one workspace. Optional
list_itemsRead-only

Returns a summary of the project (totals, and counts by type and by page), then one row per thread. Each row shows the thread’s one-line summary when it has one. Merged duplicates are hidden and counted on the thread they were merged into.

list_items reads the 2,000 most recent threads in a project. When a project has more, the result says so.

ArgumentTypeDescription
projectIdstringOptional when a project is bound or the workspace has only one
pagestringOnly threads on one page, for example /checkout
typestringA type, for example bug, idea or feedback
statusopen, deferred or resolvedDefaults to every status
assigneestringA user ID, me, or none for unassigned threads
limitnumberMaximum rows. Default 50
search_itemsRead-only

Returns threads that mention a word or phrase. It searches replies as well as the first message, so it also finds threads where the match is only in a reply.

ArgumentTypeDescription
querystringRequired. Text to look for
projectIdstringOptional when a project is bound or the workspace has only one
statusopen, deferred or resolvedOptional
limitnumberOptional
get_itemRead-only

Returns everything needed to work on one thread:

  • the first message and every reply, in order;
  • the page and URL;
  • the anchor that identifies the pinned element;
  • the source file, line, component, commit and branch, when the site was built with Skyelight Build, and a link to the file when the project is linked to a repository;
  • the screenshot taken when the thread was created, and any images people attached, as images the model can read;
  • the Linear issue the thread was sent to, if any, and reaction counts;
  • the agent task set when someone handed the thread off: investigate, plan or fix.

Each call returns up to 4 images, each up to 4 MB. The result names any image it skipped, with its link and the reason. If someone moved the pin to another element after the thread was created, the result says the screenshot and page context are from before the move. If the screenshot was deleted under the workspace’s retention setting, the result says so. See Anchoring, context and screenshots.

ArgumentTypeDescription
itemIdstringRequired
list_membersRead-only

Returns the people in a workspace: name, email, role and user ID. Use it to find the person to assign or mention.

ArgumentTypeDescription
projectIdstringOptional if a project is bound
workspaceIdstringUse instead of a project

Writing

post_updateWrites

Posts a reply on a thread, as you. Use it when the work is done, or to report what the agent found when it is stuck.

The item must be a thread. You can’t reply to a reply.

ArgumentTypeDescription
itemIdstringRequired
bodystringRequired. Up to 4,000 characters
mentionsarrayPeople to notify, up to 10. Write @Name in the body where you mention them
linksarrayLinks such as a pull request, commit or deploy, each with a url and optional label. Up to 5
create_itemWrites

Creates a new thread on a page, as you. Use it for a new finding, such as an audit result. To report on a thread the agent is already working on, use post_update.

Skyelight sets the type, writes a summary and sends notifications for the new thread, the same as for a thread created in the app.

ArgumentTypeDescription
urlstringRequired. Full URL of the page
bodystringRequired. Up to 4,000 characters
selectorstringCSS selector for the element, if there is one
projectIdstringOptional if a project is bound
pageTitlestringOptional
mentionsarrayPeople to notify
assigneestringThe person to assign it to, or me
set_statusWrites

Sets a thread to open, deferred or resolved. Post a reply with post_update first, so the person who reported it can read what changed. Use deferred for valid work that is postponed.

ArgumentTypeDescription
itemIdstringRequired
statusopen, deferred or resolvedRequired
assignWrites

Assigns a thread to a person, or unassigns it. The assignee gets the same notification as for an assignment in the app.

A resolved thread must be reopened before you can assign it.

ArgumentTypeDescription
itemIdstringRequired
assigneestring or nullRequired. A person, me, or null to unassign

Project history

whats_newRead-only

Returns what changed on a project since you last looked: new threads, new replies grouped by thread, threads resolved or deferred, and threads assigned to you or mentioning you. Call it at the start of a session.

Without since, whats_new reads from your bookmark on that project and moves the bookmark forward. Your first call looks back 7 days. With since, it reads from that time and leaves the bookmark where it is.

ArgumentTypeDescription
projectIdstringOptional if a project is bound
sincestringA date or ISO time, for example 2026-09-01. Optional
project_reviewRead-only

Returns what you need to write a project review or hand-off: counts and breakdowns, who took part, resolved threads and their last message, deferred threads and the reason given, open threads, and the longest conversations quoted in full. Every entry includes its item ID, so each statement in the document can be traced to its thread.

The overview returns every count and the first 25 rows of each section. A section returns 100 rows, or 5 conversations, per call. Each result ends with the call that fetches the next page.

ArgumentTypeDescription
projectIdstringOptional if a project is bound
sectionresolved, deferred, open or discussionsOmit for the overview. Name one to read it in full
offsetnumberWith section, the row to start from
decision_logRead-only

Returns the decisions a project made in its threads, quoted: threads resolved or deferred after a discussion, with the last messages of each. It also returns types people corrected, outcomes that recur, and the project’s existing rules.

ArgumentTypeDescription
projectIdstringOptional if a project is bound
sincestringOnly decisions after this date
limitnumberDecisions per page. Default 15, at most 30
offsetnumberWhere to start, from the previous result
save_ruleWrites

Adds a rule the team agreed on to the project context, under “Rules learned”, with who added it, the date and the threads it came from. Skyelight reads the project context when it sets a thread’s type, so a saved rule affects future threads. Agents read the rules through decision_log.

Only workspace owners and admins can save rules. Skyelight refuses an exact duplicate, and a rule that would take the project context past 20,000 characters.

ArgumentTypeDescription
rulestringRequired. One plain sentence, under 500 characters
projectIdstringOptional if a project is bound
sourceItemIdsarrayThreads the rule came from

Code and duplicates

find_by_sourceRead-only

Returns threads by the code that rendered the pinned element, using the file and line that Skyelight Build stamps on each element. Pass a file or a component to see every thread about it before you edit it. Pass neither to get the stamped files ranked by open and deferred threads.

find_by_source only finds threads left on builds stamped by Skyelight Build.

ArgumentTypeDescription
projectIdstringOptional if a project is bound
filestringA path or a file name, for example PricingTable.tsx
linenumberThreads nearest this line come first
componentstringA component name, for example PricingTable
statusopen, deferred or resolvedOptional
limitnumberOptional
find_similarRead-only

Returns existing threads that may report the same thing. Pass the text you are about to report, or an existing item. Each match lists why it matched: shared words, the same page, the same element or the same source file. Matching compares text and doesn’t call an AI model.

ArgumentTypeDescription
textstringWhat you are about to report
itemIdstringUse instead of text to find duplicates of this thread
projectIdstringOptional if a project is bound or itemId is given
pagestringA page path or URL
selectorstringCSS selector of the element
includeResolvedbooleanDefault true, because a resolved match can mean the problem came back
limitnumberMaximum matches. Default 5
merge_itemsWrites

Merges duplicate threads into one. Each duplicate is hidden from thread lists and counts as an extra report on the thread you keep. Nothing is deleted.

All the threads must be in the same project, and they must be threads, not replies. A call takes up to 50 duplicates. If the thread you keep was itself merged into another thread, the duplicates go to that one. Returns merged (how many threads were merged) and canonicalId (the thread they went to). The tool is marked destructive, so most clients ask before running it, and a merge can’t be undone. See Duplicates.

ArgumentTypeDescription
itemIdstringRequired. The thread to keep
duplicateIdsarrayRequired. Threads that report the same problem

The local server calls the same operations over HTTP. To call them from your own code, see the REST API.

Last updated on