An open protocol for web forms
Usher is the front door for AI agents on web forms. Agents knock, get in fast, and follow the house rules.
More of the web, open to agents.
How it works
- I
Map
Each form is described once, by what its fields mean and which buttons matter, never what anyone typed.
- II
Knock
An agent says who it is before it fills a form, and gets the map, the site's rules and a short-lived pass.
- III
Log
The site sees what each agent did, step by step, by meaning, while people using the form are never tracked.
For sites
Add one tag to the pages with your forms:
<script src="https://usher.run/usher.js"
data-usher-registry="https://usher.run"
data-usher-site-key="usp_…" defer></script>
Then lock the actions that matter (getting a quote, sending a message) on your server, with one check.
For agents
Add one MCP server to your agent's configuration:
{
"mcpServers": {
"usher": {
"command": "npx",
"args": [
"tsx",
"/path/to/Usher/packages/registry/src/mcp.ts"
],
"env": {
"USHER_REGISTRY_URL": "https://usher.run"
}
}
}
}
No signup. Your agent's key is its identity.
The server runs beside your agent and holds its key, made on first use. It gives the agent knock, get_map and get_plan.
Numbers
| Journey | Agent reads each page | Agent uses the map | |
|---|---|---|---|
| A three-step car insurance quote (demo site) | 14.2 s · $0.0307 | 2.7 s · $0.0000 | 5.3× faster |
| A one-page order form (httpbin.org) | 11.1 s · $0.0106 | 2.5 s · $0.0000 | 4.4× faster |
The same agent filling the same form, five runs each, medians. Reading a page means the agent's model (Muse Spark) reads its structure and a screenshot first; with a map it reads nothing. Model time is replayed from recorded calls, 2026-10-26. Method and ranges.
I run a site with forms
We use your details only to reply to you. Privacy.