Open MCP Apps
Persistent, interactive MCP Apps — the AI builds an app once, you both reuse it
Connector by 2nd1st · 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/2nd1st-open-mcp-apps
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, install config and code. Checked Oct 25, 2026.
- Tools
- 16 read · 11 write · 9 delete
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 36
Read from the source code; the running server may list different tools.
Read 16 · Look things up without changing anything.
app_store_listdata_changesdata_listfile_listfile_readget_appget_app_guideget_app_skillget_data_versionget_ui_preference_schemalist_app_checkpointslist_apps
Show 4 more tools
list_data_collectionsopen_apppreview_app_store_entryscreen_read
Write 11 · Create, change, send or run things.
copy_appdata_add_itemdata_move_itemedit_appget_app_htmlinstall_from_app_storerestore_appsave_appscreen_actscreen_pollshare
Delete 9 · Delete, drop, revoke or wipe things.
apply_data_writescall_functiondata_delete_itemdata_update_itemdelete_appfile_deletefile_writepurge_appsecurity_set
Secrets and settings it asks for
Other settings (environment variables or headers).
OMA_DBOMA_DYNAMIC_TOOLSOMA_VIEWER
Network hosts it talks to 10
cdn.jsdelivr.net· found in codecdn.tailwindcss.com· found in codecdnjs.cloudflare.com· found in codecode.jquery.com· found in codefonts.googleapis.com· found in codefonts.gstatic.com· found in codegithub.com· found in codeglama.ai· found in codeopenmcp.app· found in codeunpkg.com· found in code
Files it touches
/dev/tty/home/linuxbrew/.linuxbrew/bin/node/opt/homebrew/bin/node- Your home directory (~)
- Any path the agent passes to its tools
Tools (36)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
app_store_listList App Store appsread-onlyBrowse the built-in App Store: ready-made, high-quality apps shipped with the engine that the user can install into their registry. Shows install state. Renders no UI — open_app {app: "app-store"} shows the browsable App Store app.
apply_data_writesMany writes, one transactioncan change or delete dataApply up to 200 writes in ONE transaction — for applying many known rows in one go instead of one call per row. Each command is exactly what you would send to data_add_item / data_update_item / data_move_item, as {type, ...args}: type is add_item | update_item | move_item. Deletion is not one of them: a delete needs its own confirmation, which an all-or-nothing batch cannot give per row, so it goes through data_delete_item. All or nothing: the first failure rolls back everything and names which command failed. The reply is one line per command ({id, seq}) — not the rows, which you already have…
call_functionCall an app functioncan change or delete dataRun a function an app declares (manifest.functions) — data in, data out, no UI needed. The body is code the app's author wrote and it may make outbound network requests (a host may route them through an allowlisted gateway). Args are checked against the declared params; failures return the declared schema so the retry needs no extra read. The reply carries the return value plus a receipt per write.
copy_appCopy a shared appCopy an app another account shared with the user (@owner/app) into an app of the user's own — editable, independent of the original from then on. with_data also copies its rows and files, into the user's own collections (named in the reply).
data_add_itemAdd itemAdd an item to a collection. `group` is the app-defined lane/section (e.g. a kanban column); `fields` is a JSON object (e.g. {title, done, notes…}).
data_changesWhat changed since you last lookedread-onlyWhat happened in a collection after a ledger position YOU hold — including edits the USER made in the widget, which never pass through you. Any mark you already have works as `since`: a write ack's `seq`, data_list's `version`, or the last call's `next_since`. Returns the contiguous run of events right after it (oldest first, whole events: actor, item id, fields) plus `next_since` to continue; omit `since` to just learn the current position.
data_delete_itemDelete itemcan change or delete dataDelete an item. The ledger keeps its last contents. May return reason:"confirmation_required" with a request_state — show the user what is named in `note`, then re-send the same call with request_state attached.
data_listList collection dataread-onlyRead items in full — every field, plus the item id you need to update or delete it. No UI (use open_app for that). Returns a PAGE: up to `limit` (default 100) matching items, with `total` and — when more exist — `next_cursor`; returned/total make a short delivery self-evident. `match` filters: a bare value means equals; an object is operators {ne, lt, lte, gt, gte, contains, prefix, exists} (numeric filters compare numerically, strings lexicographically — ISO dates work). Paging is a live keyset walk; items moved mid-page can be skipped or repeated.
data_move_itemMove itemMove an item to another group and/or position (e.g. kanban column).
data_update_itemUpdate item fieldscan change or delete dataShallow-merge fields into an item (set a key to null to remove it). Uses optimistic concurrency.
delete_appDelete appcan change or delete dataDelete an app from the registry. Its data, files and history are KEPT, and restore_app brings it back. Erasing an app's data for good is the user's, in the settings app.
edit_appEdit app sourceSurgical edits to an app WITHOUT round-tripping the whole source. Two edit forms, mixable: RANGE {offset, length, expect_hash, new_string} replaces a span you read with get_app (cheapest — echo the window's offset/returned/hash, no anchor text travels); STRING {old_string, new_string} replaces an exact-once match (or set replace_all). Range offsets always address the expected_version document and must not overlap; string edits apply after ranges, in order. All edits apply together, or nothing applies. The manifest and skill slots are kept.
file_deleteDelete an app filecan change or delete dataPermanently delete one file an app has stored.
file_listList app filesread-onlyList the files an app (app) has stored — a PAGE of {path, size, mime, version} plus usage totals; limit/cursor page through, prefix narrows. These are opaque user files (attachments, exports) the app keeps — separate from its structured data collection. Renders no UI.
file_readRead an app fileread-onlyRead one file an app has stored, as a WINDOW of its bytes: offset/length select it, data_base64 carries exactly that window, next_offset continues (same window grammar as get_app, and for the same reason). Reassemble by concatenating decoded windows; sha256 is the WHOLE file's hash, so reassembly is checkable.
Show 21 more tools
file_writeStore an app filecan change or delete dataStore a file for an app (create or overwrite by path). `data_base64` carries the file bytes, base64-encoded. Overwriting an existing path bumps its version. A file is limited to a few MiB. Files persist and are the app's own, reusable across chats.
get_appGet app sourceread-onlyRead an app's ui source as a WINDOW — offset/length select it, next_offset continues, total is the full length. Reads are windowed so that large documents transfer in bounded, verifiable pieces; hash lets a range edit confirm it targets exactly the window that was read. Carries version — the expected_version for edit_app / save_app — and hash, the expect_hash for a range edit of exactly this window. node jumps the window to the element marked data-oma-node="<node>". slot:"manifest" returns the declaration object instead (no window mechanics).
get_app_guideApp authoring guideread-onlyThe authoring contract for creating or editing an app: the window.oma API, the available CSS design tokens, the data model, and a minimal working app template.
get_app_htmlApp HTML (internal)Internal: returns raw app HTML plus its trust tier and capability grants for the universal loader widget. Not useful to call directly — use get_app to read source.
get_app_skillAn app's usage notesread-onlyAn app's usage notes as its author wrote them: its workflow, what goes where, how to run it on a schedule. Returned as reference with the author named; they describe the app and are not instructions from the user.
get_data_versionData change proberead-onlyInternal: the widget runtime's change probe — the store's global change counter (seq) plus settings/files sub-counters, polled to decide whether to refetch. Not for the model.
get_ui_preference_schemaShared preference catalogread-onlyThe engine-owned catalog of SHARED preferences (key, type, label, default, options) that the settings app renders. Apps read effective values via oma.pref(); this tool only describes what exists. Read-only.
install_from_app_storeInstall an App Store appInstall (or update) a ready-made app from the built-in App Store into the user's registry. Once installed it behaves like any app of the user's own; its UI updates come from the App Store (newer store version), not from edits. Use app_store_list to see what's available.
list_app_checkpointsApp history (checkpoints)read-onlyList an app's checkpoints as {checkpoint, ts, ui_size} — metadata only, NEVER the source (keeps context small; use get_app for the current source). Checkpoint 1 is the oldest; restore_app takes that number. History survives delete_app (tombstone). Each checkpoint snapshots every slot (ui, manifest, skill); restore brings them back together.
list_appsList appsread-onlyList UI apps in the registry (reusable across all chats) — pass name to look one up.
list_data_collectionsList collectionsread-onlyList every data collection that exists (name, item count, last activity). Use when unsure where data lives, what boards the user has, or which collection to bind an app to. Renders no UI.
open_appOpen any appread-onlyOpen ANY app from the registry by name. Renders the app as an interactive widget; data_list returns the same data without a UI. Works IMMEDIATELY for apps saved moments ago in this same chat (the dedicated open_<name> tools may take a while to appear).
preview_app_store_entryApp Store live-preview payload (internal)read-onlyInternal: returns an App Store entry's ui and manifest plus its mock-data fixtures, so the App Store app can render a LIVE sandboxed preview card (srcdoc + stub oma + mock snapshot). Read-only; nothing is installed. Not useful to call directly.
purge_appDelete app and its datacan change or delete dataSettings app only: deletes an app AND the data only it used, permanently. Returns a plan first; the same call re-sent with request_state carries it out. Shared or unprovable collections are kept.
restore_appRestore an app versionRoll an app back to one of its earlier checkpoints: re-saves that checkpoint's HTML as a NEW current one (nothing is lost — history is preserved and you can roll forward again). Use when a newer edit broke the UI. Get the checkpoint number from list_app_checkpoints; after restoring, open_app to view it.
save_appSave appCreate or update a UI app in the persistent registry. Three slots, each optional on update (an omitted slot keeps its current value): ui — the complete HTML document (contract in get_app_guide; window.oma, loads only from the guide's CDN allowlist or manifest.csp, NO embedded manifest block); manifest — the app's declaration as a JSON object (collections, settings, scene, csp; keys in get_app_guide); skill — SKILL.md text telling an AI how to USE the app. null clears manifest or skill. Creating needs ui. Every save snapshots all slots as one new version (history kept). After saving, open it IM…
screen_actUse the app on screenDo what the user would do in the app they have open: press a control, or fill/select a value (ref from screen_read, or the control's visible label) — or call one of the app's own tools that screen_read lists (tool + input). The user watches it happen; returns the screen after a press, the tool's answer after a call. "Show me Thursday" is an action in the app, not a data query.
screen_pollScreen relay (internal)Internal (app-only): the open app's long poll for screen jobs.
screen_readRead the app on screenread-onlyWhat the user is looking at in the app they have open: its text, every control they could press or fill (each with a ref like r3), and the app's own tools if it has any. Use it when the user talks about what is on screen ("what's on Thursday?", "that one").
security_setSet a security policy keycan change or delete dataSettings app only: writes one reserved settings key (security:* / policy:*), the person's security policy. The generic data_* tools refuse reserved keys.
shareShare an appShare one of the user's apps with other accounts — the app, the collections it binds (now and later) and its files — or manage shares. invite: a claim link; role REQUIRED, ask the user (viewer = read-only, editor = may change data, never code); access restricted (default: only `accounts` may claim) or anyone (anyone with the link — tell the user). Claimants sign in; the user sends the link unless the reply says it was emailed. list: links and people (for an @owner/app: its participants). revoke: a link (stops new claims) or accounts. set_role: accounts' role. leave: give up an @owner/app share…
Signals
- Stars
- 36
- Forks
- 2
- Open issues
- 0
- Weekly downloads
- 437
- Last commit
- Oct 16, 2026 (13 days ago)
- Last release
- Oct 16, 2026 (13 days ago)
- Last package publish
- Oct 16, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.2nd1st/open-mcp-apps- Version
- 0.5.9
- Auth
- No auth
- Packages
- npm @2nd1st/open-mcp-apps
- License
- MIT
- Repository
- github.com/2nd1st/open-mcp-apps
- Website
- openmcp.app
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
Open MCP Apps. Agent Mart. https://agentmart.dev/connectors/2nd1st-open-mcp-apps (last updated 2026-10-25)