Skip to content
Agentmart
Submit a tool

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

IndexedMITLocal (stdio)★ 1
Write a review

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.

We use your email only for this newsletter. Privacy

About

Structured Windows state for AI agents: processes, windows, UI trees. No screenshots.

No 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_explain
  • aipm_ja_faz
  • aipm_wait
  • check_file
  • check_process
  • get_app_knowledge
  • get_audit_log
  • get_economy_stats
  • get_recent_events
  • get_system_status
  • get_taskbar
  • get_ui_tree
Show 7 more tools
  • health_check
  • list_processes
  • list_windows
  • read_notes
  • read_window
  • ui_find
  • ui_find_at

Write 4 · Create, change, send or run things.

  • focus_window
  • post_note
  • report_action_outcome
  • report_task_outcome

Delete 6 · Delete, drop, revoke or wipe things.

  • ui_act
  • ui_drag
  • ui_invoke
  • ui_select_option
  • ui_send_keys
  • ui_set_value

Not yet classified 3 · We could not tell from the name and description.

  • aipm_act
  • aipm_observe
  • wait_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 action

    Perform exactly one click, fill, or select against a fresh opaque target_ref. Reconcile unknown outcomes before retrying.

  • aipm_explainExplain an AIPM capability

    Explain 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-only

    ASK 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 state

    Observe one scoped process, window, or UI page. UI controls may include fresh target_ref values. Follow has_more with offset.

  • aipm_waitReconcile an AIPM operation

    Read 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 folder

    File 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 running

    Check 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 foreground

    Bring a window to the foreground. REQUIRES action tier + app allowlist.

  • get_app_knowledgeGet learned recipes for an app

    Query 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 log

    Recent 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 statistics

    Local 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 events

    Last 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 apps

    Human view of the taskbar: pinned apps and running apps grouped with window titles.

  • get_ui_treeGet a window's UI element tree

    The 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 status

    Ping 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 processes

    List 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 windows

    CATALOGUE 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 noticeboard

    Leave 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 noticeboard

    THE 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 window

    Read 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 data

    ACT 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 data

    Drag 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-only

    List 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-only

    Find 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 data

    Semantically 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 data

    Pick 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 data

    LAST 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 data

    PREFERRED 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 met

    Long-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
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)