KorroAi/unwalled

Let AI agents use the software that has no API: back offices, intranets, dashboards, plus API files, spreadsheets and databases, as MCP tools.

JavaScript

1

50 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a universal MCP server: one server that connects your AI agent to any website, app, file or database (r/mcp)

https://reddit.com/link/1x48s16/video/ycnv4c27r2vh1/player AI agents can only use things that have an API or their own MCP server. Most things don't: the sites you log in to, your own apps, your spreadsheets, your databases. So instead of waiting for one MCP server per thing, I built…

1

Oct 12, 2026

README

unwalled

Let your AI agent use the software that has no API: your back office, intranet, dashboards and portals, plus your API files, spreadsheets and databases.

https://github.com/user-attachments/assets/14cbfae4-4984-4ca3-a0b6-37a1b19ff0d4

You show unwalled an app once. It records what the app does behind the screen and turns it into tools your agent (Claude, Cursor, Copilot, any MCP client) calls directly: no clicking through pages, no integration code, nothing to change in the app. Everything runs on your computer.

How it works

  1. Show it a source: open the app once (signing in if needed), or give it a file, an API description or a database address.
  2. unwalled writes the tools: one typed tool per thing the app can do (list orders, read a customer, search...), saved as a recipe.
  3. Your agent uses them: it asks "order 1042?" and gets the answer in one call, already signed in.

The tools keep working: unwalled stays signed in, renews sessions and retries; when the app changes, it detects the broken tools and can repair the recipe.

An agent signs in to an internal back office once, then answers questions through generated tools

Real calls against the example back office, recorded with docs/demo/make-gif.js.

Get started

You need Node.js 22 or newer. In a terminal:

npx -y unwalled

A guided setup then:

  1. checks your computer (Node.js, browser, encryption of your secrets);
  2. adds unwalled to the AI apps it finds, asking for each one: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Gemini CLI, Codex;
  3. connects your first source, or a demo.

Any other MCP client (Zed, Cline, Continue, OpenCode, your own agent...) starts it the standard way:

{ "mcpServers": { "unwalled": { "command": "npx", "args": ["-y", "unwalled"] } } }

On Windows, some clients need "command": "cmd" with "args": ["/c", "npx", "-y", "unwalled"]. unwalled is a plain stdio MCP server: it works with any model your client uses (Claude, GPT, Gemini, local models), and its tool schemas avoid the JSON Schema features some providers reject. More clients: installation.

Try it in one minute: choose the demo, or run unwalled demo. It starts a sample back office on your computer (orders and customers behind a sign-in) and connects it. Then ask your agent:

Using acme, what is the status and total of order 1042? And which customers are in Lyon?

Connect your own sources

One command per source; unwalled recognises what it is.

What you haveCommand
An internal app, or any site you sign in tounwalled add https://erp.example.com --browse
A window opens: sign in, open the pages your agent will need, close it.
A public websiteunwalled add https://crates.io --explore 10
An API addressunwalled add "https://api.open-meteo.com/v1/forecast?latitude=45.76&longitude=4.84&current=temperature_2m"
An API description or collectionunwalled add ./openapi.yaml (also Postman, Insomnia, Bruno, .http, HAR, a list of cURL commands)
A spreadsheet or data fileunwalled add ./sales-2026.xlsx (also CSV, JSON, SQLite, calendars, RSS, or a whole folder)
A databaseunwalled add postgres://reader:secret@db.example.com/shop (or mysql://), always read-only
A ready-made serviceunwalled add preset:github, then unwalled key github to store its token

You can also just ask your agent: "Discover https://grafana.example.com and tell me which dashboards mention revenue", or "Import this CSV and summarise it". It does the same thing through unwalled's tools.

Other commands: unwalled list (your recipes), unwalled doctor (check everything), unwalled setup --remove (uninstall from your AI apps), unwalled --help (all commands). Without the setup's installation, write npx -y unwalled instead of unwalled.

What it connects

SourceHow
Web apps, also behind a sign-inThe calls the app makes to its own server (REST, GraphQL) become tools
Server-rendered tools (Django or Rails admin, PHP, wikis)Pages become tools returning their tables and fields as JSON; their forms become tools too
Mobile and desktop appsThrough a HAR capture of their traffic (mitmproxy, Charles, Proxyman, browser devtools)
Documented APIsOpenAPI / Swagger (found automatically), Postman, Insomnia, Bruno, .http, cURL, Google APIs, OData, SOAP, JSON-RPC, AsyncAPI
Ready-made servicesGitHub, Stripe, Vercel, ElevenLabs, Discord, Binance, CoinGecko, Open-Meteo, every Google API
DataCSV, Excel, JSON, SQLite, iCalendar, RSS / Atom, PostgreSQL, MySQL / MariaDB, queried with read-only SQL
Live dataWebSocket, Server-Sent Events, MQTT

How each one was tested, and its limits: compatibility table.

Is it worth it?

Measured with a real agent (Claude Code, Sonnet), the same questions asked with unwalled and with a browser agent (Playwright MCP), every answer checked: 15 runs, 15 right answers (method and raw data).

Per question, on apps behind a sign-inModel turnsCost
unwalled (app already connected)3 to 4$0.022 to $0.030
Browser agent8 to 9$0.055 to $0.059
  • Where it pays: apps you sign in to and use again and again: 1.8 to 2.7 times cheaper per question.
  • Where it does not: a public page a browser can simply open. There, a browser agent does as well.
  • On 20 real public websites, one automatic discovery answered a new question on 13 of them; 6 blocked automated browsers (unwalled reports it and does not bypass them).

Safe by default

  • Your credentials stay yours: passwords, keys and cookies are kept out of recipes, encrypted on your computer, and only ever sent to the site they belong to.
  • Nothing destructive without you: deletions and risky clicks wait for your confirmation; any call can be previewed first.
  • Databases are read-only, and you can make any recipe read-only or limit the sites it may reach.
  • Every request is logged (without bodies or secrets), and the agent is told never to obey instructions found in the data it reads.

More in SECURITY.md.

For teams

unwalled runs on your machines and needs no change to your tools. For IT, it adds an organization policy the agent cannot loosen (read-only, allowed sites, disabled tools, mandatory audit) and a shared catalogue: one person connects a tool, the whole team uses it, each with their own sign-in. See For teams.

Good to know

  • Prefer an official integration when there is one. If a service offers an API or an MCP server, use it (unwalled can import its description).
  • Not everything can be captured: requests signed by the page's own code, and desktop windows. Bot protections and CAPTCHAs are reported, never bypassed.
  • Use it where you are allowed to. A service's internal API may be covered by its terms of use, even with your own account.

Documentation

License

Apache License 2.0 © 2026 Korrocorp (see NOTICE)

ai-agents
api-discovery
browser-automation
claude
har
internal-tools
mcp
model-context-protocol
openapi
playwright

KorroAi/unwalled

Let AI agents use the software that has no API: back offices, intranets, dashboards, plus API files, spreadsheets and databases, as MCP tools.

JavaScript

1

50 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a universal MCP server: one server that connects your AI agent to any website, app, file or database (r/mcp)

https://reddit.com/link/1x48s16/video/ycnv4c27r2vh1/player AI agents can only use things that have an API or their own MCP server. Most things don't: the sites you log in to, your own apps, your spreadsheets, your databases. So instead of waiting for one MCP server per thing, I built…

1

Oct 12, 2026

README

unwalled

Let your AI agent use the software that has no API: your back office, intranet, dashboards and portals, plus your API files, spreadsheets and databases.

https://github.com/user-attachments/assets/14cbfae4-4984-4ca3-a0b6-37a1b19ff0d4

You show unwalled an app once. It records what the app does behind the screen and turns it into tools your agent (Claude, Cursor, Copilot, any MCP client) calls directly: no clicking through pages, no integration code, nothing to change in the app. Everything runs on your computer.

How it works

  1. Show it a source: open the app once (signing in if needed), or give it a file, an API description or a database address.
  2. unwalled writes the tools: one typed tool per thing the app can do (list orders, read a customer, search...), saved as a recipe.
  3. Your agent uses them: it asks "order 1042?" and gets the answer in one call, already signed in.

The tools keep working: unwalled stays signed in, renews sessions and retries; when the app changes, it detects the broken tools and can repair the recipe.

An agent signs in to an internal back office once, then answers questions through generated tools

Real calls against the example back office, recorded with docs/demo/make-gif.js.

Get started

You need Node.js 22 or newer. In a terminal:

npx -y unwalled

A guided setup then:

  1. checks your computer (Node.js, browser, encryption of your secrets);
  2. adds unwalled to the AI apps it finds, asking for each one: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Gemini CLI, Codex;
  3. connects your first source, or a demo.

Any other MCP client (Zed, Cline, Continue, OpenCode, your own agent...) starts it the standard way:

{ "mcpServers": { "unwalled": { "command": "npx", "args": ["-y", "unwalled"] } } }

On Windows, some clients need "command": "cmd" with "args": ["/c", "npx", "-y", "unwalled"]. unwalled is a plain stdio MCP server: it works with any model your client uses (Claude, GPT, Gemini, local models), and its tool schemas avoid the JSON Schema features some providers reject. More clients: installation.

Try it in one minute: choose the demo, or run unwalled demo. It starts a sample back office on your computer (orders and customers behind a sign-in) and connects it. Then ask your agent:

Using acme, what is the status and total of order 1042? And which customers are in Lyon?

Connect your own sources

One command per source; unwalled recognises what it is.

What you haveCommand
An internal app, or any site you sign in tounwalled add https://erp.example.com --browse
A window opens: sign in, open the pages your agent will need, close it.
A public websiteunwalled add https://crates.io --explore 10
An API addressunwalled add "https://api.open-meteo.com/v1/forecast?latitude=45.76&longitude=4.84&current=temperature_2m"
An API description or collectionunwalled add ./openapi.yaml (also Postman, Insomnia, Bruno, .http, HAR, a list of cURL commands)
A spreadsheet or data fileunwalled add ./sales-2026.xlsx (also CSV, JSON, SQLite, calendars, RSS, or a whole folder)
A databaseunwalled add postgres://reader:secret@db.example.com/shop (or mysql://), always read-only
A ready-made serviceunwalled add preset:github, then unwalled key github to store its token

You can also just ask your agent: "Discover https://grafana.example.com and tell me which dashboards mention revenue", or "Import this CSV and summarise it". It does the same thing through unwalled's tools.

Other commands: unwalled list (your recipes), unwalled doctor (check everything), unwalled setup --remove (uninstall from your AI apps), unwalled --help (all commands). Without the setup's installation, write npx -y unwalled instead of unwalled.

What it connects

SourceHow
Web apps, also behind a sign-inThe calls the app makes to its own server (REST, GraphQL) become tools
Server-rendered tools (Django or Rails admin, PHP, wikis)Pages become tools returning their tables and fields as JSON; their forms become tools too
Mobile and desktop appsThrough a HAR capture of their traffic (mitmproxy, Charles, Proxyman, browser devtools)
Documented APIsOpenAPI / Swagger (found automatically), Postman, Insomnia, Bruno, .http, cURL, Google APIs, OData, SOAP, JSON-RPC, AsyncAPI
Ready-made servicesGitHub, Stripe, Vercel, ElevenLabs, Discord, Binance, CoinGecko, Open-Meteo, every Google API
DataCSV, Excel, JSON, SQLite, iCalendar, RSS / Atom, PostgreSQL, MySQL / MariaDB, queried with read-only SQL
Live dataWebSocket, Server-Sent Events, MQTT

How each one was tested, and its limits: compatibility table.

Is it worth it?

Measured with a real agent (Claude Code, Sonnet), the same questions asked with unwalled and with a browser agent (Playwright MCP), every answer checked: 15 runs, 15 right answers (method and raw data).

Per question, on apps behind a sign-inModel turnsCost
unwalled (app already connected)3 to 4$0.022 to $0.030
Browser agent8 to 9$0.055 to $0.059
  • Where it pays: apps you sign in to and use again and again: 1.8 to 2.7 times cheaper per question.
  • Where it does not: a public page a browser can simply open. There, a browser agent does as well.
  • On 20 real public websites, one automatic discovery answered a new question on 13 of them; 6 blocked automated browsers (unwalled reports it and does not bypass them).

Safe by default

  • Your credentials stay yours: passwords, keys and cookies are kept out of recipes, encrypted on your computer, and only ever sent to the site they belong to.
  • Nothing destructive without you: deletions and risky clicks wait for your confirmation; any call can be previewed first.
  • Databases are read-only, and you can make any recipe read-only or limit the sites it may reach.
  • Every request is logged (without bodies or secrets), and the agent is told never to obey instructions found in the data it reads.

More in SECURITY.md.

For teams

unwalled runs on your machines and needs no change to your tools. For IT, it adds an organization policy the agent cannot loosen (read-only, allowed sites, disabled tools, mandatory audit) and a shared catalogue: one person connects a tool, the whole team uses it, each with their own sign-in. See For teams.

Good to know

  • Prefer an official integration when there is one. If a service offers an API or an MCP server, use it (unwalled can import its description).
  • Not everything can be captured: requests signed by the page's own code, and desktop windows. Bot protections and CAPTCHAs are reported, never bypassed.
  • Use it where you are allowed to. A service's internal API may be covered by its terms of use, even with your own account.

Documentation

License

Apache License 2.0 © 2026 Korrocorp (see NOTICE)

ai-agents
api-discovery
browser-automation
claude
har
internal-tools
mcp
model-context-protocol
openapi
playwright

Project health

Latest release

0.5.1 · Oct 11, 2026

Releases this year

1