Concepts
How it works
The agent, wield-mcp, the bridge, the extension and the recipe registry, and what happens on one run.
text
AI app ──MCP (stdio)──▶ wield-mcp ──local socket──▶ bridge ──native messaging──▶ Wield extension ──▶ tab of the site ──▶ the site
│
└── recipes from wield.run (signed, cached)| Piece | Where it runs | What it does |
|---|---|---|
| wield-mcp | Your computer, started by your AI app | The MCP server. It finds recipes, checks params, and asks the extension to run them. It fetches recipes from wield.run and caches them |
| bridge | Your computer, started by your browser | Connects wield-mcp to the extension. Local only: a socket in ~/.wield (macOS, Linux) or a per-user named pipe (Windows) |
| Wield extension | Your browser | Runs each recipe in a tab of the site, as the site's own page would. Shows the Allow window for writes |
| Registry | wield.run | Serves the public recipes, signed. It never receives your requests, sessions or results |
Recipes
A recipe is a JSON file that describes one task on one site, such as "search train connections on bahn.de":
- the params the task takes (from, to, date) as a JSON schema;
- the requests the site's own pages make, step by step, with templates for the params;
- which parts of each response to keep;
- the shape of the result.
Recipes contain no code. Wield's interpreter runs them, and it enforces the same limits on every recipe (format).
The public recipes are written against the sites' real traffic, reviewed, tested live and signed. A recipe has versions. If a new version breaks because a site changed, Wield falls back to the last version that worked while it is repaired.
One run, step by step
- The agent picks a recipe.
find_recipe("train from Berlin to Munich tomorrow")ranks the cached recipe index locally (German and English, with synonyms) and returns the best matches with their params. This takes a few milliseconds. As a side effect, the extension opens or keeps a background tab of the top site, so the run doesn't wait for a page to load. - The agent calls
run. wield-mcp:- loads the recipe from its cache and checks its signature;
- checks the params against the recipe's schema;
- sends the recipe to the extension through the bridge.
- The extension runs it in a tab of the site.
- It reuses a tab you have open, or a background tab it opened earlier.
- It injects the interpreter and sends each request from that tab, so it goes out with your cookies, your IP and the site's own headers, exactly like the site's page would. Independent lookups run in parallel.
- It sends requests only to the hosts the recipe lists.
- Writes wait for you. Before a request that changes data, the browser shows the site, the task and each request with the values that will be sent. Nothing is sent until you click Allow. Deny, or two minutes without an answer, stops the run.
- The result comes back as structured data. The agent treats it as content from a website, never as instructions.
When a site pushes back
- Not logged in: the run fails with
login_requiredand a link. You log in yourself, in your browser; Wield never handles passwords. - Bot protection: some sites answer automated-looking traffic with a check. Wield runs from your real browser, so this is rare. When it happens: Otherwise the agent gets
site_challengewith what to tell you.- the extension retries once;
- then it brings the tab to the front and asks you to click or scroll once (it never fakes input);
- then it retries again.
- Pacing: the extension limits requests per site across all your agents. For example, sites with strict bot management get at most 30 requests an hour.
What's on your computer
| Path | What |
|---|---|
~/.wield/app/ | wield-mcp and the bridge |
~/.wield/extension/ | The unpacked extension (until it's in the Chrome Web Store) |
~/.wield/recipes/ | Cached recipe index and recipes, with their signatures |
~/.wield/logs/executor-YYYY-MM-DD.ndjson | Every request a recipe made: method, host, path, status, time. No bodies, no query values |
~/.wield/logs/mcp-YYYY-MM-DD.ndjson | Every request wield-mcp made to wield.run: method, host, path, status |
~/.wield/config.json | Settings (command line) |
The two logs are your proof of what left your computer. wield-mcp demo prints them after a run.