MCP Tools Reference

Reference for the MCP tools (~90) exposed to Claude Code agents via the MultiTerminal MCP server. Tools are called as mcp__multiterminal__<tool_name> from Claude Code. The per-category listing below covers the core set; some newer tools (worktrees, branch outcomes, wiki, code graph) are documented on their own pages.

How it works: The MCP server (%APPDATA%\multiterminal\mcp\index.js) wraps the REST API at http://localhost:5050. Each tool call translates to one or more REST API calls.

Task Management

list_tasks

List all kanban tasks from the MultiTerminal board.

Parameters

NameTypeRequiredDescription
statusstringNoFilter by status: all, todo, in_progress, done, suggestion. Default: all

Returns

Formatted text listing all tasks with ID, title, status, assignee, and priority.

Example

list_tasks(status="in_progress")

create_task

Create a new kanban task (ticket) on the MultiTerminal board.

Parameters

NameTypeRequiredDescription
titlestringYesTask title
descriptionstringYesTask description
createdBystringYesYour name
statusstringNoInitial status: todo, in_progress, done, suggestion. Default: todo
prioritystringNoPriority: low, normal, high. Default: normal

Returns

Task ID and confirmation message.

Example

create_task(
  title="Add dark mode",
  description="Implement dark/light theme toggle in settings panel",
  createdBy="Alice",
  priority="normal"
)

update_task_status

Update the status of a kanban task.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
statusstringYesNew status: todo, in_progress, done, suggestion
updatedBystringYesYour name

Returns

Success confirmation.

Example

update_task_status(taskId="c0ce8037", status="in_progress", updatedBy="Alice")

delete_task

Delete a kanban task.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to delete
deletedBystringYesYour name

Returns

Success confirmation.

Example

delete_task(taskId="c0ce8037", deletedBy="Alice")

claim_task

Claim/assign a kanban task to yourself or another team member.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to claim
assigneestringYesName of the person claiming the task

Returns

Success confirmation. May include a complexity suggestion if the task is detected as complex.

Example

claim_task(taskId="c0ce8037", assignee="Alice")

set_task_active

Set a task as the active task, auto-pausing all other active tasks for the same assignee. Enforces the "only one active task" rule.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to set active
updatedBystringYesYour name

Returns

Success confirmation with list of auto-paused task IDs and titles.

Example

set_task_active(taskId="c0ce8037", updatedBy="Alice")

get_task_detail

Get full task detail including checklist with notes history, continuation notes, plan, and summary. Shows checklist progress breakdown (done/coding/testing/pending counts).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID

Returns

Formatted task detail with checklist summary, individual item statuses, notes history, plan, and continuation notes.

Example

get_task_detail(taskId="c0ce8037")

update_task_checklist

Transition a checklist item to a new status with mandatory notes. Enforces state machine: pending → coding → testing → done (cycling allowed between coding and testing). Notes required for coding→testing, testing→coding, and testing→done transitions.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
itemIndexnumberYesZero-based index of the checklist item
newStatusstringYesNew status: coding, testing, or done
notesstringYesTransition notes (what was done or what needs fixing)
updatedBystringYesYour name

Returns

Item name, previous/new status, cycle count, and whether escalation was triggered (at 3 cycles).

Example

update_task_checklist(
  taskId="c0ce8037",
  itemIndex=0,
  newStatus="testing",
  notes="Implemented database schema and CRUD operations",
  updatedBy="Alice"
)

update_checklist

Replace all checklist items on a task. Use this to set up or edit the checklist items (not for transitioning status -- use update_task_checklist for that).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
checklistJsonstringYesJSON array of checklist items

Returns

Success confirmation.

Example

update_checklist(
  taskId="c0ce8037",
  checklistJson='[{"item":"Setup database","status":"pending","notes":[]},{"item":"Create API","status":"pending","notes":[]}]'
)

append_checklist_items

Append items to a task's existing checklist without replacing it. Use this to add new items (e.g. to Pending) -- unlike update_checklist (full replace), you do not need to fetch and resend the existing list (no risk of mangling existing items when rebuilding them). New items default to status pending. The server is authoritative: it validates the status, ignores any caller-supplied notes/assignedTo/cycleCount, and serializes the write so a concurrent append/transition won't clobber it.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
itemsJsonstringYesJSON array of items to append. Each element may be a plain description string or an {item,status?} object.

Returns

Success confirmation with the number of items appended.

Example

append_checklist_items(
  taskId="c0ce8037",
  itemsJson='["Add validation","Write tests"]'
)

assign_checklist_item

Assign a checklist item to a specific team agent. Set assignee to null to unassign.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
itemIndexnumberYesZero-based index of the checklist item
assigneestringNoName of the agent to assign to, or null to unassign

Returns

Success confirmation.

Example

assign_checklist_item(taskId="c0ce8037", itemIndex=2, assignee="Bob")

update_task_plan

Set or update the implementation plan for a task (markdown formatted).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
planstringYesImplementation plan (markdown)
updatedBystringYesYour name

Returns

Success confirmation.

Example

update_task_plan(
  taskId="c0ce8037",
  plan="## Phase 1\n- Create migrations\n\n## Phase 2\n- Add endpoints",
  updatedBy="Alice"
)

update_task_summary

Update a task's implementation summary and/or test results (markdown formatted).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
implementationSummarystringNoWhat was built/changed (markdown). Pass null to leave unchanged.
testResultsstringNoTest outcomes and verification (markdown). Pass null to leave unchanged.
updatedBystringYesYour name

Returns

Success confirmation.

Example

update_task_summary(
  taskId="c0ce8037",
  implementationSummary="Added ThemeService with dark/light toggle",
  testResults="All 12 unit tests passing",
  updatedBy="Alice"
)

update_task_continuation

Write continuation notes for session handoff. Describes where to pick up: current file, checklist progress, what's next, any blockers.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
continuationNotesstringYesContinuation context for next session
updatedBystringYesYour name

Returns

Success confirmation.

Example

update_task_continuation(
  taskId="c0ce8037",
  continuationNotes="Working on item 3 (API validation). Next: add input sanitization for title field.",
  updatedBy="Alice"
)

get_checklist_item_images

Get images attached to a checklist item. Returns base64-encoded image data that agents can visually analyze for context (e.g., screenshots of bugs, UI mockups, test results).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID
itemIndexnumberYesZero-based checklist item index

Returns

Array of base64-encoded images with MIME type and filename, or a message if no images are attached.

Example

get_checklist_item_images(taskId="c0ce8037", itemIndex=0)

get_my_active_task

Get YOUR active in-progress task (filtered by your agent name). Returns full task detail with checklist summary. Use this instead of list_tasks when you just need your current active task.

Parameters

NameTypeRequiredDescription
agentNamestringYesYour terminal/agent name (from MULTITERMINAL_NAME env var)

Returns

Full task detail with checklist summary, or a message if no active task exists.

Example

get_my_active_task(agentName="Alice")

get_my_pickable_tasks

Get tasks you can work on: your assigned in-progress tasks + unassigned todo tasks available to claim. Returns a compact formatted list. Use this instead of list_tasks when browsing for work.

Parameters

NameTypeRequiredDescription
agentNamestringYesYour terminal/agent name (from MULTITERMINAL_NAME env var)

Returns

Compact list of pickable tasks with ID, title, status, priority, and your relationship to each (assigned, helper, or available).

Example

get_my_pickable_tasks(agentName="Alice")

Task Relationships

add_task_relationship

Add a blocking/dependency relationship between two tasks. Types: blocks (A blocks B), depends_on (A depends on B), related_to (informational). Automatically creates the inverse relationship.

Parameters

NameTypeRequiredDescription
sourceTaskIdstringYesSource task ID (the task you're adding a relationship FROM)
targetTaskIdstringYesTarget task ID (the task you're adding a relationship TO)
typestringYesRelationship type: blocks, depends_on, related_to
createdBystringYesYour name

Returns

Success confirmation.

Example

add_task_relationship(sourceTaskId="c0ce8037", targetTaskId="d4e5f6a7", type="blocks", createdBy="Alice")

remove_task_relationship

Remove a relationship between two tasks (removes both directions).

Parameters

NameTypeRequiredDescription
sourceTaskIdstringYesOne of the two related task IDs
targetTaskIdstringYesThe other related task ID

Returns

Success confirmation.

Example

remove_task_relationship(sourceTaskId="c0ce8037", targetTaskId="d4e5f6a7")

get_task_relationships

Get all relationships for a task (blocks, depends_on, related_to).

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to get relationships for

Returns

List of relationships with source/target task IDs, type, and creator.

Example

get_task_relationships(taskId="c0ce8037")

Task File Links

get_task_files

Get all files linked to a task.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID

Returns

List of linked files with paths, descriptions, line ranges, and who linked them.

Example

get_task_files(taskId="c0ce8037")

Task Reports

save_task_report

Save an agent report (HTML/markdown) linked to a kanban task. Use after generating a specialist agent report (verifier, code-reviewer, security-auditor) to persist it for future reference.

Parameters

NameTypeRequiredDescription
taskIdstringYesKanban task ID this report belongs to
agentNamestringYesAgent that generated the report (e.g. verifier, code-reviewer)
reportContentstringYesFull report content (HTML or markdown)
reportTypestringNoReport format: html or markdown. Default: html
verdictstringNoReport verdict (e.g. PASS, FAIL, PASS WITH NOTES)
scorenumberNoNumeric score 0-100
invocationIdstringNoAgent invocation ID (links to agent_invocations table)
createdBystringNoWho saved the report

Returns

Success confirmation with report ID.

Example

save_task_report(
  taskId="c0ce8037",
  agentName="verifier",
  reportContent="<h1>Verification Report</h1><p>All checks passed.</p>",
  verdict="PASS",
  score=95
)

get_task_reports

List reports saved for a kanban task. Returns metadata (no content) -- use the reportId with the REST API to fetch full content.

Parameters

NameTypeRequiredDescription
taskIdstringYesKanban task ID
agentNamestringNoFilter by agent name
limitnumberNoMax reports to return. Default: 50

Returns

List of report metadata with IDs, agent names, verdicts, scores, and timestamps.

Example

get_task_reports(taskId="c0ce8037", agentName="verifier")

Messaging

list_terminals

List all active terminals (teammates) connected to MultiTerminal.

Parameters

None.

Returns

Formatted list of terminals with name, ID prefix, and last active time.

Example

list_terminals()

register_terminal

Register your terminal with MultiTerminal to send/receive messages.

Parameters

NameTypeRequiredDescription
namestringYesYour terminal name
docIdstringYesUnique document ID for this terminal

Returns

Terminal ID for use in subsequent messaging calls.

Example

register_terminal(name="Alice", docId="session-abc123")

send_message

Send a message to another terminal.

Parameters

NameTypeRequiredDescription
fromTerminalIdstringYesYour terminal ID
tostringYesRecipient terminal name
messagestringYesMessage content

Returns

Delivery confirmation with sender and recipient names.

Example

send_message(fromTerminalId="a1b2c3d4", to="Bob", message="Can you review my PR?")

broadcast_message

Broadcast a message to all terminals.

Parameters

NameTypeRequiredDescription
fromTerminalIdstringYesYour terminal ID
messagestringYesMessage content

Returns

Delivery confirmation with recipient count.

Example

broadcast_message(fromTerminalId="a1b2c3d4", message="Build is ready for testing!")

get_messages

Get messages for your terminal. Messages are consumed on read.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID

Returns

Formatted list of messages with sender, content, and timestamp.

Example

get_messages(terminalId="a1b2c3d4")

get_inbox

Get inbox messages for a user. Shows notifications for items ready for testing, escalations, task completions, and helper requests.

Parameters

NameTypeRequiredDescription
userIdstringYesUser ID to get inbox for (e.g., the owner's first name)
unreadOnlybooleanNoOnly show unread messages. Default: false
limitnumberNoMax messages to return. Default: 50

Returns

Formatted inbox with message type, summary, task context, and read/reply status.

Example

get_inbox(userId="Owner", unreadOnly=true)

mark_inbox_read

Mark an inbox message as read, or mark all messages as read for a user.

Parameters

NameTypeRequiredDescription
messageIdstringNoSpecific message ID to mark as read
userIdstringNoMark ALL messages as read for this user

Returns

Success confirmation.

Example

mark_inbox_read(messageId="abc12345")
mark_inbox_read(userId="Owner")

reply_to_inbox

Reply to an inbox message with notes or feedback.

Parameters

NameTypeRequiredDescription
messageIdstringYesInbox message ID to reply to
replyTextstringYesYour reply text

Returns

Success confirmation.

Example

reply_to_inbox(messageId="abc12345", replyText="Looks good, marking as done")

Team & Helpers

get_team_roster

Get the team roster for a project with merged profile data (preferred_model, agent_instructions, role, skills). Use this to discover which agents to spawn for a team assembly workflow.

Parameters

NameTypeRequiredDescription
projectPathstringYesAbsolute path to the project directory

Returns

Project name and array of agents with name, model, role, skills, and online status.

Example

get_team_roster(projectPath="H:\\DevLaptop\\ClarionPowerShell\\MultiTerminal")

add_helper

Add a helper to a kanban task. Helpers assist with the task without being the primary assignee.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to add helper to
helperstringYesName of the helper to add
addedBystringYesYour name

Returns

Success confirmation with helper count.

Example

add_helper(taskId="c0ce8037", helper="Bob", addedBy="Alice")

remove_helper

Remove a helper from a kanban task.

Parameters

NameTypeRequiredDescription
taskIdstringYesTask ID to remove helper from
helperNamestringYesName of the helper to remove

Returns

Success confirmation with remaining helper count.

Example

remove_helper(taskId="c0ce8037", helperName="Bob")

get_owner_profile

Get the owner's profile (git identity, GitHub username, token status). Use when you need git user.name/email for commits or GitHub username for repo operations.

Parameters

None.

Returns

Owner profile with fullName, email, gitHubUsername, hasGitHubToken, and timestamps.

Example

get_owner_profile()

Projects

list_projects

List all registered projects with summary info (name, path, type, version, lead).

Parameters

None.

Returns

Formatted list of projects with key metadata.

Example

list_projects()

get_project

Get a project with all associations (agents, MCP servers, specialists, paths, prompts, skills). Returns the full project context.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID (GUID). Use list_projects to find IDs.

Returns

Full project context including all 7 association tables.

Example

get_project(projectId="proj-123-456")

update_project

Update one or more project fields.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID
fieldsobjectYesObject of field names to values. Accepted keys: deployPath, buildCommand, projectType, description, icon, iconColor, teamLead, gitRepoUrl, gitDefaultBranch, gitAutoCommit, currentVersion, isPinned

Returns

Success confirmation.

Example

update_project(
  projectId="proj-123",
  fields={"deployPath": "C:\\Deploy", "buildCommand": "dotnet build"}
)

add_project_agent

Add or update an agent assignment on a project.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID
agentNamestringYesAgent name (e.g., "Alice", "Bob")
rolestringNoAgent role (e.g., "backend", "frontend", "fullstack")
preferredModelstringNoPreferred Claude model: opus, sonnet, haiku

Returns

Success confirmation.

Example

add_project_agent(projectId="proj-123", agentName="Alice", role="backend", preferredModel="sonnet")

remove_project_agent

Remove an agent from a project.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID
agentNamestringYesAgent name to remove

Returns

Success confirmation.

Example

remove_project_agent(projectId="proj-123", agentName="Alice")

add_project_association

Add an association to a project. Type determines what to add: mcp_server, specialist, path, prompt, or skill. Each type requires different fields.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID
typestringYesAssociation type: mcp_server, specialist, path, prompt, skill
serverNamestring*(mcp_server) MCP server name
isEnabledbooleanNo(mcp_server, specialist, skill) Whether enabled. Default: true
agentTypestring*(specialist) Agent type, e.g., "devils-advocate", "verifier"
customPromptstringNo(specialist) Optional override prompt
pathTypestring*(path) Category: source, deploy, build_output, docs, etc.
pathValuestring*(path) Filesystem path value
descriptionstringNo(path) Optional description
promptTypestring*(prompt) Category: system, user, context, workflow
promptTextstring*(prompt) Prompt text content
displayOrdernumberNo(prompt) Sort order. Default: 0
skillNamestring*(skill) Skill name

* Required based on the type selected.

Returns

Success confirmation.

Example

// Add an MCP server
add_project_association(projectId="proj-123", type="mcp_server", serverName="sqlite-mcp")

// Add a specialist agent
add_project_association(projectId="proj-123", type="specialist", agentType="verifier")

// Add a path
add_project_association(projectId="proj-123", type="path", pathType="deploy", pathValue="C:\\Deploy", description="Production deploy folder")

// Add a skill
add_project_association(projectId="proj-123", type="skill", skillName="kanban-task")

remove_project_association

Remove an association from a project. Type determines what to remove. Each type uses a different identifier.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID
typestringYesAssociation type: mcp_server, specialist, path, prompt, skill
serverNamestring*(mcp_server) Server name to remove
agentTypestring*(specialist) Agent type to remove
pathIdnumber*(path) Path ID to remove (from get_project response)
promptIdnumber*(prompt) Prompt ID to remove (from get_project response)
skillNamestring*(skill) Skill name to remove

* Required based on the type selected.

Returns

Success confirmation.

Example

remove_project_association(projectId="proj-123", type="mcp_server", serverName="sqlite-mcp")

Knowledge Base

query_knowledge

Search the institutional knowledge base for decisions, patterns, gotchas, and anti-patterns. Uses FTS5 full-text search.

Parameters

NameTypeRequiredDescription
querystringYesSearch text
categorystringNoFilter: decision, pattern, gotcha, anti_pattern, debug_insight, preference
projectIdstringNoFilter by project ID
tagsstringNoComma-separated tags to filter by
limitnumberNoMax results. Default: 20

Returns

Formatted list of matching knowledge entries with title, content, category, tags, and confidence.

Example

query_knowledge(query="SQL injection", category="gotcha", limit=10)

add_knowledge

Add a knowledge entry to institutional memory.

Parameters

NameTypeRequiredDescription
titlestringYesShort title summarizing the entry
contentstringYesFull content of the knowledge entry
categorystringYesdecision, pattern, gotcha, anti_pattern, debug_insight, preference
projectIdstringNoProject ID (null for global)
sourceTypestringNoHow discovered: manual, session, debug, review. Default: manual
sourceIdstringNoReference ID of source (session ID, task ID)
tagsstringNoComma-separated tags
confidencestringNoconfirmed, likely, uncertain. Default: confirmed

Returns

Success confirmation with entry ID.

Example

add_knowledge(
  title="Always escape single quotes in PowerShell",
  content="Use Replace(\"'\", \"''\") before interpolating values into PowerShell commands to prevent injection.",
  category="gotcha",
  tags="security,powershell,injection",
  confidence="confirmed"
)

get_code_digest

Get pre-analyzed summary of a source file. Returns null if no digest exists or if the digest is stale.

Parameters

NameTypeRequiredDescription
filePathstringYesAbsolute path to the source file
projectIdstringNoProject ID
includeStalebooleanNoReturn stale digests too. Default: false

Returns

File digest with purpose, key classes, key methods, patterns, gotchas, dependencies, and line count.

Example

get_code_digest(filePath="H:\\DevLaptop\\...\\MessageBroker.cs")

save_code_digest

Save or update a code digest for a source file.

Parameters

NameTypeRequiredDescription
projectIdstringYesProject ID this file belongs to
filePathstringYesAbsolute path to the source file
fileHashstringYesSHA256 hash for staleness detection
purposestringNoOne-sentence description of what this file does
keyClassesstringNoJSON array of key class names
keyMethodsstringNoJSON array of key method/function names
patternsstringNoNotable patterns used
gotchasstringNoGotchas and pitfalls
dependenciesstringNoJSON array of key dependencies
lineCountnumberNoNumber of lines in the file
digestModelstringNoModel used to generate digest. Default: haiku

Returns

Success confirmation with digest ID.

Example

save_code_digest(
  projectId="proj-123",
  filePath="H:\\DevLaptop\\...\\MessageBroker.cs",
  fileHash="abc123def456",
  purpose="Central hub routing all messages between terminals",
  keyClasses='["MessageBroker"]',
  keyMethods='["SendMessage","RegisterTerminal","CreateTask"]',
  lineCount=4254
)

Sessions

import_session

Import a Claude Code session JSONL transcript file and link it to a kanban task. Extracts all messages, stores them in SQLite with FTS5 full-text search indexing, and creates a lineage record.

Parameters

NameTypeRequiredDescription
sessionFilePathstringYesAbsolute path to the Claude Code session JSONL file
taskIdstringYesKanban task ID this session belongs to
agentNamestringYesName of the agent who ran this session
parentSessionIdstringNoParent session ID for chaining agent cycles
sessionTypestringNoSemantic label: coding, review, testing

Returns

Session ID and message count.

Example

import_session(
  sessionFilePath="C:\\Users\\<username>\\.claude\\projects\\...\\abc123.jsonl",
  taskId="c0ce8037",
  agentName="Alice",
  sessionType="coding"
)

get_task_sessions

Get all imported session lineage records for a kanban task. Returns session metadata including agent, type, timestamps, and parent chain links.

Parameters

NameTypeRequiredDescription
taskIdstringYesKanban task ID

Returns

List of session records with metadata.

Example

get_task_sessions(taskId="c0ce8037")

get_session_lineage

Get the full lineage chain for a session, ordered from root to leaf. Walks the parent_session_id chain to reconstruct the full history of agent cycling.

Parameters

NameTypeRequiredDescription
sessionIdstringYesSession ID to retrieve the lineage chain for

Returns

Ordered chain of session records from root to leaf.

Example

get_session_lineage(sessionId="def456")

sync_sessions

Incrementally sync Claude Code session JSONL files from disk to SQLite. Scans a Claude project folder for unimported sessions and imports them. Skips already-imported sessions.

Parameters

NameTypeRequiredDescription
claudeProjectPathstringYesAbsolute path to the Claude project folder
agentNamestringNoDefault agent name. Default: Unknown
taskIdstringNoTask ID for unlinked sessions. Default: __unlinked__

Returns

Import summary: imported, skipped, failed, total counts.

Example

sync_sessions(
  claudeProjectPath="C:\\Users\\<username>\\.claude\\projects\\H--DevLaptop-...",
  agentName="Alice",
  taskId="c0ce8037"
)

search_session_history

Full-text search across imported session messages. Uses SQLite FTS5 when available, falls back to LIKE search.

Parameters

NameTypeRequiredDescription
taskIdstringNo*Kanban task ID to search within
querystringNo*Search text to find
rolestringNoFilter: user or assistant
agentNamestringNoFilter by agent name
limitnumberNoMax results. Default: 50

* At least one of taskId or query required.

Returns

Matching session messages with context.

Example

search_session_history(taskId="c0ce8037", query="FTS5", role="assistant")

search_session_memory

Semantic (hybrid FTS5 + vector-similarity) search over session transcript chunks. Finds context by meaning rather than exact keywords -- ask a natural-language question. Use this when you remember the idea but not the wording; use search_session_history when you remember the words.

Parameters

NameTypeRequiredDescription
querystringYesNatural-language search text
projectPathstringNoLimit results to a project path
topKnumberNoMax results to return (1-100). Default: 10
agentNamestringNoFilter by agent name

Returns

Ranked transcript chunks with session ID, terminal name, project path, chunk text, and relevance score.

Example

search_session_memory(query="what was the WebView2 event bridge approach?", topK=5)

get_latest_session

Get the most recent session for a project, including cached summary and recent messages if no summary exists. Use at session start to get context from the previous session.

Parameters

NameTypeRequiredDescription
projectPathstringYesFilesystem path to the project
agentNamestringNoFilter by agent name (e.g. "Alice"). Returns the most recent session for this specific agent.

Returns

Session metadata, cached summary, and optionally recent messages for lazy summary generation.

Example

// Get latest session across all agents
get_latest_session(projectPath="H:\\DevLaptop\\ClarionPowerShell\\MultiTerminal")

// Get latest session for a specific agent
get_latest_session(projectPath="H:\\DevLaptop\\ClarionPowerShell\\MultiTerminal", agentName="Alice")

update_session_summary

Save a generated summary for a session. Called after an agent generates a recap of a previous session's work.

Parameters

NameTypeRequiredDescription
sessionIdstringYesSession ID to update
summarystringYesGenerated summary text

Returns

Success confirmation.

Example

update_session_summary(
  sessionId="def456",
  summary="Implemented knowledge base with FTS5 search and code digest system"
)

get_unsummarized_sessions

Get sessions that have no cached summary for a project. Used at session start to batch-generate missing summaries.

Parameters

NameTypeRequiredDescription
projectPathstringYesFilesystem path to the project
limitnumberNoMax sessions to return. Default: 10

Returns

List of sessions without summaries, with session IDs, agent names, and timestamps.

Example

get_unsummarized_sessions(projectPath="H:\\DevLaptop\\ClarionPowerShell\\MultiTerminal", limit=5)

Context Self-Management

Tools that let an agent see and manage its own context window. When context crosses a threshold (default 70%), the context-threshold-hook injects an advisory nudge; the agent then writes continuation notes and clears at a clean point of its own choosing. /clear is recoverable — the SessionStart(source=clear) flow rebuilds the agent from its continuation notes + session summary.

check_my_context

Check YOUR terminal's live context-window fill (plus rate-limit quota and token usage). Returns contextPct 0–100 — the signal for whether it's a good time to wrap up and clear. Reads the same statusline stats the HUD status bar shows.

Parameters

NameTypeRequiredDescription
agentNamestringNoYour terminal/agent name. Omit to use $MULTITERMINAL_NAME.
docIdstringNoTerminal docId. Omit to use $MULTITERMINAL_DOC_ID, or the newest stats file for the name.

Returns

Context percentage with a recommendation (wrap-up vs headroom, relative to MULTITERMINAL_CONTEXT_THRESHOLD, default 70), plus 5h/7d quota, token total/cost, and staleness. Returns "not reporting" if the terminal hasn't written stats yet.

Example

check_my_context(agentName="Alice")

clear_my_context

Clear YOUR OWN context by submitting /clear into your terminal (types /clear + Enter). ⚠️ This wipes the conversation. Write continuation notes first (update_task_continuation) — SessionStart then rebuilds you from those notes + the session summary. Call it only at a clean continuation point you chose, and as the last action of your turn.

Parameters

NameTypeRequiredDescription
agentNamestringNoYour terminal/agent name. Omit to use $MULTITERMINAL_NAME.
acknowledgebooleanNoTwo-step guard. Without it, the tool returns a notes-first reminder instead of clearing. Set true to actually clear.

Returns

A reminder (first call) or a confirmation that /clear was submitted (with acknowledge=true).

Example

// 1. write notes, then:
clear_my_context(agentName="Alice", acknowledge=true)

compact_my_context

Compact YOUR OWN context by submitting /compact into your terminal (types /compact + Enter). Unlike clear_my_context (which wipes the conversation), /compact preserves a running summary — use it at a mid-work boundary to reclaim context without losing your place and keep going. Write continuation notes first (update_task_continuation): /compact's auto-summary is lossy, so your notes stay the authoritative resume record. Single call — no acknowledge needed, since /compact is non-destructive. Make it the last action of your turn (it fires at turn end). compact = mid-work, keep going; clear = task-end, full reset. Targets your own terminal only — an explicit agentName that isn't you is rejected (compacting a different agent is a separate authorized tool).

Parameters

NameTypeRequiredDescription
agentNamestringNoYour terminal/agent name. Omit to use $MULTITERMINAL_NAME. An explicit value that isn't your own identity is rejected — this tool self-targets only.
focusstringNoOptional guidance appended to /compact steering what the summary must preserve (e.g. keep the active task ID, modified files, next step). Omit for a plain /compact. Sanitized to a single line before use.

Returns

A best-effort confirmation that /compact (plus any self-targeted focus text) was requested — the inject is fire-and-forget, so verify on your next turn — with a notes-first + lossy-summary reminder.

Example

// 1. write notes, then (omit agentName to self-target):
compact_my_context(focus="keep active task ID, modified files, next step")

Browser Tabs

Per-terminal tabbed browser (WebView2) in the HUD area. Agents can open tabs with URLs or raw HTML, execute JavaScript, read DOM elements, exchange messages bidirectionally with the page, and capture screenshots. Enables interactive dashboards, live previews, mini-apps, and visual debugging.

open_browser_tab

Open a new browser tab in your terminal's HUD area. Provide either a URL to navigate to, or raw HTML content to display.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name (from register_terminal)
titlestringYesTab title displayed in the tab strip
urlstringNoURL to navigate to (optional if content provided)
contentstringNoRaw HTML content to display (optional if url provided)

Returns

Tab ID string used to reference this tab in subsequent calls.

Example

// Open a tab with raw HTML
open_browser_tab(terminalId="Alice", title="Dashboard", content="<h1>Hello</h1>")

// Open a tab with a URL
open_browser_tab(terminalId="Alice", title="Docs", url="file:///H:/docs/index.html")

set_browser_content

Update an existing browser tab's content, URL, or title.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
urlstringNoNew URL to navigate to
contentstringNoNew HTML content to display
titlestringNoNew tab title

Returns

Confirmation message.

Example

set_browser_content(terminalId="Alice", tabId="abc123", content="<h1>Updated</h1>")

close_browser_tab

Close a browser tab in your terminal.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID to close

Returns

Confirmation message.

Example

close_browser_tab(terminalId="Alice", tabId="abc123")

execute_browser_script

Execute JavaScript in a browser tab and return the result. Use this to interact with page content, click buttons, read values, modify the DOM, or run any client-side code.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
scriptstringYesJavaScript code to execute. The return value of the last expression is returned as the result.

Returns

The return value of the executed script (serialized as a string).

Example

// Read a value from the page
execute_browser_script(terminalId="Alice", tabId="abc123",
  script="document.getElementById('status').textContent")

// Modify the page
execute_browser_script(terminalId="Alice", tabId="abc123",
  script="document.body.style.background = '#1e1e2e'")

get_browser_console_logs

Get console log messages (log, warn, error, info) from a browser tab. Useful for debugging JavaScript in pages you've loaded.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
limitnumberNoMaximum number of log entries to return (most recent first). Default: all.

Returns

Array of console log entries with level, message, and timestamp.

Example

get_browser_console_logs(terminalId="Alice", tabId="abc123", limit=10)

get_browser_element_content

Read the content of a DOM element by CSS selector. Returns text content, innerHTML, or other properties.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
selectorstringYesCSS selector (e.g., #myId, .myClass, div.content > p:first-child)
propertystringNoElement property to read: textContent (default), innerHTML, outerHTML, value, className, id, or any attribute name

Returns

The requested property value of the matched element.

Example

// Read text of a heading
get_browser_element_content(terminalId="Alice", tabId="abc123", selector="h1")

// Read innerHTML of a container
get_browser_element_content(terminalId="Alice", tabId="abc123",
  selector="#results", property="innerHTML")

post_browser_message

Send a JSON message to a browser tab's page. The page receives it via window.chrome.webview.addEventListener('message', e => { /* e.data */ }). Use for bidirectional communication between agent and page JavaScript.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
dataobjectYesJSON data to send to the page. Available as e.data in the message event handler.

Returns

Confirmation message.

Example

// Send a command to the page
post_browser_message(terminalId="Alice", tabId="abc123",
  data={"type": "update", "cpu": 47, "status": "running"})

// Page receives it:
// window.chrome.webview.addEventListener('message', e => {
//   console.log(e.data.type);  // "update"
//   console.log(e.data.cpu);   // 47
// });

get_browser_messages

Get messages sent from a browser tab's page via window.chrome.webview.postMessage(). Pages use this to send data back to the agent. Returns buffered messages with timestamps.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
limitnumberNoMaximum number of messages to return (most recent). Default: all.

Returns

Array of messages sent from the page, each with data and timestamp.

Example

// Page sends: window.chrome.webview.postMessage({type: "click", id: "btn1"})
// Agent reads:
get_browser_messages(terminalId="Alice", tabId="abc123")

capture_browser_screenshot

Capture a PNG screenshot of a browser tab's content. Returns base64-encoded image data.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab

Returns

Base64-encoded PNG image data of the tab's visible content.

Example

capture_browser_screenshot(terminalId="Alice", tabId="abc123")

list_webmcp_tools

List WebMCP tools registered by a page in a browser tab. Pages use navigator.modelContext.registerTool() to expose structured tools. Returns tool names, descriptions, and input schemas. Use this before invoke_webmcp_tool to see what's available.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab

Returns

Array of registered tool definitions with names, descriptions, and input schemas.

Example

list_webmcp_tools(terminalId="Alice", tabId="abc123")

invoke_webmcp_tool

Invoke a WebMCP tool registered by a page in a browser tab. The page must have registered the tool via navigator.modelContext.registerTool(). Use list_webmcp_tools first to discover available tools and their input schemas.

Parameters

NameTypeRequiredDescription
terminalIdstringYesYour terminal ID or name
tabIdstringYesTab ID returned from open_browser_tab
toolNamestringYesName of the WebMCP tool to invoke (from list_webmcp_tools)
inputobjectNoInput parameters for the tool, matching the tool's inputSchema

Returns

The tool's return value as defined by the page.

Example

invoke_webmcp_tool(
  terminalId="Alice",
  tabId="abc123",
  toolName="search_results",
  input={"query": "SQL injection", "limit": 10}
)

XAML

render_xaml

Render a WPF XAML snippet to a PNG image and return it as base64. Use this to preview XAML UI layouts, dialogs, and controls without launching the app. The XAML must have a root element (e.g. Border, Grid, StackPanel) with xmlns declarations.

Parameters

NameTypeRequiredDescription
xamlstringYesWPF XAML markup (must include xmlns declarations)
widthnumberNoRender width in pixels. Default: 520
heightnumberNoRender height in pixels. Default: 400

Returns

Base64-encoded PNG image of the rendered XAML.

Example

render_xaml(
  xaml="<Border xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Background='#1e1e2e'><TextBlock Text='Hello' Foreground='White'/></Border>",
  width=520,
  height=400
)

Debug

debug_logs

Read debug log entries from MultiTerminal with filtering. Use to check system behavior, trace message delivery, monitor services.

Parameters

NameTypeRequiredDescription
countnumberNoNumber of entries. Default: 50, max: 500
offsetnumberNoSkip entries for pagination. Default: 0
sourcestringNoFilter by component (e.g., "InboxMonitor", "MessageBroker")
levelstringNoFilter: Trace, Info, Warning, Error
searchstringNoText search within messages (case-insensitive)

Returns

Formatted log entries with timestamp, source, level, and message.

Example

debug_logs(count=20, source="InboxMonitor", level="Info")

debug_clear

Clear all debug log entries.

Parameters

None.

Returns

Confirmation with previous entry count.

Example

debug_clear()

debug_pause

Pause debug logging. New entries will be silently discarded until resumed.

Parameters

None.

Returns

Confirmation of paused state.

Example

debug_pause()

debug_resume

Resume debug logging after a pause.

Parameters

None.

Returns

Confirmation of resumed state.

Example

debug_resume()

debug_status

Get debug log status: entry count, paused state, max capacity.

Parameters

None.

Returns

Status object with count, isPaused, and maxCapacity.

Example

debug_status()

debug_log_files

List all available debug log files from previous sessions, most recent first. Each session creates a timestamped log file that persists across restarts.

Parameters

None.

Returns

List of log file paths with timestamps and sizes.

Example

debug_log_files()

Fast code and file search powered by ripgrep (bundled as tools/rg.exe). Provides regex search across codebases with structured results.

search_code

Search file contents using ripgrep. Returns matching lines with file paths and line numbers. Supports regex patterns, glob filtering, file type filtering, context lines, and more.

Parameters

NameTypeRequiredDescription
patternstringYesRegex pattern to search for (or literal string if fixedStrings is true)
pathstringYesDirectory or file path to search in
caseInsensitivebooleanNoCase insensitive search (default: false)
multilinebooleanNoEnable multiline matching where . matches newlines
fixedStringsbooleanNoTreat pattern as literal string, not regex
globstringNoGlob pattern to filter files (e.g. "*.cs", "*.{ts,tsx}")
fileTypestringNoFile type to search (e.g. "cs", "js", "py")
maxCountnumberNoMaximum matches per file (0 = unlimited)
contextnumberNoLines of context before and after each match
beforenumberNoLines of context before each match
afternumberNoLines of context after each match
filesWithMatchesbooleanNoOnly return file paths that contain matches
countbooleanNoOnly return match counts per file

Returns

Formatted text with match count, stats (files searched, elapsed time), and matching lines as filepath:line:text.

Example

search_code(pattern="class.*Service", path="H:\\project", glob="*.cs", context=2)

search_files

Find files matching a glob pattern using ripgrep. Fast file discovery across directories.

Parameters

NameTypeRequiredDescription
pathstringYesDirectory to search in
globstringNoGlob pattern to match file names (e.g. "*.cs", "test_*.py")
fileTypestringNoFile type filter (e.g. "cs", "js", "py")

Returns

File count and list of matching file paths.

Example

search_files(path="H:\\project", glob="*.cs")