Grammar
wab://<host>/<action>[?param=value¶m=value...]
| Part | Meaning |
|---|---|
host | Domain that publishes /.well-known/wab.json |
action | An id from the manifest's actions[] array |
params | URL-encoded key/value pairs matching the action's parameter schema |
Examples
wab://example-shop.com/checkout?sku=ABC&qty=1wab://restaurant.com/book?date=2026-06-01&guests=2wab://news.example/subscribe?plan=monthly
Resolver
Until OS handlers ship, this site hosts a universal resolver:
https://webagentbridge.com/resolve?u=<url-encoded wab:// URI>
The resolver fetches the target's manifest, validates the action exists, and either:
- Renders a confirmation page showing exactly what will happen, or
- Redirects the user agent to the action's
endpointwith the parameters attached (when the action is markedsafe:truein the manifest).
Manifest declaration
{
"version": "1",
"host": "example-shop.com",
"actions": [
{
"id": "checkout",
"endpoint": "https://example-shop.com/api/checkout",
"method": "POST",
"params": {
"sku": { "type": "string", "required": true },
"qty": { "type": "integer", "minimum": 1 }
},
"safe": false,
"uri_handler": "wab://example-shop.com/checkout"
}
]
}
Native handler registration
Browsers can register a site as the handler for the wab scheme via navigator.registerProtocolHandler:
navigator.registerProtocolHandler('web+wab',
'https://your-agent.example/handle?u=%s',
'My WAB-aware agent');
Note: browsers require the web+ prefix for unregistered schemes — the canonical wire form remains wab:// for portability.