AI Process Manager (AIPM)
Structured Windows state for AI agents: processes, windows, UI trees.
Connector by agorapassadoagora-debug · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/agorapassadoagora-debug-aipm
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 19 read · 4 write · 6 delete · 3 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 32
Read from the source code; the running server may list different tools.
Read 19 · Look things up without changing anything.
aipm_explainaipm_ja_fazaipm_waitcheck_filecheck_processget_app_knowledgeget_audit_logget_economy_statsget_recent_eventsget_system_statusget_taskbarget_ui_tree
Show 7 more tools
health_checklist_processeslist_windowsread_notesread_windowui_findui_find_at
Write 4 · Create, change, send or run things.
focus_windowpost_notereport_action_outcomereport_task_outcome
Delete 6 · Delete, drop, revoke or wipe things.
ui_actui_dragui_invokeui_select_optionui_send_keysui_set_value
Not yet classified 3 · We could not tell from the name and description.
aipm_actaipm_observewait_for
Secrets and settings it asks for
Other settings (environment variables or headers).
AIPM_API
Files it touches
- Any path the agent passes to its tools
Tools (32)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
aipm_actPerform one AIPM actionPerform exactly one click, fill, or select against a fresh opaque target_ref. Reconcile unknown outcomes before retrying.
aipm_explainExplain an AIPM capabilityExplain a capability. To consult local app recipes, also pass app, its observed version/layout and all observed preconditions. Recipes are advisory and do not execute actions.
aipm_ja_fazDoes the AIPM already do this?read-onlyASK THIS BEFORE WRITING CODE, BEFORE REACHING FOR THE SHELL, AND BEFORE ASSUMING THE AIPM CANNOT DO SOMETHING. Describe what you want in plain words (Portuguese or English, verbs are fine) and it returns the routes that already do it, with their parameters and their known traps. Why it exists, measured 27/08/2026: answering "does the AIPM already do this?" used to mean reading ~1047 KB of docs, so re-deriving was cheaper than looking up — and agents re-derived. Two real cases the same week, both with the capability ALREADY PRESENT: one agent dropped to the shell to drag by coordinates; another…
aipm_observeObserve AIPM stateObserve one scoped process, window, or UI page. UI controls may include fresh target_ref values. Follow has_more with offset.
aipm_waitReconcile an AIPM operationRead the receipt for one operation_id (query only). Pass timeout_ms to poll until completed or timeout; the reply declares waited true/false with waited_ms, never claiming a wait that did not happen.
check_fileCheck a file or folderFile or folder status: exists, size, last modified, locked?, locking process. Ideal for checking if a render/export finished without opening Explorer.
check_processCheck if a process is runningCheck if a process is running on the user's Windows machine — no screenshot. Filter by executable name fragment (e.g. "python", "ffmpeg") and/or window title (e.g. "RENDER VIDEO 02"). Returns PID, CPU%, RAM, title, command line, start time. Command lines are truncated to 120 chars unless full_command_line=true. Results are capped at 10 matches, windowed processes first.
focus_windowBring a window to the foregroundBring a window to the foreground. REQUIRES action tier + app allowlist.
get_app_knowledgeGet learned recipes for an appQuery what AIPM learned locally about an app: successful (role, name) -> action recipes, plus common_failures (targets that keep failing — do not retry them). Call BEFORE acting in an app. Even with known=false you may get ui_shape: the shape of the app's UI tree (counts, roles, depth) learned passively from earlier reads — useful cold-start map. Pass the process name as shown in task manager (e.g. "notepad.exe", "chrome.exe").
get_audit_logView API audit logRecent API audit log: which agents called which endpoints and when. Works even when the API is paused. For compliance and debugging agent behavior. Secrets and typed text (api_key=, value=) are masked before being recorded.
get_economy_statsGet token economy statisticsLocal economy metrics: tokens and time saved by structured state vs screenshots, queries served, task/action success rates, top apps, 24h/7d trends. Two independent views of savings — economy_measured_by_api (measured here) and economy_reported_by_agents (self-reported): never add them together. The store block states which local database the totals came from.
get_recent_eventsList recent PC eventsLast 24h of PC events: process_started, process_ended (with duration), window_focused, file_changed. Useful for "what happened while I was away" (e.g. when did the render finish?).
get_system_statusGet system status (CPU, RAM, GPU, disk)Machine snapshot: CPU%, RAM used/total, GPU name and usage, disk free space per drive, network, uptime, active displays.
get_taskbarShow taskbar appsHuman view of the taskbar: pinned apps and running apps grouped with window titles.
get_ui_treeGet a window's UI element treeThe UI AUTOMATION TREE of a window: the accessibility snapshot with roles, names and states of the elements (buttons, fields, menus, panes) and how they are NESTED. Answers "what is the structure of this window", "how are the elements organised". It does NOT list windows (use list_windows) and does NOT give the plain text inside (use read_window). For finding a clickable element prefer ui_find instead of this tree. depth: default 4, max 30. max_nodes: default 200, max 1000 — max_nodes is the cost brake, NOT depth. Win32 apps expose content within 4-6 levels. Chromium/Electron apps (VS Code, Sl…
Show 17 more tools
health_checkCheck AI Process Manager statusPing the AI Process Manager backend. Call this FIRST in a new session. Returns version, API URL, whether the local service is reachable, and two things that decide your first action: executor (which tools act through UI Automation and need NO foreground, versus which emit real input and REQUIRE it) and forgepilot (whether the real-input arm is installed and running), plus warnings[] with a next_action when the arm is installed but stopped. The route catalogue is deliberately omitted — ask aipm_ja_faz(intent) for that.
list_processesList running processesList running processes sorted by CPU. Use "top" to limit (default 25, max 200). Prefer check_process when searching for one process. Command lines truncated unless full_command_line=true.
list_windowsList open windowsCATALOGUE of the desktop windows: one entry per window with title, process, minimized/maximized state, position, Z-order and which has focus. Answers "what windows are open", "which is in the foreground", "is X minimized". It does NOT give the text inside a window (use read_window) and does NOT give the UI element structure (use get_ui_tree). If the user asks to READ something or CLICK something, this is not the tool.
post_notePost a note to the agent noticeboardLeave a note on the local noticeboard for the next agent (or for the human reading later). Notes stay on this machine: never telemetry, never network. Worth writing when you measured something that contradicts a document, hit a trap that cost you time, made a decision the next agent would otherwise re-litigate, or finished something they might redo. Say what you MEASURED and with which command — a note asserting state without the command that produced it is a memory, not a finding. Max 500 chars, so write the conclusion, not the story. Mention @<name> to address a specific agent (they find it …
read_notesRead the agent noticeboardTHE NOTICEBOARD other agents left for you on this machine — findings, decisions, blockers and done reports. Call this FIRST in a session, before measuring anything: what looks like a fresh discovery is usually already answered here, and a note may say the thing you are about to investigate was fixed hours ago. Notes never leave this machine (never telemetry, never network). Start with no filter to get the `subjects` map (rooms + note counts) and pick the room where the work actually happens — the biggest room is rarely the one you assume. Then re-call with subject=. Use para=<your-name> as the…
read_windowRead text from a windowRead the raw TEXT that is INSIDE a window via UI Automation — no screenshot. Answers "what does the window say": console output, render progress ("frame 4812/5000"), editor content, chat messages. Works with consoles (cmd, PowerShell, Windows Terminal), editors and most native apps. You MUST identify the window first: pass title_contains (or hwnd from list_windows). It does NOT list windows (use list_windows) and does NOT return the UI element tree (use get_ui_tree).
report_action_outcomeReport UI action outcome (telemetry)Report one UI action outcome (invoke/set_value/focus). Feeds per-app recipes in get_app_knowledge. Metadata only — never screen content or typed text. Report FAILURES too (ok=false plus reason): they become common_failures and stop the next agent from repeating the same dead end.
report_task_outcomeReport task outcome (telemetry)Report task outcome to local telemetry (metadata only — never screen content). Call at END of a computer-use task. Feeds get_app_knowledge and get_economy_stats.
ui_actAct by intent (decides UIA vs real input)can change or delete dataACT BY INTENT - the first thing to try for click / type / pick. One call replaces choosing between ui_invoke / ui_set_value / ui_select_option AND doing the fallback dance by hand: it tries UI Automation first, drops to real input BY ITSELF only when UIA reports the pattern is missing, and tells you which one ran (mecanismo: uia | fisico). Two measured reasons to prefer it over ui_invoke. (1) AMBIGUITY. name_contains is a SUBSTRING match and every other action tool silently takes the FIRST hit - in a chat window that regularly means a word out of the conversation history, not the control you m…
ui_dragDrag an element onto anothercan change or delete dataDrag from one element to another (or between two absolute screen pixels). Use this for anything that only moves by dragging: video-editor timelines, kanban cards, calendar events, reordering lists, drag-to-upload. There is no UIA pattern for dragging, so this emits REAL mouse input with intermediate movement steps — measured: a teleport fires dragstart but never drop; the steps are what makes the drop land. Prefer from_index/to_index (the ledger then records the element ROLE, so the action is auditable); the pixel form exists for canvas/GDI surfaces with no UIA tree. REQUIRES the target window…
ui_findFind interactive UI elementsread-onlyList interactive UI elements in a window (buttons, fields, menus first; grid cells last). Each item has an element_index plus can_invoke/can_set_value flags. Read-only, no action tier required, and it does NOT need the window focused or in the foreground. Pass element_index to ui_act (preferred: it is the aim that is never refused for ambiguity) or to ui_invoke/ui_set_value/ui_select_option. TWO TRAPS, both measured: (1) element_index is valid for THIS SNAPSHOT ONLY — it is an identity within one walk of the tree, not a durable handle, and it ages on every re-render (a re-render has been seen …
ui_find_atFind UI element under a screen pixelread-onlyFind the UI element under an ABSOLUTE screen pixel (x, y) in a window. Returns the SAME global element_index as ui_find (so you can probe coordinates then act), plus element_role/element_name when available. For UIA-empty windows (canvas games, Java, GDI) it returns element_index -1 with a hint — no accessibility tree; use real clicks at those coordinates instead. NEVER clicks anything, but like the action endpoints it is opt-in (action tier + allowlist).
ui_invokeClick a UI elementcan change or delete dataSemantically CLICK a UI element via UI Automation (button, menu item, checkbox). Target by name_contains or element_index from ui_find. USE ui_act INSTEAD WHEN THE NAME MAY NOT BE UNIQUE: name_contains is a SUBSTRING and this tool takes the FIRST hit SILENTLY (in a chat window it routinely matches the conversation history, not the control); ui_act refuses that with 409 plus the candidates. Prefer ui_act too when this returns elemento_nao_suporta_invoke - it falls to real input by itself instead of dead-ending. This tool stays right when you already hold a fresh element_index and want UIA only.…
ui_select_optionSelect an option in a dropdowncan change or delete dataPick an option in a dropdown / <select> / combo box by its visible text. Use this instead of ui_invoke or ui_set_value for lists: a Chromium <select> supports neither invoke nor toggle, and set_value silently does nothing. WORKS WITH THE WINDOW IN THE BACKGROUND: it goes through UI Automation, not synthetic input, so the window does NOT need focus or foreground — do not call focus_window first "just in case" (only ui_send_keys and ui_drag require it). Expands the list, re-walks the tree (options do not exist while it is closed), selects by text, verifies the displayed value changed, then colla…
ui_send_keysType text with synthetic keystrokes (last resort)can change or delete dataLAST RESORT for typing, and there is now a shorter road: ui_act (intent=escrever) makes the ui_set_value attempt AND this fallback in a single call, deciding between them itself and reporting mecanismo: uia | fisico. Reach for ui_send_keys directly when you need a KEY PRESS (Enter, Tab, ctrl+enter - ui_act does not press keys), or when you want to drive each step by hand. Check the key parameter before planning: the vocabulary is closed and has no letters, no F-keys and no arrows, so ctrl+a / ctrl+s / ctrl+v are NOT available. Otherwise: use ui_set_value FIRST, and only reach for this when it …
ui_set_valueSet the value of a UI fieldcan change or delete dataPREFERRED WAY TO TYPE. Set text in an editable field via UI Automation (no key simulation). WORKS WITH THE WINDOW IN THE BACKGROUND: it writes through the accessibility provider, not the keyboard queue, so the window does NOT need to be focused or in the foreground — unlike ui_send_keys, it can fill a form while the user types in another app. Do NOT call focus_window first "just in case". The write is VERIFIED: the value is read back and compared, so ok:true means it actually landed; a control that silently ignores the write returns valor_nao_aplicado — and the shortest way out of that is ui_a…
wait_forWait until a condition is metLong-poll until a condition is met (or timeout). Replaces polling loops. Conditions: process_ended, process_started, file_stable (render/download done), file_exists, window_title_contains, note_after_seq (a new note on the agent mural). Max 50s per call; if satisfied=false, call again to keep waiting.
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit
- Sep 18, 2026 (1 month ago)
- Last release
- Jul 30, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.agorapassadoagora-debug/aipm- Version
- 0.5.0
- Auth
- No auth
- Packages
- npm aipm-mcp-server
- License
- MIT
- Repository
- github.com/aipm-engine/AIPM
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
AI Process Manager (AIPM) MCP server. Agent Mart. https://agentmart.dev/connectors/agorapassadoagora-debug-aipm (last updated 2026-10-25)