{"name":"io.github.Royalti-io/ikenga-pkg-mcp-iyke","slug":"royalti-io-ikenga-pkg-mcp-iyke","title":"Ikenga iyke (control bridge)","description":"Drive a running Ikenga desktop app from MCP clients — DOM, click, type, navigate, screenshot.","url":"https://mcp.market/server/royalti-io-ikenga-pkg-mcp-iyke","rating":null,"grade":"B","score":71,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":25,"stars":0,"forks":0,"downloads_week":234,"last_push_at":"2026-08-11T16:20:38.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Royalti-io/ikenga-pkg-mcp-iyke","website":"https://github.com/Royalti-io/ikenga-pkg-mcp-iyke#readme","version":"0.1.2","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@ikenga/mcp-iyke","version":"0.1.2","runtimeHint":"npx","transport":{"type":"stdio"}}],"tools":[{"name":"iyke_click","description":"Click an element. Specify exactly one of `ref` (from iyke_dom), `selector` (CSS), or `text` (innerText match). Refs are most reliable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_close","description":"Close a pane (or the focused pane if pane_id omitted). Closes the entire pane and all its tabs — to close a single tab from the in-app keyboard, use ⌘⇧W (⌘W closes the whole pane). Refuses to close the last remaining pane.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_devtools","description":"Open Chrome DevTools for the main webview (debug builds only). Returns 503 in production builds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_dom","description":"Take an accessibility-tree snapshot of the focused pane. Returns Playwright-style text plus structured JSON. Each interactive element gets a stable ref like e1, e2; pass that ref to iyke_click / iyke_type / iyke_key. Refs invalidate on the next snapshot or page navigation. Use `query` for substring filter, `all=true` to include hidden elements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_focus","description":"Focus a specific pane. Provide either pane_id (leaf id from iyke_state response — shell.panes.leaves[].id) or index (1-based DFS leaf index, matching the in-app ⌃1..⌃6 keyboard shortcuts).","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_go","description":"Navigate the focused pane to a route path inside the Ikenga desktop app (e.g. \"/notes/today\"). Path must start with \"/\". This replaces the focused pane's active tab content; use iyke_open with kind=route to add a new tab instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_iframe_send","description":"Send a fire-and-forget postMessage to an iframe pane. The iframe bridge listens for known kinds (e.g. \"story-select\") and acts on the payload. Use to drive mini-app actions from outside the running app.","write_action":true,"price_micros":0,"input_schema":null},{"name":"iyke_iframe_state","description":"Read the latest published state object for an iframe pane (storyboard cursor, comp current frame, etc.). Iframes call publishState(key, value) from their iyke-bridge to expose runtime state for inspection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_key","description":"Dispatch a keyboard combo. Use names like \"Enter\", \"Escape\", \"Tab\", \"ArrowDown\", and modifiers Ctrl/Alt/Shift/Meta separated by + or , (e.g. \"Ctrl+S\", \"Meta+K\"). Optional `ref`/`selector` targets a specific element; otherwise the active element receives.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_logs","description":"Read recent console + error logs (last 500) from the running webview. Includes window error and unhandledrejection captures.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_mode","description":"Switch the activity-bar sidebar mode. Valid modes: app, files, agents, sessions, settings, storyboard, video-engine, canvas-design, image-generator. The first five are core; the rest are mini-apps.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_network","description":"Read recent fetch + XHR network activity (last 100). Each entry has method, url, status, duration_ms, and error if it failed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_open","description":"Open a new tab in the focused pane. `kind` selects the view type. For \"route\" pass `path`; \"terminal\" optionally `cmd` (a shell command string); \"chat\" requires `session_id`; \"artifact\" requires `path`; \"mini-app\" requires `name`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_query_cache","description":"Dump the TanStack Query cache: queryKey, status, fetchStatus, isStale, dataUpdatedAt, errorUpdatedAt, error, and a 200-char data preview for each entry. Useful for diagnosing stale data or failed fetches.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_screenshot","description":"Capture a PNG screenshot of either the full window or a specific pane. Returns the saved path, dimensions, and byte count. Default writes to ~/.local/share/ikenga/screenshots/.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_split","description":"Split the focused pane (or a specific pane via pane_id) into two. \"horizontal\" splits side-by-side; \"vertical\" splits top-bottom. Subject to the in-app MAX_LEAVES cap (currently 6).","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_state","description":"Get the current state of the Ikenga desktop app — sidebar mode, focused pane route, and the full pane tree under shell.panes. shell.panes has shape { leaves: [{ id, focused, activeTabIdx, tabs: [{kind,title}] }], tree: <recursive PaneNode> }; use leaves[].id with iyke_focus or iyke_close (pane_id) to operate on a specific pane. Call this before iyke_go / iyke_mode / iyke_focus / iyke_close to chec","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_type","description":"Type text into an input/textarea/contenteditable element. Specify exactly one of `ref` or `selector`. By default appends; pass `replace=true` to overwrite the existing value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"iyke_wait","description":"Wait until a predicate is satisfied or timeout. Use this after iyke_click / iyke_go to wait for the new state to render, instead of fixed sleeps. Returns { satisfied, elapsed_ms, message? }.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":71,"grade":"B","scanned_at":"2026-09-27T21:31:05.459Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T21:31:05.456Z","components":{"code":{"score":25,"max":25,"notes":["11 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":0,"max":15,"notes":["repository archived"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"maint.archived","severity":"high","component":"maintenance","title":"Repository is archived"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@ikenga/mcp-iyke","version":"0.1.2","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-05-10T13:06:48.839Z","repositoryUrl":"git+https://github.com/Royalti-io/ikenga-pkg-mcp-iyke.git","weeklyDownloads":234}],"repo":{"found":true,"owner":"Royalti-io","repo":"ikenga-pkg-mcp-iyke","archived":true,"pushedAt":"2026-08-11T16:20:38Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/87831744?v=4","ownerCreatedAt":"2021-07-22T20:00:08Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/87831744?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":234,"license":"Apache-2.0","lastPushAt":"2026-08-11T16:20:38.000Z","score":25}}}},"grade_history":[],"reviews":[]}